Skip to content

Latest commit

 

History

History
175 lines (128 loc) · 6.65 KB

README.md

File metadata and controls

175 lines (128 loc) · 6.65 KB

My Dynamic Window Manager

Supported themes (credits: Junnunkarim):

Supported programs:

  • dwm
  • dmenu
  • st
  • GTK
  • vim
  • neovim
  • zathura

Installation

1. Dependencies:

1.1 Add dotbot as a submodule.

git submodule add https://github.com/anishathalye/dotbot
git config -f .gitmodules submodule.dotbot.ignore dirty # ignore dirty commits in the submodule
cp dotbot/tools/git-submodule/install .

1.2 Add a terminal, e.g, myst.

git clone https://github.com/gsavarela/myst
cd myst && sudo make clean install

2. Compile Suckless Tools

cd dwm && sudo make clean install && cd .. \
cd dwmblocks && sudo make clean install && cd .. \

3. Bootstrap build

The install script should generate symlinks to ~/.config and ~/.local folder.

./install.sh

4. Xinitrc

You may wish to add the following command on your .xinirc or .config/X11/xinitrc files:

Dwm Flexipatch

List of enabled patches:

ALWAYSCENTER_PATCH 1
CENTEREDMASTER_LAYOUT 1
MOVESTACK_PATCH 1
BAR_DWMBLOCKS_PATCH 1
BAR_LTSYMBOL_PATCH 1
BAR_STATUS_PATCH 1
BAR_STATUSCMD_PATCH 1
BAR_STATUS2D_PATCH 1
BAR_STATUS2D_NO_ALPHA_PATCH 1
BAR_STATUS2D_XRDB_TERMCOLORS_PATCH 1
BAR_SYSTRAY_PATCH 1
BAR_TAGS_PATCH 1
BAR_WINTITLE_PATCH 1
CYCLELAYOUTS_PATCH 1 
FIBONACCI_SPIRAL_LAYOUT 1
GAPPLESSGRID_LAYOUT 1
PERTAG_PATCH 1
PERTAG_VANITYGAPS_PATCH 1
RESTARTSIG_PATCH 1
SETBORDERPX_PATCH 1
SELFRESTART_PATCH 1
UNFLOATVISIBLE_PATCH 1
VANITYGAPS_PATCH 1
VANITYGAPS_MONOCLE_PATCH 1
XRDB_PATCH 1

Dynamic Theming

  • RESTARTSIG_PATCH: Adds a keyboard shortcut to restart dwm or alternatively by using kill -HUP dwmpid. This allows Xinit to reload wallpapers.
  • SELFRESTART_PATCH: Allows restarting dwm without the dependency of an external script.
  • XRDB_PATCH: Allows dwm to read colors from xrdb (.Xresources) during runtime. Compatible with the float border color, awesomebar, urgentborder and titlecolor patches.

Status Bar

  • BAR_DWMBLOCKS_PATCH: This patch depends on statuscmd patch and adds integration with a (patched) dwmblocks instance to give a clickable status bar. One must not necessarily have to use dwmblocks for this feature, any status updater that has support for real-time signals (SIGRTMIN) can be used.
  • BAR_LTSYMBOL_PATCH: Show layout symbol in bar.
  • BAR_STATUS_PATCH: Show status in bar.
  • BAR_STATUSCMD_PATCH: This patch adds the ability to execute shell commands based on the mouse button and position when clicking the status bar. Refer to the website for usage.
  • BAR_STATUS2D_PATCH: Status2d allows colors and rectangle drawing in your dwm status bar.
  • BAR_STATUS2D_NO_ALPHA_PATCH: Prevent transparency to reach the status bar.
  • BAR_STATUS2D_XRDB_TERMCOLORS_PATCH: Addition to the status2d patch that allows the use of terminal colors (color0 through color15) from xrdb in the status, allowing programs like pywal to change statusbar colors.
  • BAR_SYSTRAY_PATCH: The systray patch adds systray for the status bar. E.g wifi.
  • BAR_TAGS_PATCH: Show tag symbols in the bar.
  • BAR_WINTITLE_PATCH: Show window title in bar.

Terminal

  • ALWAYSCENTER_PATCH: All floating windows are centered, like the center patch, but without a rule. Makes it so that floating windows always start centered instead of in the top-left corner, also changed it to take into account the height of the bar.
  • MOVESTACK_PATCH: This patch allows you to move clients around in the stack and swap them with the master. Makes it so that MOD+J & MOD+K moves windows up & down the stack (better than stacker)
  • UNFLOATVISIBLE_PATCH: This patch resets isfloating on any visible windows that have it set. Make floating window tiled again with MOD+Z
  • SETBORDERPX_PATCH: This patch allows border pixels to be changed during runtime. MOD+{ decreases boarder pixels and MOD+} increases boarder pixels.

Window Layouts

  • CENTEREDMASTER_LAYOUT: Centeredmaster centers the nmaster area on screen, using mfact * monitor width & height, with the stacked windows distributed to the left and right.
  • CYCLELAYOUTS_PATCH: The cyclelayouts patch lets you cycle through all your layouts. Use MOD + , to decrement layout count or MOD + . to increment layout count.
  • FIBONACCI_SPIRAL_LAYOUT: This patch adds a new layout (`spiral') that arranges all windows in Fibonacci tiles: The first window uses half the screen, the second the half of the remainder, etc.
  • GAPPLESSGRID_LAYOUT: Instead of using a regular grid, which might leave empty cells when there are not enough windows to fill the grid, it adjusts the number of windows in the first few columns to avoid empty cells.
  • PERTAG_PATCH: The pertag patch adds nmaster, mfacts and layouts per tag rather than per monitor (default).
  • PERTAG_VANITYGAPS_PATCH: Option to enable gaps on a per tag basis rather than globally.
  • VANITYGAPS_PATCH: This patch adds configurable gaps between windows differentiating between outer, inner, horizontal and vertical gaps.
  • VANITYGAPS_MONOCLE_PATCH: This patch adds outer gaps for the monocle layout. Most gaps patches tries to avoid gaps on the monocle layout, as it is often used as a fullscreen mode, hence this is enabled separately from the main vanitygaps patch.

Known dependencies:

Dwmblocks-async

A modular statusbar for dwm written in C. You may think of it as i3blocks, but for dwm. Credits to UtkarshVerma

Features

  • Modular
  • Lightweight
  • Suckless
  • Blocks are clickable
  • Blocks are loaded asynchronously
  • Each block can be externally triggered to update itself
  • Compatible with i3blocks scripts

TODO:

  • [x] Add myst as git sub module.
  • Add dotbot bootstrap script.
  • Add more fonts.
  • Add more themes.
  • [] Add another bar.