#StumpWM

Eugene :emacs: :freebsd:evgandr@mas.to
2025-05-19

I was inspired by these links: merveilles.town/@neauoire/1145 and tried to use a DejaVu Serif fonts (BTW, I'm always like a Computer Modern serif font) in my system and use a smaller color palette or dithering in my wallpaper/blog header image.

- #StumpWm modeline looks like a good old book
- #Emacs modeline with Serif font looks interesting
- and #conky too
- blog's main page reduced from ~130 Kb to 59 Kb, lol :dragnaww:

#retrocomputing #dejavu #serif #simplicity

My desktop without any windows opened. Adine drawing with a reduced count of colors used as a wallpaper. Left and right conky panels displays current weather and some system statistics with a DejaVu Serif font, list of processes on the right conky panel use Dejavu Sans Mono font. StumpWm modeline displays list of two opened windows (all are Emacs frames) and CPU temperature, network information and datetime with a DejaVu Serif font.My desktop with an Emacs frame opened. There is an Eshell in the Emacs window with listing of my wallpapers with it's size (showing dramatic decrease of files' sizes after playing with palette with reduced colors and dithering  — from 776 Kb to 54 Kb for desktop wallpaper and from 1.2 Mb to 134 Kb for mobile wallpaper):

776k scarletspectrum_adine.png
54k scarletspectrum_adine_oldschool.png
1.2M scarletspectrum_adine_phone.png
134k scarletspectrum_adine_phone_old_school.png

Emacs modeline is standard but using a DejaVu Serif font. Emacs frame itself using DejaVu Sans Mono font. All screen colored with a Solarized Light color scheme.Main page of my blog with heavily dithered image of dragon starring to the laptop. The image using only ~4 colors.

Below it there are a list of posts and blog's footer. All are colored in the Solarized Light color scheme and use browser controlled font (no custom fonts is using) — the DejaVu Serif and DejaVu Sans Mono.
éric 🚲 🇪🇺 :emacs:ericsfraga@fediscience.org
2025-05-15

@evgandr This is really useful. I may now manage to stop killing my browser window when typing text and hitting C-w by mistake...

#StumpWM

Eugene :emacs: :freebsd:evgandr@mas.to
2025-05-12

2) I can define custom keybindings for each application. If I want to make search in Librewolf with C-s, go to address bar with M-x and move page up/down with C-v/M-v (so, I want Emacs keybindings in my browser), then I use this code:

(2/2)

#StumpWm #CommonLisp #librewolf

(define-remapped-keys
    '(
                                        ; LibreWolf keybindings
      ("(librewolf)"
       ("C-s" . "C-f")
       ("C-g" . "Escape")
       ("C-v" . "Next")
       ("M-v" . "Prior")
       ("C-y" . "C-v")
       ("C-w" . "C-x")
       ("M-w" . "C-c")
       ("M-less" . "Home")
       ("M-greater" . "End")
       ("M-x" . "C-l")
       ("C-k" . "C-w"))))
Eugene :emacs: :freebsd:evgandr@mas.to
2025-05-12

Top 2 StumpWm features (for me):

1) I can display anything in modeline. If I get rid of standard bubble notifications and want to display brightness/volume bars not in the floating notification but right in the bottom bar, temporarily replacing all its data with progress bar — then … it is simple:

(1/2)

#StumpWm #CommonLisp

