Personal configuration for speedwm
Go to file
2022-09-11 00:39:08 +02:00
docs Rename ipccmd.h to ipc.h 2022-09-10 13:44:11 +02:00
scripts speedwm-mkpage: Auto-pushed speedwm changes! 2022-09-10 11:47:08 +02:00
toggle update IPC args 2022-09-10 12:42:01 +02:00
autostart.h speedwm-mkpage: Auto-pushed speedwm changes! 2022-09-10 11:47:08 +02:00
colors.h fix bug i've been putting off for some reason 2022-08-27 23:52:00 +02:00
drw.c Add toggle for window icons 2022-09-03 17:05:20 +02:00
drw.h Add toggle for window icons 2022-09-03 17:05:20 +02:00
fsignal.h speedwm-mkpage: Auto-pushed speedwm changes! 2022-09-09 11:13:25 +02:00
ipc.h Rename ipccmd.h to ipc.h 2022-09-10 13:44:11 +02:00
keybinds.h add next/previous track 2022-08-30 11:32:15 +02:00
layouts.c Hide layouts that aren't available, remove layout code that wasn't 2022-09-03 19:57:49 +02:00
layouts.h Add toggles for all layouts, fix potential segfault caused by improper 2022-09-03 19:08:07 +02:00
LICENSE Update license as per commit https://git.suckless.org/dwm/commit/a83dc2031050d786ddf5f329b57d658a931c94b7.html 2022-09-11 00:16:16 +02:00
Makefile speedwm-mkpage: Auto-pushed speedwm changes! 2022-09-09 11:13:25 +02:00
mouse.h Add mouse toggle for toggle.h 2022-09-03 16:46:19 +02:00
options.h Add toggle for hide vacant tags, add non-hide vacant tags support to tag 2022-09-10 13:31:30 +02:00
options.mk switch to options.mk and add toggle.mk 2022-09-03 17:53:15 +02:00
README.md update IPC args 2022-09-10 12:42:01 +02:00
rules.h Add speedwm, we'll see if I use this repository instead. 2022-08-21 11:53:18 +02:00
speedwm.c Implement: https://git.suckless.org/dwm/commit/5b2e5e7a4001479e4dc3e245f96e49f7ea0da658.html 2022-09-11 00:39:08 +02:00
speedwm.png Add speedwm, we'll see if I use this repository instead. 2022-08-21 11:53:18 +02:00
status Update status bar: Screen resolution * 1.5 2022-09-10 19:43:52 +02:00
toggle.h Add toggle for experimental fix 2022-09-09 10:07:24 +02:00
toggle.mk Small updates 2022-09-08 17:13:41 +02:00
transient.c Add speedwm, we'll see if I use this repository instead. 2022-08-21 11:53:18 +02:00
util.c Add IPC patch, add as an option. Will likely simplify this soon but for 2022-08-26 11:41:11 +02:00
util.h Add IPC patch, add as an option. Will likely simplify this soon but for 2022-08-26 11:41:11 +02:00
xresources.h Add toggle for hide vacant tags, add non-hide vacant tags support to tag 2022-09-10 13:31:30 +02:00

https://speedie.gq/speedwm

https://speedie.gq/donate

What is speedwm?

speedwm is a window manager forked from suckless.org's dwm or dynamic window manager. It manages the user's open windows and tiles them according to a set layout (dynamic). Just like dwm, speedwm also tries to be minimal but also has functionality and aesthetics as a goal. It is also much more minimal than other window managers like i3-gaps while offering many more features.

Tiling window managers (unlike floating window managers that you may be used to) tile windows based on a set layout making them easy to get productive on. They also encourage the user to use their keyboard instead of the mouse so that the user doesn't have to move their hands much but there are mouse keybinds and more can be added.

Installation

In order to install this build of speedwm, all dependencies must be installed. You can see (Dependencies) for a list of all dependencies required to use this fork.

  • git clone https://codeberg.org/speedie/speedwm
  • cd speedwm
  • make clean install
    • If any warnings show up, fix it by installing the missing dependency.
  • If a .xinitrc is used, add 'speedwm_run' to the end.
    • NOTE: Your .xinitrc should ONLY contain 'speedwm_run'. speedwm will automatically start everything else. If not, edit autostart.h and 'make clean install'. If a .xinitrc is not used then you don't need to worry. A .desktop file is automatically created when you run 'make clean install'.

Layouts

speedwm comes with the following layouts:

  • Tile
  • Monocle
  • Grid
  • Deck
  • Centered Master
  • Centered Floating Master
  • Spiral
  • Dwindle
  • Three Column
  • Bottom Stack
  • Horizontal Bottom Stack
  • Horizonal Grid
  • Tatami
  • Tilewide
  • Stairs
  • Tiling (5:4)
  • Column
  • Dynamic Grid

They can be switched between using a little menu (See Keybinds for more information) or by right clicking the Layout indicator. The more commonly used layouts can be switched between using a quick keybind.

Keybinds

Below is a list of all speedwm keybinds.

Applications

Keybinds for regular applications

  • Super+Shift+Enter | Opens a terminal
  • Super+Shift+Colon | Opens a dmenu prompt
  • Super+Shift+s | Opens 'maim' to take a screenshot and copies it to the clipboard using 'xclip'
  • Super+Shift+f | Opens the defined file manager
  • Super+Shift+w | Opens the defined web browser
  • Super+Shift+o | Opens the bundled dfmpeg dmenu script to record your screen.
  • Super+Shift+t | Opens the defined editor in your terminal
  • Super+Shift+p | Kills the defined web browser
  • Super+Shift+m | Kills the defined music player
  • Super+Shift+a | Opens the defined mixer in your terminal
  • Super+Shift+m | Opens the defined music player
  • Super+Shift+x | Opens the defined system process viewer in your terminal
  • Super+Control+Shift+m | Opens the defined email client
  • Super+Control+u | Opens the defined RSS reader

Navigation

These keybinds are for navigating speedwm

  • Super+t | Reorganize tags and move clients
  • Super+f | Full-screen the selected window
  • Super+b | Show/hide the speedwm bar
  • Super+s | Show/hide the systray (If trayer is installed)
  • Super+j/k | Move focus between visible windows
  • Super+Alt+j/k | Increase/decrease gaps between windows in tiling layout by 1
  • Super+Alt+u/d | Increase/decrease gaps between windows in tiling layout by 5
  • Super+Control+j/k | Move focus between hidden windows (Can then 'Show')
  • Super+a/d | Increase/decrease size of each window
  • Super+o | Hide a window
  • Super+Control+o | Show a hidden focused window
  • Super+a/d | Move to the next/previous tag
  • Super+Minus | Show the scratchpad
  • Super+Equal | Remove the scratchpad
  • Super+Enter | Switch order of windows
  • Super+Shift+q | Close the current window
  • Super+Space | Set layout
  • Super+t | Disable inactive fade
  • Super+Shift+Equal | Toggle scratchpads
  • Super+Shift+Minus | Hide the scratchpad
  • Super+Shift+Space | Unfloat floating windows
  • Super+Shift+Arrow | Resizes a window in floating mode
  • Super+1 | Move to tag 1
  • Super+2 | Move to tag 2
  • Super+3 | Move to tag 3
  • Super+4 | Move to tag 4
  • Super+5 | Move to tag 5
  • Super+6 | Move to tag 6
  • Super+7 | Move to tag 7
  • Super+8 | Move to tag 8
  • Super+9 | Move to tag 9
  • Super+Shift+1 | Preview tag 1
  • Super+Shift+2 | Preview tag 2
  • Super+Shift+3 | Preview tag 3
  • Super+Shift+4 | Preview tag 4
  • Super+Shift+5 | Preview tag 5
  • Super+Shift+6 | Preview tag 6
  • Super+Shift+7 | Preview tag 7
  • Super+Shift+8 | Preview tag 8
  • Super+Shift+9 | Preview tag 9
  • Super+Shift+h/j/k/l | Rotates a stack.
  • Super+Shift+Escape | Ask the user if they want to shutdown or reboot or nothing
  • Super+Shift+i | Open a dmenu prompt and open the file the user picks in Zathura
  • Super+Shift+p | Open a dmenu prompt and open the file the user picks in Vim
  • Super+Control+e | Switch to layout 3 (Grid)
  • Super+Control+r | Switch to layout 1 (Monocle)
  • Super+Control+t | Switch to layout 0 (Master & stack)
  • Super+Control+y | Switch to layout 4 (Deck)
  • Super+Control+0 | View all windows at once.
  • Super+Control+Arrow | Moves a window to any corner of your screen (Arrow key)
  • Super+Control+Tab | Open a dmenu prompt asking the user what layout to switch to
  • Super+Control+h | Open a list of all keybinds in your terminal using less
  • Super+Control+Shift+a/d | Move between available layouts
  • Super+Alt+s | Make the current selected window sticky
  • Super+Control+Shift+Esc | Open speedwm-utils (Main menu)
  • Super+Control+Shift+Arrow | Resize the window to the screen size.
  • Super+Control+Shift+s | Set a wallpaper
  • Super+Control+Shift+n | Connect to wifi (Requires iwd)
  • Super+Control+Shift+b | Connect to a bluetooth device (Requires bluez and bluez-utils)
  • Super+Control+Shift+e | Open up a list of dotfiles in dmenu that you can edit.
  • Alt+Tab | Switch windows quickly and easily
  • Alt+Control+j/k | Change window size vertically (cfact)

