Stumpwm configs

This commit is contained in:
Ian Keane 2026-08-07 00:59:48 -04:00
parent feadd84c93
commit 6339a9ef31
4 changed files with 105 additions and 5 deletions

View file

@ -1,7 +1,7 @@
(in-package :stumpwm) (in-package :stumpwm)
;; change the prefix key to something else ;; change the prefix key to something else
(set-prefix-key (kbd "C-z")) (set-prefix-key (kbd "C-t"))
;; prompt the user for an interactive command. The first arg is an ;; prompt the user for an interactive command. The first arg is an
;; optional initial contents. ;; optional initial contents.
@ -10,6 +10,7 @@
(when cmd (when cmd
(eval-command cmd t)))) (eval-command cmd t))))
;; Read some doc ;; Read some doc
(define-key *root-map* (kbd "d") "exec gv") (define-key *root-map* (kbd "d") "exec gv")
;; Browse somewhere ;; Browse somewhere
@ -32,8 +33,47 @@
(define-key *root-map* (kbd "M-s") "duckduckgo") (define-key *root-map* (kbd "M-s") "duckduckgo")
(define-key *root-map* (kbd "i") "imdb") (define-key *root-map* (kbd "i") "imdb")
;; Message window font ;; Message/help window styling
(set-font "-xos4-terminus-medium-r-normal--14-140-72-72-c-80-iso8859-15") (set-fg-color "#d8dee9")
(set-bg-color "#1b2b34")
(set-border-color "#6699cc")
(setf *normal-border-width* 2)
(setf *window-border-style* :thin)
(setf *ignore-wm-inc-hints* t)
(set-module-dir "~/.stumpwm.d/modules/util")
(load-module "swm-gaps")
(setf swm-gaps:*inner-gaps-size* 8)
(setf swm-gaps:*outer-gaps-size* 16)
(defcommand gaps-off () ()
(swm-gaps:toggle-gaps-off))
(defcommand gaps-small () ()
(setf swm-gaps:*inner-gaps-size* 8
swm-gaps:*outer-gaps-size* 8)
(swm-gaps:toggle-gaps-on))
(defcommand gaps-medium () ()
(setf swm-gaps:*inner-gaps-size* 16
swm-gaps:*outer-gaps-size* 16)
(swm-gaps:toggle-gaps-on))
(defcommand gaps-large () ()
(setf swm-gaps:*inner-gaps-size* 32
swm-gaps:*outer-gaps-size* 32)
(swm-gaps:toggle-gaps-on))
(defvar *gaps-map* (make-sparse-keymap))
(define-key *gaps-map* (kbd "0") "gaps-off")
(define-key *gaps-map* (kbd "1") "gaps-small")
(define-key *gaps-map* (kbd "2") "gaps-medium")
(define-key *gaps-map* (kbd "3") "gaps-large")
(set-font "-b&h-luxi mono-medium-r-normal--20-*-*-*-m-0-iso10646-1")
(setf *message-window-padding* 16)
(setf *message-window-gravity* :center)
(setf *input-window-gravity* :center)
;;; Define window placement policy... ;;; Define window placement policy...
@ -69,3 +109,46 @@
(define-frame-preference "Emacs" (define-frame-preference "Emacs"
(1 t t :restore "emacs-editing-dump" :title "...xdvi") (1 t t :restore "emacs-editing-dump" :title "...xdvi")
(0 t t :create "emacs-dump" :class "Emacs")) (0 t t :create "emacs-dump" :class "Emacs"))
(defcommand kill-window-or-frame () ()
(if (current-window)
(delete-window)
(remove-split)))
;; Don't send a random window to a new split
(setf *new-frame-action* :empty)
(setf *suppress-frame-indicator* t)
(defcommand rofi-pull-window () ()
(let* ((windows (remove (current-window) (group-windows (current-group))))
(names (format nil "~{~a~%~}" (mapcar #'window-name windows)))
(selection (run-prog-collect-output
"/bin/sh" "-c"
(format nil "echo '~a' | rofi -dmenu -p 'window'" names))))
(when (and selection (not (string= selection "")))
(let ((win (find (string-trim '(#\Newline) selection)
windows :key #'window-name :test #'string=)))
(when win (pull-window win))))))
(defvar *window-map* (make-sparse-keymap))
(define-key *top-map* (kbd "s-W") *window-map*)
(define-key *window-map* (kbd "r") "iresize")
(define-key *window-map* (kbd "g") *gaps-map*)
(defvar *media-map* (make-sparse-keymap))
(define-key *top-map* (kbd "s-m") *media-map*)
(define-key *media-map* (kbd "v")
"exec mpv-pick.sh")
(define-key *top-map* (kbd "s-d") "exec rofi -show run")
(define-key *top-map* (kbd "s-h") "move-focus left")
(define-key *top-map* (kbd "s-j") "move-focus down")
(define-key *top-map* (kbd "s-k") "move-focus up")
(define-key *top-map* (kbd "s-l") "move-focus right")
(define-key *top-map* (kbd "s-w") "rofi-pull-window")
(define-key *top-map* (kbd "s-p") "next-in-frame")
(define-key *top-map* (kbd "s-n") "prev-in-frame")
(define-key *top-map* (kbd "s-q") "kill-window-or-frame")
(define-key *top-map* (kbd "s--") "vsplit")
(define-key *top-map* (kbd "s-\|") "hsplit")

View file

@ -186,7 +186,7 @@ Setting this in the :init of evil doesn't work for some reason. It has to be ear
;; '(font . "Fira Code Mono 16")) ;; '(font . "Fira Code Mono 16"))
(set-face-attribute 'default nil (set-face-attribute 'default nil
:family "Fira Code" :family "FiraCode Nerd Font Mono"
:height 160) :height 160)
;; (load-theme 'doom-oceanic-next t) ;; (load-theme 'doom-oceanic-next t)

11
link.sh
View file

@ -37,6 +37,15 @@ backup_and_link "$DOTFILES/config/yazi" "$HOME/.config/yazi"
backup_and_link "$DOTFILES/config/rofi" "$HOME/.config/rofi" backup_and_link "$DOTFILES/config/rofi" "$HOME/.config/rofi"
backup_and_link "$DOTFILES/config/zathura" "$HOME/.config/zathura" backup_and_link "$DOTFILES/config/zathura" "$HOME/.config/zathura"
# StumpWM contrib modules (not stored in dotfiles, cloned on demand)
STUMPWM_MODULES="$HOME/.stumpwm.d/modules"
if [ ! -d "$STUMPWM_MODULES" ]; then
echo "cloning stumpwm-contrib modules..."
git clone https://github.com/stumpwm/stumpwm-contrib "$STUMPWM_MODULES"
else
echo "stumpwm-contrib already present, skipping"
fi
# StumpWM: link individual file (preserve ~/.config/stumpwm for live data like groups, etc.) # StumpWM: link individual file (preserve ~/.config/stumpwm for live data like groups, etc.)
mkdir -p "$HOME/.config/stumpwm" mkdir -p "$HOME/.config/stumpwm"
backup_and_link "$DOTFILES/config/stumpwm/config.lisp" "$HOME/.config/stumpwm/config" backup_and_link "$DOTFILES/config/stumpwm/config.lisp" "$HOME/.config/stumpwm/config"
@ -48,7 +57,7 @@ backup_and_link "$DOTFILES/config/gnupg/gpg-agent.conf" "$HOME/.gnupg/gpg-agent.
# pinentry-smart: TUI-aware wrapper (curses normally, tty inside senpai/mutt/etc.) # pinentry-smart: TUI-aware wrapper (curses normally, tty inside senpai/mutt/etc.)
mkdir -p "$HOME/.local/bin" mkdir -p "$HOME/.local/bin"
backup_and_link "$DOTFILES/scripts/pinentry-smart" "$HOME/.local/bin/pinentry-smart" backup_and_link "$DOTFILES/scripts/mpv-pick.sh" "$HOME/.local/bin/mpv-pick.sh"
chmod +x "$DOTFILES/scripts/pinentry-smart" chmod +x "$DOTFILES/scripts/pinentry-smart"
# GTK themes # GTK themes

8
scripts/mpv-pick.sh Executable file
View file

@ -0,0 +1,8 @@
#!/bin/bash
# Build a list of full paths, display just filenames in rofi
files=$(cd $HOME/Videos && fd -t f)
selection=$(echo "$files" | awk -F'/' '{print $NF}' | rofi -i -dmenu -p mpv)
if [ -n "$selection" ]; then
fullpath=$(echo "$files" | grep -F "$selection" | head -1)
mpv --save-position-on-quit "$HOME/Videos/$fullpath"
fi