(defcommand brightness (action)
    ((:string "Enter up or down: "))
  "Control the brightness.

ACTION can be \"up\" or \"down\"."
  (let* ((brightness-current (nth-value 0 (parse-integer
                                           (run-shell-command "brightness_agan2k | tr -d '\\n'" 't))))
         (brightness-new (funcall
                          (cond
                            ((string= action "up") '+)
                            ((string= action "down") '-))
                          brightness-current 1))
         (brightness-new (cond
                           ((> brightness-new 15) 15)
                           ((< brightness-new 0) 0)
                           (t brightness-new)))
         (MAX-BRIGHTNESS 15)
         (brightness-percentage (float (* (/ brightness-new MAX-BRIGHTNESS) 100))))
    (run-shell-command (format nil "exec brightness_agan2k -b ~d &" brightness-new))
    (setf *mode-line-timeout* 1)
    (setf *screen-mode-line-format* (bar brightness-percentage 176 #\# #\.))
    (run-with-timer 3 nil (lambda () (setup-modeline)))
    (run-with-timer 6 nil (lambda () (progn
                                  (setup-modeline-timeout)
                                  nil)))))

(define-key *top-map* (kbd "XF86MonBrightnessDown") "brightness down")
(define-key *top-map* (kbd "XF86MonBrightnessUp") "brightness up")
Eugene :emacs: :freebsd:evgandr@mas.to
2025-05-12

Finally, I moved the soul (but not the body) of my i3wm configuration to the #StumpWm :dragnaww:

The possibility to open REPL and tune WM configuration step by step — is priceless. I literally can change all in the runtime.

OFC there are some drawbacks. For ex. if I try to update modeline every second, then my CPU temperature, WiFi AP name, IP address and datetime updates will eat my CPU.

But, because there is a hackable LISP code, I think I can change that in the future :dragnloaf:

Screenshot of empty StumpWm desktop. There is a Adine (yellow dragoness) from the "Angels with Scaly Wings" on the wallpaper. Two conky infopanels — left with weather info and atmospheric pressure graph, and the right with system information: CPU load, network load, memory and SSD/HDD usage and the top 5 CPU consuming processes.

On the bottom there is a standard Lisp modeline from StumpWm. It displays (from left to right): list of groups (default and the web), list of frames (both are Emacs), CPU temperature, battery percentage and date-time.
Eugene :emacs: :freebsd:evgandr@mas.to
2025-05-08

Oh, #StumpWm is an incredible thing! :dragnaww:

Connected my StumpWm instance to the Emacs REPL to configure fonts. And found that (xft:cache-fonts) can't find my fonts. :dragnsweats:

Go to clx-truetype sources, found that *font-dirs* looks like points to the wrong catalog suitable for Linux but unsuitable for FreeBSD — and confirmed this inside REPL :dragnthink:

So I change the variable in the _runtime_ inside the running process and now my fonts are found!

#CommonLisp #Emacs #FreeBSD

Emacs frame with two horizontal windows. On the top window is the font-cache.lisp from the cxl-truetype sources. Here the *font-dirs* definition which points to the wrong catalog (/usr/share/fonts) for FreeBSD.

On the bottom window there is SLiME REPL which is connected to the running instance of the StumpWM. There are the some commands in the REPL to check the xft:*font-dirs* variable, modify it to add the right path (/usr/local/share/fonts) and successfull rerun of the (xft:cache-fonts)
Eugene :emacs: :freebsd:evgandr@mas.to
2025-05-06

OH SHI~~~~

Suddenly, I found that #StumpWm is written on the #CommonLisp :dragnsweats:

Goodbye i3wm and world :dragnhappy:

スパックマン クリスchris_spackman@twit.social
2025-04-23

Until #Gentoo portage catches up with the packages needed for #StumpWM to run without crashing, I think I'll give #QTile a go. Can't do the keyboard shortcut things I want, but neither can most other WM or DEs.

Should be very helpful with the new 3440x1440 monitor arriving tomorrow. Large fonts AND two windows next to each other. Sounds great; I can't wait to experience it. (Upgrading from 1920x1080.)

#Linux #WindowManagers

スパックマン クリスchris_spackman@twit.social
2025-04-21

I suppose I could switch to #EXWM (again), but can it do keystroke intercepts the way #StumpWM can?

My reasons for trying StumpWM are:

1) try another window manager
2) learn some lisp
3) use emacs keystrokes in #Mozilla #Firefox. Or at least turn off ctrl-w to kill the window.

If EXWM can do 3, then it may be worth trying until I can get StumpWM working.

スパックマン クリスchris_spackman@twit.social
2025-04-21

Anyone get #StumpWM working on #Gentoo #Linux?

It seems there is an issue in CLX or maybe SBCL that causes StumpWM to exit with an error at start. Supposedly fixed in updated CLX package, but that isn't in portage yet.

I'd like to try putting the newer version in /usr/local/ and having StumpWM use that. Not sure the best way to go about that, though.

Or, maybe a local package (portage overlay) would be better? Haven't done that before - maybe a good spring break project, though.

スパックマン クリスchris_spackman@twit.social
2025-04-21

Just learned about #Xephyr for running a second x session inside the first one. Very cool. Can't believe I hadn't heard about it before now. Years and years ago, I used to routinely run a second session on vt8. Good for testing out different window managers or desktop environments or running things as a different user.

Using Xephyr to troubleshoot #stumpwm - it starts and exits / crashes immediately. Testing a few things, so not giving up hope yet.

スパックマン クリスchris_spackman@twit.social
2025-04-18

Upgrading my monitor to 3440x1440, from 1920x1080. Physically about the same size (about 2-inches longer, diagonally). I might even put two windows next to each other. Or, I might try #StumpWM.

Time to go download a gig or so of wallpapers / backgrounds from #DigitalBlasphemy. Only ever downloaded the 1920x1080 ones.

Knut 🏳️‍🌈 🇳🇴🧸praetor@mstdn.social
2025-04-17

I'm pooped. I think I'm going to take a nice, relaxing shower in the dark, and then work on my #stumpwm and #guix config. My OFFICIAL name change was today! :D So I'm officially Knut Asbjornsen - the crazy half-baked Norwegian American dude. I am what I am. I'd really like to thank my #trans peeps for encouraging me to be what I am, do what I do, and go for it. It's been liberating. :3

Knut 🏳️‍🌈 🇳🇴🧸praetor@mstdn.social
2025-04-14

I'm pooped. But excited for Wednesday. It's a lot of work getting a name change by yourself. But it can done. The courts are really cool. But if they want something done a particular way, your ass better get it done right then and there. If you're quick and don't waste their time, they'll be quick and help you out as much as humanly possible. They don't waste time with people who waste time. But now to play with #guix and #stumpwm 😁 #law #court

Perpetuaλ Beta 🇺🇦 :emacs:kf@sonomu.club
2025-03-27

I just love how easy it is to tweak #stumpwm while it's running. Just keep a #sly connection open and the config in an #emacs buffer, then you can very easily implement whatever you want to do with a couple of commands.

Perpetuaλ Beta 🇺🇦 :emacs:kf@sonomu.club
2025-03-19

#stumpwm is looking increasingly awesome, now that I've managed to iron out some initial kinks and connected it to #slynk.

2025-03-07

I would have loved to see some kind of merge of #lem, #mcclim and #nyxt. At least a version of Lem running in Nyxt, making the power of both available to build upon. I have #lisp pretty much top to bottom now (including #guix and #stumpwm), but it's still pretty disconnected. I can control things from emacs though, so that's the middle ground, but I would have loved #CommonLisp there too.

(mapcar #'emacsomancer objs)emacsomancer@types.pl
2025-01-22

Figuring out a stupid solution to a stupid problem with my #Emacs on my #Guix / #StumpWM machine.

There's surely an actual fix for this, but I figured out a stupid workaround at least.

Guix, XIM, Emacs, Multi_key, Shft+SPC | The Neo-Babbage Files

(Want to compose characters? Then you can't scroll backwards with Shft-SPACE. Want to scroll backwards with Shft-SPACE? Then you can't compose characters.)

2024-12-28

@lhp That's really cool! Currently I control via my own terribly organized wrapper scripts but would love a scheme-based alternative to . Any plans for tiling support?

2024-09-05

So I decided to checkout #wayland. Since #stumpwm don’t support wayland, I gave #kde #plasma a shot. And it is so nice ✨. I might hang around it for a while.

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst