All Projects → bakkeby → dwm-vanitygaps

bakkeby / dwm-vanitygaps

Licence: MIT license
My dwm vanitygaps build (incl. individual patches)

Programming Languages

c
50402 projects - #5 most used programming language
Roff
2310 projects
Makefile
30231 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to dwm-vanitygaps

patches
Collection of patches for dwm, st and dmenu
Stars: ✭ 202 (+676.92%)
Mutual labels:  dwm, patches, suckless
Goblocks
Status bar for dwm
Stars: ✭ 50 (+92.31%)
Mutual labels:  dwm, suckless
chadwm
Making dwm as beautiful as possible!
Stars: ✭ 619 (+2280.77%)
Mutual labels:  dwm, suckless
voidwm
voidwm • sanely patched dwm
Stars: ✭ 32 (+23.08%)
Mutual labels:  dwm, suckless
GolfIV
An anti-exploit attempt for Fabric
Stars: ✭ 41 (+57.69%)
Mutual labels:  patches
dwm-ipc
A DWM patch that allows IPC communication through a UNIX socket
Stars: ✭ 55 (+111.54%)
Mutual labels:  dwm
dwmbar
A Modular Status Bar for dwm.
Stars: ✭ 78 (+200%)
Mutual labels:  dwm
axyl-iso
Axyl is a Linux distro centered on tiling window managers. Choose from i3, bspwm, dwm and more.
Stars: ✭ 348 (+1238.46%)
Mutual labels:  dwm
magento-attribute-option-order-fix
A module to re-apply the relevance order for configurable attribute options in Magento CE 1.9.1 or EE 1.14.2
Stars: ✭ 27 (+3.85%)
Mutual labels:  patches
magento1-open-source-patches
Magento Open Source 1.x patches mirror repository.
Stars: ✭ 38 (+46.15%)
Mutual labels:  patches
WinCenterTitle
WinCenterTitle is a simple tool that allows you to center align the text in Windows 10 titlebars, the same way it was in Windows 8, 8.1, or even 3.1.
Stars: ✭ 63 (+142.31%)
Mutual labels:  dwm
polybar-dwm-module
A dwm module for polybar
Stars: ✭ 91 (+250%)
Mutual labels:  dwm
dotfiles
.foos for foos & more
Stars: ✭ 21 (-19.23%)
Mutual labels:  dwm
dextop
Dextop - Linux-based distribution workstation on Android
Stars: ✭ 24 (-7.69%)
Mutual labels:  dwm
osx-trix
Handy Patches, Fixes, Tips and Tricks for Apples OS X Platform
Stars: ✭ 29 (+11.54%)
Mutual labels:  patches
dotfiles
~/.*
Stars: ✭ 41 (+57.69%)
Mutual labels:  dwm
freeshooter
This is old-school tool for taking screenshots without bloatware features, simple as life, light as air.
Stars: ✭ 102 (+292.31%)
Mutual labels:  dwm
spark-bloom
Bloom effect in Spark AR
Stars: ✭ 16 (-38.46%)
Mutual labels:  patches
dotfiles
My dotfiles with dwm, qtile and awesome.
Stars: ✭ 178 (+584.62%)
Mutual labels:  dwm
dotfiles
Config files for wm and terminal apps
Stars: ✭ 15 (-42.31%)
Mutual labels:  dwm

This old obsolete dwm project is very much out of date and has been archived.

For dwm refer to dwm-flexipatch and for individual patches refer to this page instead.


My dwm 6.2 build with custom patches. Refer to https://dwm.suckless.org/ for details on the dwm window manager, how to install it and how it works.


How does this build / fork of dwm stand out compared to so many others? Due to the nature of dwm and arbitrary restrictions such as not exceeding a certain number of lines of code, individual patches can be applied in order to tailor it to your needs. The side effect of this is that most patches, and in turn most builds, are essentially hardcoded to offer specific features.

In this build the vast majority of patches that have been applied can be configured on or off. If you have ever been curious about trying out dwm, but have been discouraged by manual patching, then this may be a good starting point to see what a "fully fledged" dwm can look like. Want to try out the pertag patch? Just flip a config and recompile. Once you have found out what works for you and what don't then you should be in a better position to choose patches should you want to start patching from scratch.


