/dwm

🪟 My custom patches and configurations for dynamic window manager (dwm)

Primary LanguageCGNU General Public License v3.0GPL-3.0

Contributors Forks Stargazers

Neovim Logo

My custom patches and configurations for dynamic window manager (dwm)

Built With

Neovim Lua GitHub Actions

Preview

StartupTime

Getting Started

Prerequisites

Before attempting to build this project, make sure you have X Window System, packer.dwm, and a Nerd Font installed on your machine.

Installation

To get a local copy of the project up and running on your machine, follow these simple steps:

  1. Clone the project repository
    git clone https://github.com/Kaweees/dwm.git
    cd dwm
  2. Create a symlink from the cloned folder to where neovim expects its configuration to be located. Personally, I use ansible to create symlinks for all of my dotfiles. If you are not sure where it is, check $XDG_CONFIG_HOME/dwm or run one of these commands to find out:
    :echo stdpath('config') # Execute while in dwm
    :h rtp # Execute while in dwm
  3. Install the project dependencies
    dwm +PlugInstall # Execute from the command line
    :PackerSync # Execute while in dwm
  4. If you want to use the WakaTime plugin, configure your API key.
    :WakaTimeApiKey # Execute while in dwm
  5. If you want to use the GitHub Copilot plugin, authenticate your account by executing the following command while in dwm.
    :Copilot auth

Usage

Available Plugins

  • statusbutton : Adds a clickable button to the left hand side of the statusbar.
  • Xresources : Allows to handle settings from Xresources.

To see all of the available plugins, please refer to patches

Keyboard Shortcuts

To enter custom commands into dwm, you must first enter a specific keybind, which is called the MODKEY, followed by the command keybind. My MODKEY is Alt.

To complile and install dwm, enter the following command in the root of the project:

sudo make clean install
Command Keybind Command Description
leader + c create new window and switch to it
leader + # switch to window #
leader + n switch to next window
leader + p switch to previous window
leader + : swap window with next window
leader + ; swap window with previous window
leader + & kill window and all panes in it

Project Structure

. dwm/
├── after/plugins/                 - plugin-specific configurations
├── lua/config/
│   ├── packer.lua                 - packages installed by packer.dwm
│   ├── remap.lua                  - keybinds and leader configuration
│   └── set.lua                    - miscellaneous settings
├── init.lua                       - Entry point, loads all plugins and configurations
└── README.md                      - you are here

License

The source code for my website is distributed under the terms of the GNU General Public License v3.0, as I firmly believe that collaborating on free and open-source software fosters innovations that mutually and equitably beneficial to both collaborators and users alike. See LICENSE for details and more information.