Chained keybinds

  • Super+c & w | Curl wttr.in and open in less
  • Super+c & m | Ask the user for a topic and curl cheat.sh
  • Super+g & t | Toggle gaps
  • Super+g & 0 | Reset gaps
  • Super+g & i | Increase inner gaps by 1
  • Super+Shift+g & i | Decrease inner gaps by 1
  • Super+g & o | Increase outer gaps by 1
  • Super+Shift+g & o | Decrease outer gaps by 1
  • Super+r+v | Open the defined music visualizer
  • Super+Shift+e+a | Open the virtual keyboard
  • Super+Shift+e+e | Open a list of all emojis and copy the selection
  • Super+Shift+e+a | Open a list of copypasta and copy the selection
  • Alt+Shift+q+o | Kill every window except the focused

Extras

These will only work if your keyboard has special multimedia buttons.

  • Mute button | Mutes your audio
  • Up Volume button | Increases your volume
  • Down Volume button | Decreases your volume
  • Stop button | Stops your defined music player
  • Browser button | Opens your defined web browser
  • Power button | Ask if you wanna shut down, restart or lock your computer.
  • Email button | Open your defined email client
  • System button | Open your defined status viewer in a terminal

Mouse

These binds can be activated using your mouse

  • Tag (Left click) | Switch to tag
  • Layout indicator (Left click) | Switch to the next layout
  • Layout indicator (Middle click) | Switch to the next layout
  • Layout indicator (Right click) | Open a dmenu list of all layouts
  • Window title (Left click) | Hide/Show the window
  • Window title (Right click) | Open speedwm-utils
  • Focused window (Super+Alt+Left click) | Move the focused window around
  • Focused window (Super+Alt+Middle click) | Make the focused window floating
  • Focused window title (Middle click) | Rotate stack
  • Dragging (Super+Right click) | Increase/decrease size of each window
  • Dragging (SuperControl+Right click) | Increase/decrease cfact

There are also keybinds for statuscmd, but you must implement it into your own status bar. See mouse.h for more information.

Dependencies

These are absolutely necessary, speedwm will NOT compile without them

  • libxft-bgra (Can be installed through 'make -libxftfix')
    • NOTE: libXft will do but will cause speedwm and as such all your applications to crash if a colored emoji is displayed in the status bar. This includes the Emoji picker.
  • libXinerama
    • Can be disabled through editing toggle.mk if you're not interested in multiple monitors.
  • imlib2
    • Tag previews, Window icons. Can be disabled through editing toggle.mk and toggle.h if you don't want these features.

Features

These are dependencies if you wanna use certain features NOTE: Do not add any of these to .xinitrc or similar. They are going to be autostarted by speedwm. If you want to use an alternative, change it in options.h.

  • dmenu
    • NOTE: dmenu is required for most scripts included with this build of speedwm. My build is required for proper Pywal support.
    • If you do not have the password, grid and center patches, you must disable them in ~/.config/speedwm-de/global/config by setting two variables to false.
  • picom
    • Optional but speedwm looks sort of ugly without it.
  • xclip (Required for clipboard support by a few scripts, will start automatically)
  • xwallpaper (Required to set wallpapers)
  • xmodmap
    • Required if you want the Alt+Tab to have proper keybinds.
    • Install if you want Escape instead of Caps Lock and Right Super+hjkl for arrow keys
  • xrdb (Install if you want .Xresources support)
  • pywal (Install if you want pywal support. Requires swal aka the default way to set wallpapers)
  • wmctrl (Needed for proper window management)
  • xsetroot (Needed for most scripts including Pywal support)
  • slock (Required for screen locking)
    • If you want to display a message, you need the text patch.
    • If you have the background image patch, you can set the image to ~/.config/speedwm-de/swal/CurrentWallpaper. It is a symlink to the current wallpaper.
  • maim (Required for built in 'speedwm-screenshotutil' script)

