This patch provides an mechanism to easily jump between any 2 clients, or to swap any 2 clients through shortcuts by introcuding mark. The mark is global, and only one mark is allowed at the same time. The marked client is distinguished from other clients by having a different border color.

This patch adds 3 functions to dwm:


static const char normmarkcolor[]   = "#775500";    /*border color for marked client*/
static const char selmarkcolor[]    = "#775577";    /*border color for marked client on focus*/

/*basic key mappings*/
{ MODKEY,                       XK_semicolon,togglemark,   {0} },
{ MODKEY,                       XK_o,      swapfocus,      {0} },
{ MODKEY,                       XK_u,      swapclient,     {0} },

Some ideas for combinations of key mappings:


this patch has been revised, it’s recommended to use dwm-6.1-mark-new.diff old behaviours of the patch(dwm-mark-6.1.diff):

  1. crashes when using mark features while the marked client has been killed.
  2. swapclient clears the mark.
  3. swapclient falls back to zoom() if the mark is not set.
  4. swapfocus does not activate tags for the marked client
  5. swapfocus does not focus monitors correctly

  6. dwm-mark-new-6.1.diff

  7. dwm-mark-6.1.diff