;; -*-lisp-*- ;; ;; StumpWM config (in-package :stumpwm) (defparameter *key-layout* "en_US" "Stores the current key layout") ;; creating groups (gnewbg "2") (gnewbg "3") (gnewbg "4") (gnewbg "5") (gnewbg "6") (gnewbg "7") (gnewbg "8") (gnewbg "9") ;; border width (setf *maxsize-border-width* 5) (setf *transient-border-width* 5) (setf *normal-border-width* 5) ;; border style (setf *window-border-style* :tight) (set-focus-color "#b00045") (set-win-bg-color "black") (set-unfocus-color "black") (set-float-focus-color "#b00045") (set-float-unfocus-color "black") ;; window gravity (set-normal-gravity :center) (set-maxsize-gravity :center) (set-transient-gravity :center) (gravity :center) ;; root keybindings ;;; browser (define-key *root-map* (kbd "C-c") "exec /opt/firefox/firefox") ;;; terminal (define-key *root-map* (kbd "c") "exec urxvt") ;;; es as emacs (define-key *root-map* (kbd "e") "exec es") ;;; groups to rpws keys (define-key *root-map* (kbd "C-1") "change-workspace 1") (define-key *root-map* (kbd "C-2") "change-workspace 2") (define-key *root-map* (kbd "C-3") "change-workspace 3") (define-key *root-map* (kbd "C-4") "change-workspace 4") (define-key *root-map* (kbd "C-5") "change-workspace 5") (define-key *root-map* (kbd "C-6") "change-workspace 6") (define-key *root-map* (kbd "C-7") "change-workspace 7") (define-key *root-map* (kbd "C-8") "change-workspace 8") (define-key *root-map* (kbd "C-9") "change-workspace 9") ;; xserver (run-shell-command "xmodmap ~/.Xmodmap") (run-shell-command "xrdb -merge ~/.Xresources") ;;; HiDPI stuff. ;;; TODO: Only run if required ;; (run-shell-command "xrdb -merge ~/.Xresources-hidpi") ;; dunst notify server (run-shell-command "dunst") ;; nitrogen (wallpaper) (run-shell-command "nitrogen --restore") ;; keepassxc (run-shell-command "keepassxc ~/ownCloud/2016-10.kdbx") ;; message window font (set-font "11Hermit") ;; set the mouse focus (setf *mouse-focus-policy* :click) ;; set DESKTOP_SESSION variable (setf (getenv "DESKTOP_SESSION") "stumpwm") ;; define volume control keys (define-key *top-map* (kbd "XF86AudioLowerVolume") "exec amixer set Master 5%-") (define-key *top-map* (kbd "XF86AudioRaiseVolume") "exec amixer set Master 5%+") (define-key *top-map* (kbd "XF86AudioMute") "exec amixer set Master toggle") (define-key *top-map* (kbd "XF86AudioMicMute") "exec amixer set Capture toggle") (define-key *top-map* (kbd "XF86Launch1") "exec i3lock") ;; battery status (define-key *root-map* (kbd "b") "exec ~/scripts/rat/bat.sh") ;; set backlight (defcommand set-backlight (value) ((:string "Backlight in %: ")) "Setting a new value for the backlight" (run-shell-command (concatenate 'string "xbacklight -set " value)) (echo (concatenate 'string "Backlight set to " value))) (define-key *root-map* (kbd "B") "set-backlight") ;; tweet (defcommand tweet (tweet) ((:string "Tweet: ")) "Tweet" (run-shell-command (concatenate 'string "cd ~/programs/dart/learning/twitter && dart main.dart -t \"" tweet "\"")) (echo (concatenate 'string "Tweeted: " tweet))) (define-key *root-map* (kbd "T") "tweet") ;; switch key layout (defun switch-layout-to (new-lang) "Switch the key layout to the given one" (setq *key-layout* new-lang) (run-shell-command (concatenate 'string "setxkbmap -layout " new-lang " && xmodmap ~/.Xmodmap")) (echo (concatenate 'string "Set keyboard layout to " new-lang))) ;; switch key leyout to german (defcommand layout-de () () "Set the keyboard layout to de (german)" (switch-layout-to "de")) ;; switch key leyout to american english (defcommand layout-en () () "Set the keyboard layout to en_US (american english)" (switch-layout-to "en_US")) ;; switch key layout automatically (defcommand switch-layout () () "Switch the layout" (if (string= "en_US" *key-layout*) (switch-layout-to "de") (switch-layout-to "en_US"))) (define-key *top-map* (kbd "s-SPC" ) "switch-layout") ;; switch workspace with a message (defcommand change-workspace (n) ((:string n)) "Switch workspace" (run-commands (concatenate 'string "gselect " n)) (echo (concatenate 'string "Switched to " n))) ;; working with emacsclient (defvar *es-win* nil "to hold the window called emacsclient") (defun save-es-called-win () (setf *es-win* (current-window))) (defun return-es-called-window (win) (let* ((group (window-group win)) (frame (window-frame win)) (old-frame (tile-group-current-frame group))) (frame-raise-window group frame win) (focus-all win) (unless (eq frame old-frame) (show-frame-indicator group))))