Software

This build of speedwm comes with binds for software. These must be installed by default but you can change what software is required by editing 'options.h' and running 'make clean install'. You can also remove keybinds by editing 'keybinds.h' and running 'make clean install'.

  • st (Terminal)
  • firefox (Web browser)
  • htop (Status monitor)
  • newsboat (RSS reader)
  • zathura (PDF reader)
  • alsa-utils (Required for audio controls)
  • cmus (Default music player)
  • neovim (Text editor)
  • aerc (Email client)
  • maim (Screenshot tool, automatically copies to clipboard using xclip)
  • vifm (File manager)
  • slock (Lock screen) And everything under 'Features'.

Important

If you're used to dwm, speedwm might be a little unfamiliar to you at first. This is because speedwm doesn't use config.h (or config.def.h). Instead, config.h is split into different parts to make it easier to edit. Instead of editing config.h you'll want to edit:

  • autostart.h for starting stuff right before speedwm (For example xclip, pywal, etc.)
  • options.h for changing colors and applications to use with keybinds.
  • fsignal.h for adding fake signals
  • colors.h for changing alpha options and color options, most users won't need to edit it.
  • xresources.h for adding/removing .Xresources options
  • rules.h for adding/removing rules
  • keybinds.h for adding/removing keybinds.
  • mouse.h for adding/removing mouse binds.
  • ipccmd.h for adding/removing IPC commands. (If support is compiled in)
  • toggle.h for adding/removing features from getting compiled in.

After you've edited one of the files, you need to run 'make clean install' to reinstall speedwm. Remember that you can change colors through your .Xresources file (see .Xresources and Pywal) meaning you do not need to recompile speedwm.

Another important detail you must keep in mind is that this build comes with a status bar simply named 'status'. It can be found in the speedwm source code directory. It is just a shell script which adds stuff to your status bar. It will automatically be started when speedwm starts.

You can edit the status bar simply by editing 'status' and running 'make clean install'. You can also configure it by editing '~/.config/speedwm-de/status/config'. Please note that most status bars including the built in 'status' depends on xsetroot which must be installed. speedwm-compatcheck is going to tell you about this when compiling.

If you want to change status bar, edit options.h and set 'static char status' to your status bar binary (must be in $PATH). Alternatively, you can also set speedwm.status: in .Xresources (See .Xresources and Pywal)

.Xresources and Pywal

This fork of speedwm has .Xresources support thanks to the .Xresources patch. It also has pywal support (tool which grabs colors based on your wallpaper).

Colors reload automagically because of a reloadxresources function this build has combined with fsignal and a wallpaper script I wrote. Therefore, if you want colors to reload instantly, you're unfortunately forced to use the bundled wallpaper script. But that's alright because it's pretty good.

If you want to use another script, you can open up speedwm-utils and select 'Reload .Xresources' to reload .Xresources. Alternatively, you can write a script yourself (fsignal 31 reloads the colors)

Below is a list of all .Xresources values you can define. The .Xresources file should be placed in ~ or ~/.config by the user. If it is not or you want it somewhere else, you can edit 'autostart.h' and 'make clean install'.

