Adam Richardson's Site

Suckless Patches

Table of Contents

<2022-05-01 Sun>

dwm

Config

Colors and Font

  • This diff shows changes I make to customize the colors on DWM
 static const unsigned int snap      = 32;       /* snap pixel */
 static const int showbar            = 1;        /* 0 means no bar */
 static const int topbar             = 1;        /* 0 means bottom bar */
-static const char *fonts[]          = { "monospace:size=10" };
-static const char dmenufont[]       = "monospace:size=10";
-static const char col_gray1[]       = "#222222";
-static const char col_gray2[]       = "#444444";
+static const char *fonts[]          = { "Hack:size=12" };
+static const char dmenufont[]       = "Hack:size=12";
+static const char col_gray1[]       = "#3b6064";
+static const char col_gray2[]       = "#364958";
 static const char col_gray3[]       = "#bbbbbb";
-static const char col_gray4[]       = "#eeeeee";
-static const char col_cyan[]        = "#005577";
+static const char col_gray4[]       = "#000000";
+static const char col_cyan[]        = "#87bba2";
 static const char *colors[][3]      = {
   /*               fg         bg         border   */

Comment out the tag mask for Firefox

  • By default dwm ships with firefox always on tag 9
  • To disable this comment out the line or delete it
   { "Gimp",     NULL,       NULL,       0,            1,           -1 },
-  { "Firefox",  NULL,       NULL,       1 << 8,       0,           -1 },
+  /* { "Firefox",  NULL,       NULL,       1 << 8,       0,           -1 }, */

Use Super as ModKey

  • This diff shows changing the MODKEY to Mod4Mask, which is the Windows or Super key
 /* key definitions */
-#define MODKEY Mod1Mask
+#define MODKEY Mod4Mask

Set the terminal to kitty

-static const char *termcmd[]  = { "st", NULL };
+static const char *termcmd[]  = { "kitty", NULL };

Add media commands

  • This command usually goes below the termcmd
  • This defines commands used for volume and brightness control
  • These commands are defined in utils
+
+static const char *upvol[]   = { "volup", NULL };
+static const char *downvol[] = { "voldown", NULL };
+static const char *mutevol[] = { "volmute", NULL };
+static const char *uplight[] = { "lightup", NULL };
+static const char *downlight[] = { "lightdown", NULL };

Bind Media Keys to media commands

  • This goes in the keys[] array
   { MODKEY|ShiftMask,             XK_q,      quit,           {0} },
+  { 0,                       XF86XK_AudioLowerVolume, spawn, {.v = downvol } },
+  { 0,                       XF86XK_AudioMute, spawn, {.v = mutevol } },
+  { 0,                       XF86XK_AudioRaiseVolume, spawn, {.v = upvol   } },
+  { 0,                       XF86XK_MonBrightnessUp, spawn, {.v = uplight   } },
+  { 0,                       XF86XK_MonBrightnessDown, spawn, {.v = downlight   } },

Use media keys in dwm

  • Include X11/XF86keysym.h in dwm.c
--- a/dwm.c
+++ b/dwm.c
@@ -36,6 +36,7 @@
 #include <X11/Xlib.h>
 #include <X11/Xproto.h>
 #include <X11/Xutil.h>
+#include <X11/XF86keysym.h>
 #ifdef XINERAMA
 #include <X11/extensions/Xinerama.h>
 #endif /* XINERAMA */

OpenBSD

  • Uncomment the FREETYPEINC path change for OpenBSD in config.mk
--- a/config.mk
+++ b/config.mk
@@ -18,7 +18,7 @@ XINERAMAFLAGS = -DXINERAMA
 FREETYPELIBS = -lfontconfig -lXft
 FREETYPEINC = /usr/include/freetype2
 # OpenBSD (uncomment)
-#FREETYPEINC = ${X11INC}/freetype2
+FREETYPEINC = ${X11INC}/freetype2

dmenu

OpenBSD

  • Uncomment the FREETYPEINC path change for OpenBSD in config.mk
--- a/config.mk
+++ b/config.mk
@@ -18,7 +18,7 @@ XINERAMAFLAGS = -DXINERAMA
 FREETYPELIBS = -lfontconfig -lXft
 FREETYPEINC = /usr/include/freetype2
 # OpenBSD (uncomment)
-#FREETYPEINC = ${X11INC}/freetype2
+FREETYPEINC = ${X11INC}/freetype2

TODO slstatus

Make sure you run cd ~/src/slstatus && sudo make install after tangling

/* See LICENSE file for copyright and license details. */

/* interval between updates (in ms) */
const unsigned int interval = 1000;

/* text to show if no value can be retrieved */
static const char unknown_str[] = "n/a";

/* maximum output string length */
#define MAXLEN 2048

/*
 * function            description                     argument (example)
 *
 * battery_perc        battery percentage              battery name (BAT0)
 *                                                     NULL on OpenBSD/FreeBSD
 * battery_state       battery charging state          battery name (BAT0)
 *                                                     NULL on OpenBSD/FreeBSD
 * battery_remaining   battery remaining HH:MM         battery name (BAT0)
 *                                                     NULL on OpenBSD/FreeBSD
 * cpu_perc            cpu usage in percent            NULL
 * cpu_freq            cpu frequency in MHz            NULL
 * datetime            date and time                   format string (%F %T)
 * disk_free           free disk space in GB           mountpoint path (/)
 * disk_perc           disk usage in percent           mountpoint path (/)
 * disk_total          total disk space in GB          mountpoint path (/")
 * disk_used           used disk space in GB           mountpoint path (/)
 * entropy             available entropy               NULL
 * gid                 GID of current user             NULL
 * hostname            hostname                        NULL
 * ipv4                IPv4 address                    interface name (eth0)
 * ipv6                IPv6 address                    interface name (eth0)
 * kernel_release      `uname -r`                      NULL
 * keyboard_indicators caps/num lock indicators        format string (c?n?)
 *                                                     see keyboard_indicators.c
 * keymap              layout (variant) of current     NULL
 *                     keymap
 * load_avg            load average                    NULL
 * netspeed_rx         receive network speed           interface name (wlan0)
 * netspeed_tx         transfer network speed          interface name (wlan0)
 * num_files           number of files in a directory  path
 *                                                     (/home/foo/Inbox/cur)
 * ram_free            free memory in GB               NULL
 * ram_perc            memory usage in percent         NULL
 * ram_total           total memory size in GB         NULL
 * ram_used            used memory in GB               NULL
 * run_command         custom shell command            command (echo foo)
 * separator           string to echo                  NULL
 * swap_free           free swap in GB                 NULL
 * swap_perc           swap usage in percent           NULL
 * swap_total          total swap size in GB           NULL
 * swap_used           used swap in GB                 NULL
 * temp                temperature in degree celsius   sensor file
 *                                                     (/sys/class/thermal/...)
 *                                                     NULL on OpenBSD
 *                                                     thermal zone on FreeBSD
 *                                                     (tz0, tz1, etc.)
 * uid                 UID of current user             NULL
 * uptime              system uptime                   NULL
 * username            username of current user        NULL
 * vol_perc            OSS/ALSA volume in percent      mixer file (/dev/mixer)
 *                                                     NULL on OpenBSD
 * wifi_perc           WiFi signal in percent          interface name (wlan0)
 * wifi_essid          WiFi ESSID                      interface name (wlan0)
 */
static const struct arg args[] = {
        /* function format          argument */
        { datetime, "%s | ",           "%F %r" },
        { battery_perc, "BAT: %s%%",    "BAT0" },
};