From 4c18be1f59a0982dd9338d6a237a488313dfcb34 Mon Sep 17 00:00:00 2001 From: Ian Keane Date: Thu, 6 Aug 2026 15:50:20 -0400 Subject: [PATCH] Stumpwm, fix goroot, emacs tweaks --- config/fish/fish_variables | 3 +- config/profile | 5 +++ config/stumpwm/config.lisp | 71 ++++++++++++++++++++++++++++++++ emacs-config.org | 83 +++++++++++++++++++++++++------------- link.sh | 4 ++ 5 files changed, 138 insertions(+), 28 deletions(-) create mode 100644 config/stumpwm/config.lisp diff --git a/config/fish/fish_variables b/config/fish/fish_variables index cab071c..aaa836a 100644 --- a/config/fish/fish_variables +++ b/config/fish/fish_variables @@ -1,4 +1,5 @@ # This file contains fish universal variable definitions. # VERSION: 3.0 +SETUVAR --export GOROOT:/usr/lib64/go1\x2e26\x2e5/go SETUVAR __fish_initialized:4300 -SETUVAR fish_user_paths:/home/green/\x2ecargo/bin\x1e/home/green/\x2elocal/bin\x1e/home/green/\x2elocal/share/npm/bin +SETUVAR fish_user_paths:/usr/lib64/go1\x2e26\x2e5/go/bin\x1e/home/green/\x2ecargo/bin\x1e/home/green/\x2elocal/bin\x1e/home/green/\x2elocal/share/npm/bin diff --git a/config/profile b/config/profile index 167ba15..548694e 100644 --- a/config/profile +++ b/config/profile @@ -1,3 +1,8 @@ +# Start Emacs daemon if not already running (works with or without X) +if ! emacsclient -e nil 2>/dev/null; then + emacs --daemon 2>/dev/null & +fi + export EDITOR=vim export BROWSER=nyxt export PAGER=bat diff --git a/config/stumpwm/config.lisp b/config/stumpwm/config.lisp new file mode 100644 index 0000000..4fbe1bc --- /dev/null +++ b/config/stumpwm/config.lisp @@ -0,0 +1,71 @@ +(in-package :stumpwm) + +;; change the prefix key to something else +(set-prefix-key (kbd "C-z")) + +;; prompt the user for an interactive command. The first arg is an +;; optional initial contents. +(defcommand colon1 (&optional (initial "")) (:rest) + (let ((cmd (read-one-line (current-screen) ": " :initial-input initial))) + (when cmd + (eval-command cmd t)))) + +;; Read some doc +(define-key *root-map* (kbd "d") "exec gv") +;; Browse somewhere +(define-key *root-map* (kbd "b") "colon1 exec firefox http://www.") +;; Ssh somewhere +(define-key *root-map* (kbd "C-s") "colon1 exec xterm -e ssh ") +;; Lock screen +(define-key *root-map* (kbd "C-l") "exec xlock") + +;; Web jump (works for DuckDuckGo and Imdb) +(defmacro make-web-jump (name prefix) + `(defcommand ,(intern name) (search) ((:rest ,(concatenate 'string name " search: "))) + (nsubstitute #\+ #\Space search) + (run-shell-command (concatenate 'string ,prefix search)))) + +(make-web-jump "duckduckgo" "firefox https://duckduckgo.com/?q=") +(make-web-jump "imdb" "firefox http://www.imdb.com/find?q=") + +;; C-t M-s is a terrble binding, but you get the idea. +(define-key *root-map* (kbd "M-s") "duckduckgo") +(define-key *root-map* (kbd "i") "imdb") + +;; Message window font +(set-font "-xos4-terminus-medium-r-normal--14-140-72-72-c-80-iso8859-15") + +;;; Define window placement policy... + +;; Clear rules +(clear-window-placement-rules) + +;; Last rule to match takes precedence! +;; TIP: if the argument to :title or :role begins with an ellipsis, a substring +;; match is performed. +;; TIP: if the :create flag is set then a missing group will be created and +;; restored from *data-dir*/create file. +;; TIP: if the :restore flag is set then group dump is restored even for an +;; existing group using *data-dir*/restore file. +(define-frame-preference "Default" + ;; frame raise lock (lock AND raise == jumpto) + (0 t nil :class "Konqueror" :role "...konqueror-mainwindow") + (1 t nil :class "XTerm")) + +(define-frame-preference "Ardour" + (0 t t :instance "ardour_editor" :type :normal) + (0 t t :title "Ardour - Session Control") + (0 nil nil :class "XTerm") + (1 t nil :type :normal) + (1 t t :instance "ardour_mixer") + (2 t t :instance "jvmetro") + (1 t t :instance "qjackctl") + (3 t t :instance "qjackctl" :role "qjackctlMainForm")) + +(define-frame-preference "Shareland" + (0 t nil :class "XTerm") + (1 nil t :class "aMule")) + +(define-frame-preference "Emacs" + (1 t t :restore "emacs-editing-dump" :title "...xdvi") + (0 t t :create "emacs-dump" :class "Emacs")) diff --git a/emacs-config.org b/emacs-config.org index 0797db9..dd0feaf 100644 --- a/emacs-config.org +++ b/emacs-config.org @@ -221,8 +221,23 @@ Setting this in the :init of evil doesn't work for some reason. It has to be ear (use-package solaire-mode :config (solaire-global-mode +1)) - (use-package simple-modeline - :hook (after-init . simple-modeline-mode)) + (use-package nerd-icons + :ensure t + :config + (unless (find-font (font-spec :name "Symbols Nerd Font")) + (nerd-icons-install-fonts t))) + + (use-package doom-modeline + :hook (after-init . doom-modeline-mode) + :config + (setq doom-modeline-minor-modes t + doom-modeline-height 24 + nerd-icons-font-family "Symbols Nerd Font Mono") + (set-face-attribute 'mode-line nil :height 0.9) + (set-face-attribute 'mode-line-inactive nil :height 0.9)) + + (use-package minions + :config (minions-mode 1)) ;; turn off number mode in some contexts (dolist (mode @@ -485,10 +500,14 @@ Setting this in the :init of evil doesn't work for some reason. It has to be ear ** Which-key #+begin_src emacs-lisp (use-package which-key + :ensure nil :init (which-key-mode) :diminish which-key-mode :config - (setq which-key-idle-delay 0.3)) + (setq which-key-idle-delay 0.3 + which-key-add-column-padding 1 + which-key-max-description-length 32 + which-key-min-column-description-width 20)) #+end_src ** General I know these could be bound on a per-package basis, but since this is my primary interface with emacs I'd rather keep all keymaps in one place, both for reference and to discourage myself from organizing my top-level bindings on a per-plugin basis rather than keeping the focus on functionality. @@ -1098,7 +1117,7 @@ Idk I think this came from the vertico readme ;; strategy, if you want to see the documentation from multiple providers. ;; (add-hook 'eldoc-documentation-functions #'embark-eldoc-first-target) (define-key evil-normal-state-map (kbd "C-.") 'embark-act) - (evil-define-key 'normal evil-normal-state-map (kbd "C-.") embark-act) + (evil-define-key 'normal evil-normal-state-map (kbd "C-.") 'embark-act) :config @@ -1205,6 +1224,30 @@ Idk I think this came from the vertico readme All lisp-family languages #+begin_src emacs-lisp ; Required for some reason + ;; symex's deps are all countvajhula packages not in any recipe + ;; repo. Pre-register all recipes so straight can resolve + ;; transitive deps regardless of build order. + (dolist (recipe '((pubsub :host github :repo "countvajhula/pubsub") + (virtual-ring :host github :repo "countvajhula/virtual-ring") + (mantra :host github :repo "countvajhula/mantra") + (repeat-ring :host github :repo "countvajhula/repeat-ring") + (lithium :host github :repo "countvajhula/lithium"))) + (straight-register-package recipe)) + + (use-package pubsub :straight (pubsub :host github :repo "countvajhula/pubsub")) + (use-package virtual-ring :straight (virtual-ring :host github :repo "countvajhula/virtual-ring")) + (use-package mantra :straight (mantra :host github :repo "countvajhula/mantra")) + (use-package repeat-ring :straight (repeat-ring :host github :repo "countvajhula/repeat-ring")) + (use-package lithium :straight (lithium :host github :repo "countvajhula/lithium")) + + ;; rigpa and symex-rigpa disabled for now — rigpa pulls in a + ;; newer transient that needs cond-let which straight can't resolve + ;; (use-package rigpa + ;; :straight + ;; (rigpa + ;; :host github + ;; :repo "countvajhula/rigpa")) + (use-package symex-core :straight (symex-core @@ -1249,29 +1292,15 @@ All lisp-family languages #'geiser-edit-symbol-at-point) (symex-ide-mode 1)) - (use-package lithium - :straight t - :config - (lithium-mode 1)) - - (use-package rigpa - :straight - (rigpa - :type git - :host github - :repo "countvajhula/rigpa") - :config - (rigpa-mode 1)) - - (use-package symex-rigpa - :after (symex rigpa symex-evil) - :straight - (symex-rigpa - :host github - :repo "drym-org/symex.el" - :files ("symex-rigpa/symex*.el")) - :config - (symex-rigpa-mode 1)) + ;; (use-package symex-rigpa + ;; :after (symex rigpa symex-evil) + ;; :straight + ;; (symex-rigpa + ;; :host github + ;; :repo "drym-org/symex.el" + ;; :files ("symex-rigpa/symex*.el")) + ;; :config + ;; (symex-rigpa-mode 1)) #+end_src *** Scheme diff --git a/link.sh b/link.sh index 7b7cc4c..54c6bd1 100755 --- a/link.sh +++ b/link.sh @@ -37,6 +37,10 @@ backup_and_link "$DOTFILES/config/yazi" "$HOME/.config/yazi" backup_and_link "$DOTFILES/config/rofi" "$HOME/.config/rofi" backup_and_link "$DOTFILES/config/zathura" "$HOME/.config/zathura" +# StumpWM: link individual file (preserve ~/.config/stumpwm for live data like groups, etc.) +mkdir -p "$HOME/.config/stumpwm" +backup_and_link "$DOTFILES/config/stumpwm/config.lisp" "$HOME/.config/stumpwm/config" + # GPG: link individual files to preserve ~/.gnupg's required 700 permissions mkdir -p "$HOME/.gnupg" chmod 700 "$HOME/.gnupg"