Note that the 'xrdb' dependency is required for both pywal and .Xresources support and 'xsetroot' is required for automatic reloading of colors, the built in status bar, and more so you should install this.

  • speedwm.font: fontawesome:size=8
  • speedwm.font2: NotoSans-Regular:size=8:antialiasing=true
  • speedwm.font3: Noto Emoji:size=8
  • speedwm.col_background: #222222
  • speedwm.col_backgroundmid: #222222
  • speedwm.col_textnorm: #bbbbbb
  • speedwm.col_textsel: #eeeeee
  • speedwm.col_windowbordersel: #eeeeee
  • speedwm.col_windowbordernorm: #000000
  • speedwm.col_tag1: #333333
  • speedwm.col_tag1_text: #eeeeee
  • speedwm.col_tag2: #333333
  • speedwm.col_tag2_text: #eeeeee
  • speedwm.col_tag3: #333333
  • speedwm.col_tag3_text: #eeeeee
  • speedwm.col_tag4: #333333
  • speedwm.col_tag4_text: #eeeeee
  • speedwm.col_tag5: #333333
  • speedwm.col_tag5_text: #eeeeee
  • speedwm.col_tag6: #333333
  • speedwm.col_tag6_text: #eeeeee
  • speedwm.col_tag7: #333333
  • speedwm.col_tag7_text: #eeeeee
  • speedwm.col_tag8: #333333
  • speedwm.col_tag8_text: #eeeeee
  • speedwm.col_tag9: #333333
  • speedwm.col_tag9_text: #eeeeee
  • speedwm.col_layouttext: #000000
  • speedwm.col_layoutbgnorm: #222222
  • speedwm.col_layoutbgsel: #bbbbbb
  • speedwm.col_status0: #131210
  • speedwm.col_status1: #bf616a
  • speedwm.col_status2: #A16F9D
  • speedwm.col_status3: #68ABAA
  • speedwm.col_status4: #A89F93
  • speedwm.col_status5: #D3A99B
  • speedwm.col_status6: #AFC9AC
  • speedwm.col_status7: #eae1cb
  • speedwm.col_status8: #a39d8e
  • speedwm.col_status9: #6D5E8E
  • speedwm.col_status10: #A16F9D
  • speedwm.col_status11: #D3A99B
  • speedwm.col_status12: #AFC9AC
  • speedwm.col_status13: #eae1cb
  • speedwm.col_status14: #6D5E8E
  • speedwm.col_status15: #ffffff
  • speedwm.borderpx: 1
  • speedwm.snap: 20
  • speedwm.showbar: 1
  • speedwm.resizehints: 0
  • speedwm.mousemfact: 1
  • speedwm.mfact: 0.50
  • speedwm.startontag: 1
  • speedwm.clicktofocus: 0
  • speedwm.focusspawn: 0
  • speedwm.enablegaps: 1
  • speedwm.smartgaps: 0
  • speedwm.smartgapsize: 0
  • speedwm.gappih: 10
  • speedwm.gappiv: 10
  • speedwm.gappoh: 10
  • speedwm.gappov: 10
  • speedwm.attachdirection: 3
  • speedwm.shell: /bin/sh
  • speedwm.sizeicon: 10
  • speedwm.spacingicon: 5
  • speedwm.status: status
  • speedwm.defaultname:
  • speedwm.refreshrules: 1
  • speedwm.decorhints: 1
  • speedwm.barpaddingv: 5
  • speedwm.barpaddingh: 5
  • speedwm.barheight: 5
  • speedwm.centerfloating: 1
  • speedwm.savefloat: 1
  • speedwm.warpcursor: 1
  • speedwm.pertag: 1
  • speedwm.i3nmaster: 0
  • speedwm.tagpreview: 1
  • speedwm.tagpreviewpaddingv: 0
  • speedwm.tagpreviewpaddingh: 0
  • speedwm.mousepreview: 1
  • speedwm.barpreview: 0
  • speedwm.scalepreview: 4
  • speedwm.monocleclientcount: 0
  • speedwm.monoclecount: 0
  • speedwm.monocleformat: [%d/%d]
  • speedwm.statusallmons: 1
  • speedwm.hidelayout: 0
  • speedwm.hidetitle: 0
  • speedwm.hideicon: 0
  • speedwm.hidestatus: 0
  • speedwm.hidetags: 0
  • speedwm.hidesticky: 0
  • speedwm.hidefloating: 0
  • speedwm.leftlayout: 1
  • speedwm.fadeinactive: 1
  • speedwm.defaultlayout: 1
  • speedwm.wmclass: 1
  • speedwm.stairpx: 20
  • speedwm.stairdirection: 1
  • speedwm.stairsamesize: 1
  • speedwm.deckcount: 0
  • speedwm.deckformat: D %d
  • speedwm.roundedcorners: 0
  • speedwm.cornerradius: 3
  • speedwm.swallowclients: 1
  • speedwm.swallowfloating: 1
  • speedwm.movefullscreenmon: 0
  • speedwm.lockfullscreen: 1
  • speedwm.fullscreenhidebar: 1
  • speedwm.underline: 0
  • speedwm.underlineall: 0
  • speedwm.underlinepad: 5
  • speedwm.underlinestroke: 2
  • speedwm.underlinevoffset: 0
  • speedwm.forcevsplit: 1
  • speedwm.floatscratchpad: 0
  • speedwm.nmaster: 1

Fsignal

Thanks to the 'fsignal' patch available on suckless.org's website, we can easily write shell scripts to interact with dwm and therefore speedwm. This is exactly what I did and speedwm-utils, speedwm-swal, speedwm-shutdown and more take advantage of it.