Patches included:

  • alpha

  • attachx

    • by default any new (non-floating) window you open in dwm becomes the new master and there are several patches that alter this behaviour
    • this patch combines several of these attach modes into one having a configuration option to switch between them
    • this avoids having to hardcode one specific behaviour which means that someone else can take your build and just flip a config setting to change where new windows are placed in the stack
    • one could easily add an option to alter between these modes via keyboard shortcuts, but one generally stick to one mode so I have left this out
    • this patch includes the following attach modes:
      • 0 - master (default behaviour): new windows become the new master
      • 1 - attachabove: new window is placed above selected client
      • 2 - attachaside: new window is placed on top of the stack
      • 3 - attachbelow: new window is placed below selected client
      • 4 - attachbottom: new window is placed at the bottom of the stack
  • autostart

    • adds automatic running of autostart.sh and autostart_blocking.sh on startup
    • be aware that dwm will not start up as long as autostart_blocking.sh is running and will stay completely unresponsive until it has finished
    • this version reads the scripts from ~/.config/dwm/ rather than ~/.dwm/ as in the original patch
    • this patch is strictly not needed as you can include everything in .xprofile, .xinitrc or .xsessionrc depending on your system
    • I added this to avoid certain conflicts when switching between window managers
    • refer to https://dwm.suckless.org/patches/autostart/
  • center

    • adds an iscentered rule to automatically center clients on the current monitor.
    • I added a fix for multi-monitor support (original fix did not take monitor x and y positions into account)
    • I also added automatic centering of floating popups
    • refer to https://dwm.suckless.org/patches/center/
  • cfacts

  • cyclelayouts

  • fancybar

  • flextile

    • flextile is a flexible version of the original tile layout that supports horizontal and vertical split as well as three different stack modes: horizontal, vertical, deck
    • the original patch (referred to above) has been ported to 6.2 as-is and incorporates the pertag, nmaster and bottom stack layouts
    • the 5.8.2 patch has a custom solution for pertag and overrides the Monitor struct, which makes it incompatible with the (now) better implemented pertag patch
    • for this reason I ended up changing flextile quite significantly:
      • removing the incorporated / custom pertag patch (either you have it or you don't)
      • dwm now comes with nmaster so no need for the patch to provide that
      • added vanitygaps
      • added cfacts
      • added gappless grid mode as a stack option
      • incorporated the centered master layout (both horizontal and vertical split)
      • added option to set predefined layouts via keyboard shortcuts
    • the end result is that this one layout can replace the following layouts:
      • tile
      • deck
      • monocle
      • centeredmaster
      • bstack
      • bstackhoriz
      • gapplessgrid
      • columns (col)
    • I added this expanded version of flextile as dwm-flextile-pertag-cfacts-vanitygaps-grid-centered-6.2.diff
    • refer to https://dwm.suckless.org/patches/flextile/
  • focusonnetactive

  • losefullscreen

    • by default in dwm it is possible to make an application fullscreen, then use the focusstack keybindings to focus on other windows beneath the current window
    • it is also possible to spawn new windows (e.g. a terminal) that end up getting focus while the previous window remains in fullscreen
    • this patch ensures that in such scenarios the previous window loses fullscreen
  • pertag

    • the pertag patch keeps layout, mwfact, barpos and nmaster settings per tag, rather than the default behaviour of having everything global across all tags
    • in my build I ended up making using pertag configurable (should one want to disable this functionality)
    • I also ended up integrating the pertag_without_bar patch that avoids storing bar configuration on a per tag basis (i.e. whether bar is enabled or not) making it configurable as well
    • should anyone be interested in the configurable version of this patch then I have uploaded it as dwm-pertag-configurable-6.2.diff
    • refer to https://dwm.suckless.org/patches/pertag/
  • resizecorners

  • rotatestack

  • savefloats

    • saves size and position of every floating window before it is forced into tiled mode
    • if the window is made floating again then the old dimensions will be restored
    • the original savefloats patch worked great when toggling floating <--> tiled in a tiled layout, but the floating window dimensions were not carried over when switching to a floating layout
    • so I ended up adding a patch for this patch to also restore floating window dimensions when going into floating layout mode and I uploaded this as dwm-savefloats-configurable-6.2.diff
    • refer to https://dwm.suckless.org/patches/save_floats/
  • statuspadding

  • switchtag

    • dwm allow you to set application specific rules so that you can have your browser, for example, start up on tag 9 optionally on a given monitor
    • when you open your browser it is then automatically moved to the configured tag, but you have to manually enable the tag to see the newly opened application
    • this patch adds an extra configuration option for individual rules where
      • 0 is default behaviour
      • 1 automatically moves you to the tag of the newly opened application and
      • 2 enables the tag of the newly opened application in addition to your existing enabled tags
    • opening the application a second time, however, will not result in the tag changing automatically as application rules do not apply in this situation (they are only highlighted as urgent)
    • for this reason I would recommend combining this with the focusonnetactive patch
  • systray

    • a systray in dwm is something that I thought I did not need, but eventually for work related reasons I did and standalone systray applications did not work that well for me
    • getting a system tray up and running in dwm is fairly straightforward based on the patches available on the reference site, but once you add the alpha patch into the mix it is a different story entirely
    • managing to get the system tray to play well with a transparent menu bar has arguably been the most challenging patch that I have applied so far
    • for reference I have prepared two patches
    • refer to https://dwm.suckless.org/patches/systray/
  • tagallmon

    • dwm comes with a function tagmon that allows you to send a window to an adjacent monitor
    • this patch replicates the same behaviour, but for all visible windows on the current monitor
    • let's you swoosh everything to the side before opening something else while reassuring onlookers that yes you do live up to wearing those sunglasses while working
  • tagmonfixfs

    • if you try to send a fullscreen window to an adjacent monitor using tagmon then the window is moved behind the scenes, but it remains in fullscreen on the original monitor until you exit fullscreen view (at which point it will appear on the adjacent monitor)
    • this patch allows a fullscreen window to be moved to an adjacent monitor while remaining in fullscreen
  • tagswapmon

    • similarly to tagallmon this patch allows you to swap all visible windows on the current monitor with all visible windows on an adjacent monitor
    • this may be useful if you have a large main (master) display and one or more smaller secondary (stack) displays
  • togglefullscreen

    • a simple patch that lets you toggle fullscreen on and off using a single keybinding
    • this is more practical than you might think as many programs have inconsistent shortcuts for going into fullscreen
  • vanitygaps

    • there are a few patches out there that add fixed gaps between windows, with or without gaps betwen the screen frame and clients
    • vanity gaps do this as well, with the difference that the size of inner and outer gaps can be configured separately (as well as the size of horizontal and vertical gaps, respectively)
    • additionally the size of the gaps can be altered on the fly using keyboard shortcuts (in practice though this is mostly for demo-purposes)
    • besides vanity reasons (read: unixporn), gaps can also remove a bit of the claustrophobic feel that tiling window managers often impose on new users
    • includes smartgaps support: whether or not to include outer gaps when a single window is open
    • includes the option of toggling gaps on and off
    • includes a series of vanitygap-enabled layouts (nobody should need this many though, the idea being that you remove the ones you don't need):
    • cfacts support for tile, bottomstack, centeredmaster and deck layouts can be found in dwm-cfacts-vanitygaps-6.2.diff
  • windowrolerule

    • sometimes a single application opens different windows depending on the task at hand and this is often reflected in the WM_WINDOW_ROLE(STRING) x property
    • this patch adds the role field to the rule configuration so that one can differentiate between, say, Firefox "browser" vs "Preferences" vs "Manager" or Google-chrome "browser" vs "pop-up"
  • zoomswap

    • the default behaviour in dwm when using zoom (i.e. moving a window to become the new master) is to use pop to re-attach the window on top of the chain
    • this has the side effect of moving every window down as well, resulting in every window on the screen changing position
    • the zoomswap patch changes this behaviour so that the current master swaps position with the other window that is to become the new master
    • applying zoom on the current master will result in it swapping back to the previous master (if it exists)
    • in my build I ended up making using zoomtag configurable (should one want to disable this functionality)
    • I also ended up integrating it with the pertag patch so that the previous master can be remembered on a per-tag basis
    • should anyone be interested in the pertag-compatible version of this patch then I have uploaded it as dwm-zoomswap-pertag-configurable-6.2.diff
    • refer to https://dwm.suckless.org/patches/zoomswap/

I have included my personal keybindings (config.h) here for reference; feel free to delete this to start fresh with default configuration (from config.def.h). Most notable I guess is binding rotatestack and cyclelayouts to the mouse wheel which can be rather convenient when having many windows in the stack. I also mapped middle-click to move a window to master (zoom) rather than toggling floating mode which you enable anyway when dragging a window.

I should also note that to start various applications I have additional keybindings through sxhkd.


Example screenshot:

https://github.com/bakkeby/dwm-vanitygaps/wiki/bstack.jpg

Example screenshot with exaggerated gaps:

https://github.com/bakkeby/dwm-vanitygaps/wiki/vanitygaps.jpg

Flextile layout with grid stack:

https://github.com/bakkeby/dwm-vanitygaps/wiki/gridstack.jpg

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].