From e99d483dffed9581963613557840d1fc5edf3d40 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Wed, 15 Apr 2020 00:09:58 -0700 Subject: Reset stumpwmrc I’ve recently started playing around with StumpWM again, I’ve removed a bunch of stuff from the init file and am slowly adding new things in. --- stumpwmrc | 232 +++++--------------------------------------------------------- 1 file changed, 18 insertions(+), 214 deletions(-) diff --git a/stumpwmrc b/stumpwmrc index 496647f..927c682 100644 --- a/stumpwmrc +++ b/stumpwmrc @@ -1,135 +1,16 @@ ;; -*- mode: lisp; -*- -(in-package :stumpwm) +(in-package :stumpwm-user) -(defmacro elisp (&body body) - "Run BODY through emacsclient." - `(sb-ext:run-program - "/usr/bin/emacsclient" - '("-e" ,(string-downcase (format nil "~S" (cons 'progn body)))) - :wait nil)) - -(defvar *conkeror-program* "conkeror" - "The executable to run to start Conkeror.") -(defvar *emacs-program* "emacsclient -c -a \"\"" - "The executable to run to start Emacs.") -(defvar *firefox-program* "firefox" - "The executable to run to start Firefox.") -(defvar *i3lock-program* "i3lock -c 000000" - "The executable to run to start i3lock.") -(defvar *urxvt-program* "urxvt" - "The executable to run to start URxvt.") -(defvar *lock-screen-hook* nil - "Hook run right before the screen gets locked.") -(defvar *screen-unlocked-hook* nil - "Hook run right after the screen is unlocked.") -(defvar *desktop-bindings* - (let ((m (make-sparse-keymap))) - (define-key m (kbd "s") "save-desktop-configuration") - m) - "Special keymap for desktop management commands.") - -(defun get-mail-count (mailbox &optional (inbox "inbox")) - "Check how many new messages there are in MAILBOX." - (length - (append - (directory - (format nil "/home/slash/documents/mail/~A/~A/new/*.*" - mailbox inbox)) - (remove-if (lambda (d) - (let ((dir (namestring d))) - (string= dir "S" :start1 (1- (length dir))))) - (directory - (format nil "/home/slash/documents/mail/~A/~A/cur/*.*" - mailbox inbox)))))) - -(defun dunst-pause () - "Pause dunst" - (sb-ext:run-program "/usr/bin/killall" '("-SIGUSR1" "dunst"))) - -(defun dunst-start () - "Start dunst" - (sb-ext:run-program "/usr/bin/killall" '("-SIGUSR2" "dunst"))) - -(defun mpd-playing-p () - "Check if MPD is currently in the playing state." - (and (cl-ppcre:scan - "\\n\\[playing\\]" - (with-output-to-string (status) - (sb-ext:run-program "/usr/bin/mpc" '() :output status))) - t)) - -(defun set-jabber-away () - "Tell emacs to set jabber to away presence." - (elisp - (when (and (fboundp 'jabber-send-away-presence) - *jabber-connected*) - (jabber-send-away-presence)))) - -(defun set-jabber-online () - "Tel emacs to set jabber to online presence." - (elisp - (when (and (fboundp 'jabber-send-default-presence) - *jabber-connected*) - (jabber-send-default-presence)))) - -(let (mpd-was-playing) - (defun mpd-pause () - "Pause MPD playback." - (when (setf mpd-was-playing (mpd-playing-p)) - (sb-ext:run-program "/usr/bin/mpc" '("pause") :wait nil))) - - (defun mpd-play () - "Resume MPD playback." - (when mpd-was-playing - (sb-ext:run-program "/usr/bin/mpc" '("play") :wait nil)))) - -(defcommand emacs-move-focus (dir) ((:direction "Direction: ")) - "Move focus in direction DIR. - -If the current window is an Emacs window, let it handle the event -itself." - (let ((cw (current-window))) - (if (and cw (string= (window-class cw) "Emacs")) - (send-fake-key - cw (kbd (format nil "S-~a" (string-capitalize dir)))) - (move-focus dir)))) - -(defcommand run-emacs () () - "Open Emacs" - (run-shell-command *emacs-program*)) - -(defcommand raise-emacs () () - "Open or show Emacs" - (run-or-raise *emacs-program* '(:class "Emacs"))) - -(defcommand run-firefox () () - "Open Firefox" - (run-shell-command *firefox-program*)) - -(defcommand raise-firefox () () - "Open or show Firefox" - (run-or-raise *firefox-program* '(:class "Firefox"))) - -(defcommand run-conkeror () () - "Open Conkeror" - (run-shell-command *conkeror-program*)) - -(defcommand raise-conkeror () () - "Open or show Conkeror" - (run-or-raise *conkeror-program* '(:class "Conkeror"))) +(ql:quickload "swank") -(defcommand run-urxvt () () - "Open URxvt" - (run-shell-command *urxvt-program*)) +(load-module "swm-gaps") -(defcommand raise-urxvt () () - "Open URxvt" - (run-or-raise *urxvt-program* '(:class "URxvt"))) +(defvar *lock-screen-hook* nil + "Hook that gets run right before the screen gets locked.") -(defcommand save-desktop-configuration () () - "Save the current desktop configuration." - (dump-desktop-to-file "~/.stumpwm.d/desktop.lisp")) +(defvar *screen-unlocked-hook* nil + "Hook that gets run right after the screen is unlocked.") (defun run-stumpwm-hook-on-exit (process) "Run `*screen-unlocked-hook*' if PROCESS' status is `:exited'." @@ -138,103 +19,26 @@ itself." (defcommand lock-screen () () "Lock the screen using i3lock. - -Run `*lock-screen-hook*' before locking it and run -`*screen-unlocked-hook*' after it has been unlocked." +Run `*lock-screen-hook*' before locking it and run `*screen-unlocked-hook*' +after it has been unlocked." (run-hook *lock-screen-hook*) (sb-ext:run-program - "/usr/bin/i3lock" '("-n" "-c" "000000") :wait nil + "/usr/bin/i3lock" '("-n" "-c" "000000") + :wait nil :status-hook #'run-stumpwm-hook-on-exit)) -(set-bg-color "#111111") -(set-border-color "#bfbfbf") -(set-fg-color "#c2c2c2") -(set-float-focus-color "#6d97bf") -(set-float-unfocus-color "#222224") -(set-focus-color "#6d97bf") -(set-font "-*-tamsyn-medium-r-normal-*-17-*-*-*-*-0-iso8859-1") -(set-unfocus-color "#222224") -(set-win-bg-color "#111111") - -(setf *colors* '("#a5a5a4" "#bf6d6d" "#8abf6d" "#b2bf6d" - "#6d97bf" "#b27dbf" "#7dbfbf" "#c2c2c2")) -(setf *input-window-gravity* :center) -(setf *message-window-gravity* :top-right) -(setf *mode-line-background-color* "#152e54") -(setf *mode-line-border-color* "#152e54") -(setf *mode-line-foreground-color* "#c2c2c2") -(setf *shell-program* (getenv "SHELL")) -(setf *transient-border-width* 1) -(setf *window-border-style* :thin) -(setf *screen-mode-line-format* - (list "[%n]" - '(:eval - (format nil " | ryu: ~D | gmail: ~D | aethon: ~D | 9f: ~D | " - (get-mail-count "ryuslash.org") - (get-mail-count "gmail") - (get-mail-count "aethon") - (get-mail-count "ninthfloor"))))) - -(add-hook *lock-screen-hook* 'set-jabber-away) -(add-hook *lock-screen-hook* 'mpd-pause) -(add-hook *lock-screen-hook* 'dunst-pause) -(add-hook *screen-unlocked-hook* 'set-jabber-online) -(add-hook *screen-unlocked-hook* 'mpd-play) -(add-hook *screen-unlocked-hook* 'dunst-start) +(setf swm-gaps:*inner-gaps-size* 7) +(setf swm-gaps:*outer-gaps-size* 7) (set-prefix-key (kbd "C-z")) (define-key *top-map* (kbd "C-M-l") "lock-screen") -(define-key *top-map* (kbd "XF86AudioLowerVolume") "exec mpc volume -5") -(define-key *top-map* (kbd "XF86AudioMute") - "exec amixer sset Master toggle") -(define-key *top-map* (kbd "XF86AudioNext") "exec mpc next") -(define-key *top-map* (kbd "XF86AudioPlay") "exec mpc toggle") -(define-key *top-map* (kbd "XF86AudioPrev") "exec mpc prev") -(define-key *top-map* (kbd "XF86AudioRaiseVolume") "exec mpc volume +5") -(define-key *top-map* (kbd "S-Down") "emacs-move-focus down") -(define-key *top-map* (kbd "S-Left") "emacs-move-focus left") -(define-key *top-map* (kbd "S-Right") "emacs-move-focus right") -(define-key *top-map* (kbd "S-Up") "emacs-move-focus up") - -(define-key *root-map* (kbd "c") "raise-urxvt") -(define-key *root-map* (kbd "C") "run-urxvt") -(define-key *root-map* (kbd "e") "raise-emacs") -(define-key *root-map* (kbd "E") "run-emacs") -(define-key *root-map* (kbd "w") "raise-conkeror") -(define-key *root-map* (kbd "W") "run-conkeror") - -(define-key *root-map* (kbd "C-b") "windowlist") -(define-key *root-map* (kbd "M-b") "move-window left") -(define-key *root-map* (kbd "M-f") "move-window right") -(define-key *root-map* (kbd "M-n") "move-window down") -(define-key *root-map* (kbd "M-p") "move-window up") -(define-key *root-map* (kbd "b") "move-focus left") -(define-key *root-map* (kbd "f") "move-focus right") -(define-key *root-map* (kbd "n") "move-focus down") -(define-key *root-map* (kbd "p") "move-focus up") -(define-key *root-map* (kbd "SPC") "next-in-frame") -(define-key *root-map* (kbd "C-z") "other-in-frame") -(define-key *root-map* (kbd "d") '*desktop-bindings*) -(undefine-key *root-map* (kbd "C-a")) -(undefine-key *root-map* (kbd "C-c")) -(undefine-key *root-map* (kbd "C-e")) -(undefine-key *root-map* (kbd "C-m")) +(swm-gaps:toggle-gaps) -(define-frame-preference "Default" - (0 t nil :class "Emacs") - (2 t nil :class "Firefox") - (1 t nil :class "URxvt") - (2 t nil :class "Conkeror")) +(with-message-queuing t + (let ((programs-in-path (programs-in-path))) + (unless (member "i3lock" programs-in-path :test #'string-equal) + (echo "Couldn't find the i3lock executable, can't lock screen")))) -(if (not (head-mode-line (current-head))) - (toggle-mode-line (current-screen) (current-head))) - -(restore-from-file - (concatenate 'string (sb-ext:posix-getenv "HOME") - "/.stumpwm.d/desktop.lisp")) - -(ql:quickload "swank") -(swank-loader:init :load-contribs t) (swank:create-server :dont-close t) -- cgit v1.2.3-54-g00ecf