In order to use 'fsignal', your system must have 'xsetroot' installed. Then simply use the dwm-utils script. Syntax is dwm-utils -exec

Below is a list of all signums and what they do.

  • 1 | Switch to the Tiling layout
  • 2 | Switch to the Floating layout
  • 3 | Switch to the Monocle layout
  • 4 | Switch to the Grid layout
  • 5 | Switch to the Deck layout
  • 6 | Switch to the Centered Master layout
  • 7 | Switch to the Centered Floating Master layout
  • 8 | Switch to the Fibonacci Spiral layout
  • 9 | Switch to the Fibonacci Dwindle layout
  • 10 | Switch to the Three Column layout
  • 11 | Switch to the Bottom Stack Vertical layout
  • 12 | Switch to the Bottom Stack Horizontal layout
  • 13 | Switch to the Horizontal Grid layout
  • 14 | Switch to the Tatami layout
  • 15 | To be added
  • 16 | Cycle layout (Previous)
  • 17 | Cycle layout (Next)
  • 18 | Reload colors from .Xresources
  • 19 | Set mfact (-0.05)
  • 20 | Set mfact (+0.05)
  • 21 | Toggle Scratchpad
  • 22 | Toggle Sticky
  • 23 | Toggle Bar
  • 24 | Toggle Fullscreen
  • 25 | Restart speedwm keeping all your applications open.
  • 26 | Unused at the moment.
  • 27 | Switch to the Stairs layout
  • 28 | Reset layout and mfact
  • 29 | Reorganize tags
  • 30 | Restart speedwm
  • 31 | Shutdown speedwm
  • 32 | To be added
  • 33 | To be added
  • 34 | To be added
  • 35 | Switch to the Tiling (5:4) layout
  • 36 | Switch to the Column layout
  • 37 | Switch to the Dynamic Grid layout

Switching run launcher

Some users may prefer to use a different run launcher than dmenu. Previously all scripts bundled would only run dmenu from $PATH but you can now switch run launcher very easily.

  • Edit options.h and change RUN to your run launcher
  • Add export RUNLAUNCHER= to your .rc

Run launchers must support dmenu arguments because otherwise scripts are going to be incompatible. It must also support the additional '-g' argument that the dmenu grid patch provides unless you modify the scripts bundled. Keep in mind that if you use a different run launcher, it may not support Pywal/.Xresources.

What is up with /usr/share

speedwm occasionally writes files to /usr/share. These files contain information about speedwm.

  • The documentation you're reading when you press Ctrl+Alt+h is stored there (as separate files).
  • speedwm-bindir is stored there which is a file that contains the path to the binaries on your system.
  • speedwm-compositor is stored there which is a file that contains the defined compositor.
  • speedwm-layouts is stored there which is a file that contains all available layouts.

These files are pretty important so it is recommended that you do not delete them. If you do end up deleting them though, you can just make clean install on speedwm again.

Maintaining settings easily

speedwm is a personal fork of dwm and will therefore likely have keybinds and other options you may not like. Because of this, I recommend that you use the patching system to manage your custom settings speedwm has a patching system. It allows you to create a patch with your changes to options.h, options.mk, toggle.h and toggle.mk. To create a patch, simply make clean install once and then the docs folder will contain backups of your source code. If you perform changes to any of these four files, run make patch to create patches against the backups in docs and your modified files. Then once you're updating, do make patch_remove, git pull, make patch_install, and make clean install and all your settings will be there. The only (obvious) problem with doing this is that eventually the backup files patches are being created against will be pretty old causing patches to no longer apply correctly. If this is the case you will need to create new patches and backups.

If this seems like more effort than it is worth, maintaining your own fork is always an option. This allows you to perform any options you want yourself. This however doesn't allow you to grab any updates so this should be your second choice.

Additional note on autostart

If you wish to add autostart entries without recompiling, consider using $HOME/.config/speedwm-de/autostart.sh. This is a path added to autostart.h and you can fill it with anything you want.

Do note that it will NOT just run once. It will run every time you restart and start speedwm (signum 30 and 31 count as well). To get around this, you may wrap stuff in a function in the script and have some way of checking if it has ran before. If it hasn't, call the function.

An alternative is to use the $HOME/.config/speedwm-de/autostart_once.sh path. This one is autostarted by speedwm_run and is therefore not hardcoded and not affected by speedwm restarting. Just like the previous autostart script, it does not exist so you need to create it.