summaryrefslogtreecommitdiffstats
path: root/stumpwm
diff options
context:
space:
mode:
authorGravatar Tom Willemse2014-08-20 23:58:15 +0200
committerGravatar Tom Willemse2014-08-20 23:58:15 +0200
commit17f54b21933bec0ae27c95405d6ef44fa9b0c060 (patch)
treefdaea05781c88b5377071217cd238abc95f0785b /stumpwm
parent54d16f7f4a37fbc2c3d6bb5e9333ed2ce2d7d15a (diff)
downloaddotfiles-17f54b21933bec0ae27c95405d6ef44fa9b0c060.tar.gz
dotfiles-17f54b21933bec0ae27c95405d6ef44fa9b0c060.zip
Update stumpwm config
Diffstat (limited to 'stumpwm')
-rw-r--r--stumpwm/.stumpwmrc199
1 files changed, 145 insertions, 54 deletions
diff --git a/stumpwm/.stumpwmrc b/stumpwm/.stumpwmrc
index cfe0c39..7fd39b5 100644
--- a/stumpwm/.stumpwmrc
+++ b/stumpwm/.stumpwmrc
@@ -1,8 +1,9 @@
;; -*- mode: lisp; -*-
-(require 'cl-ppcre)
(in-package :stumpwm)
+(load (merge-pathnames ".stumpwm.d/games.lisp" (user-homedir-pathname)))
+
(defmacro elisp (&body body)
"Run BODY through emacsclient."
`(sb-ext:run-program
@@ -10,30 +11,6 @@
'("-e" ,(string-downcase (format nil "~S" (cons 'progn body))))
:wait nil))
-;; Naquadah
-(defun colour (key)
- (let ((colours (list :gray1 #x111111
- :gray5 #xc2c2c2
- :gray6 #xededed
- :blue3 #x152e54
- :lwhite #xa5a5a4 :dwhite #x222224
- :lred #xbf6d6d :dred #x744a4a
- :lorange #xbfa47d :dorange #x73634a
- :lyellow #xb2bf6d :dyellow #x6b734a
- :lgreen #x8abf6d :dgreen #x52734a
- :lturquoise #x7dbf97 :dturquoise #x4a735b
- :lcyan #x7dbfbf :dcyan #x4a7373
- :lblue #x6d97bf :dblue #x4a5b73
- :lpurple #x8a7dbf :dpurple #x524a73
- :lmagenta #xb27dbf :dmagenta #x6b4a73
- :lpink #xbf6da4 :dpink #x734a63)))
- (getf colours key)))
-
-(setf *app-menu* '(("Editor" . "emacs")
- ("Browser" . "conkeror")
- ("Terminal" . "urxvt")
- ("Office" . "libreoffice")
- ("Gimp" . "gimp")))
(defvar *conkeror-program* "conkeror"
"The executable to run to start Conkeror.")
(defvar *emacs-program* "emacsclient -c -a \"\""
@@ -42,12 +19,18 @@
"The executable to run to start Firefox.")
(defvar *i3lock-program* "i3lock -c 000000"
"The executable to run to start i3lock.")
-(defvar *urxvt-program* "urxvt"
+(defvar *urxvt-program* "urxvtc"
"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")
+ (define-key m (kbd "l") "load-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."
@@ -63,6 +46,32 @@
(format nil "/home/slash/documents/mail/~A/~A/cur/*.*"
mailbox inbox))))))
+(defun build-mail-part (&optional accumulator value)
+ (if value
+ (destructuring-bind (name . mailbox) value
+ (let ((number (get-mail-count mailbox)))
+ (if (> (or number 0) 0)
+ (if accumulator
+ (concatenate 'string accumulator
+ (format nil " | ~a: ~d" name number))
+ (format nil "~a: ~d" name number))
+ accumulator)))
+ accumulator))
+
+(defun build-mail-string ()
+ (reduce #'build-mail-part
+ '(("ryu" . "ryuslash.org")
+ ("gmail" . "gmail")
+ ("9f" . "ninthfloor")) :initial-value nil))
+
+(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
@@ -88,14 +97,30 @@
(let (mpd-was-playing)
(defun mpd-pause ()
"Pause MPD playback."
- (when (setf mpd-was-playing-p (mpd-playing-p))
+ (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-p
+ (when mpd-was-playing
(sb-ext:run-program "/usr/bin/mpc" '("play") :wait nil))))
+(defun cleanup-frame (window)
+ (let ((cg (current-group)))
+ (unless (frame-windows cg (tile-group-current-frame cg))
+ (run-commands "remove"))))
+
+(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*))
@@ -128,6 +153,30 @@
"Open URxvt"
(run-or-raise *urxvt-program* '(:class "URxvt")))
+(defcommand save-desktop-configuration () ()
+ "Save the current desktop configuration."
+ (dump-desktop-to-file "~/.stumpwm.d/desktop.lisp"))
+
+(defcommand load-desktop-configuration () ()
+ "(Re)load the current desktop configuration."
+ (restore-from-file "~/.stumpwm.d/desktop.lisp"))
+
+(defcommand hsplit-and-balance () ()
+ "Run hsplit followed by balance-frames."
+ (run-commands "hsplit" "balance-frames"))
+
+(defcommand vsplit-and-balance () ()
+ "Run vsplit followed by balance-frames."
+ (run-commands "vsplit" "balance-frames"))
+
+(defun split-and-remove (&rest ignored)
+ (run-commands "vsplit" "balance-frames")
+ (remove-hook *new-window-hook* 'split-and-remove))
+
+(defcommand urxvt-split-balance () ()
+ (add-hook *new-window-hook* 'split-and-remove)
+ (run-shell-command *urxvt-program*))
+
(defun run-stumpwm-hook-on-exit (process)
"Run `*screen-unlocked-hook*' if PROCESS' status is `:exited'."
(when (eq (sb-ext:process-status process) :exited)
@@ -143,56 +192,87 @@ Run `*lock-screen-hook*' before locking it and run
"/usr/bin/i3lock" '("-n" "-c" "000000") :wait nil
:status-hook #'run-stumpwm-hook-on-exit))
-(set-bg-color (colour :dwhite))
-(set-border-color (colour :lwhite))
-(set-fg-color (colour :gray5))
-(set-float-focus-color (colour :lblue))
-(set-float-unfocus-color (colour :dwhite))
-(set-focus-color (colour :lblue))
-(set-font "-*-tamsyn-medium-r-normal-*-17-*-*-*-*-0-iso8859-1")
-(set-unfocus-color (colour :dwhite))
-(set-win-bg-color (colour :gray1))
-
-(setf *colors* (mapcar #'colour '(:lwhite :lred :lgreen :lyellow :lblue
- :lmagenta :lcyan :gray5)))
+(defgame beatbuddy 231040 :type steam)
+(defgame fez 224760 :type steam)
+(defgame guacamelee 214770 :type steam)
+(defgame monaco 113020 :type steam)
+(defgame portal 400 :type steam)
+(defgame swapper 231160 :type steam)
+(defgame dust 236090 :type steam)
+(defgame antichamber "Antichamber/Antichamber.sh" :type direct)
+(defgame biomenace-1 "biomenace/BMENACE1.EXE" :type dos)
+(defgame biomenace-2 "biomenace/BMENACE2.EXE" :type dos)
+(defgame biomenace-3 "biomenace/BMENACE3.EXE" :type dos)
+(defgame command-and-conquer "command_and_conquer/cnc_en.com" :type dos)
+(defgame dune "dune/DUNE.BAT" :type dos)
+(defgame shufflepuck "shufflepuck/SHUFFLE.COM" :type dos)
+(defgame skyroads "skyroads/SKYROADS.EXE" :type dos)
+(defgame theme-park "theme_park/PARK.BAT" :type dos)
+(defgame xcom "UFO/UFO.BAT" :type dos)
+(defgame volfied "Volfied/volfied.exe" :type dos)
+
+(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 "-lispm-*-*-*-*-*-*-*-*-*-*-*-*-*")
+(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* (colour :blue3))
-(setf *mode-line-border-color* (colour :blue3))
-(setf *mode-line-foreground-color* (colour :gray5))
+(setf *mode-line-background-color* "#111111")
+(setf *mode-line-border-width* 0)
+(setf *mode-line-pad-y* 3)
+(setf *mode-line-foreground-color* "#c2c2c2")
+(setf *mode-line-position* :bottom)
(setf *shell-program* (getenv "SHELL"))
(setf *transient-border-width* 1)
(setf *window-border-style* :thin)
(setf *screen-mode-line-format*
- (list "[%n]"
+ (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")))))
+ (or (ignore-errors (window-title (current-window)))
+ "Unknown"))
+ "^>"
+ '(:eval (build-mail-string))
+ " "))
(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)
+(add-hook *destroy-window-hook* 'cleanup-frame)
(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 "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-R") "remove")
+(define-key *top-map* (kbd "s-S") "hsplit-and-balance")
+(define-key *top-map* (kbd "s-b") "emacs-move-focus left")
+(define-key *top-map* (kbd "s-c") "raise-urxvt")
+(define-key *top-map* (kbd "s-e") "raise-emacs")
+(define-key *top-map* (kbd "s-f") "emacs-move-focus right")
+(define-key *top-map* (kbd "s-n") "emacs-move-focus down")
+(define-key *top-map* (kbd "s-p") "emacs-move-focus up")
+(define-key *top-map* (kbd "s-s") "vsplit-and-balance")
+(define-key *top-map* (kbd "s-w") "raise-conkeror")
+(define-key *top-map* (kbd "s-!") "exec")
-(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")
@@ -204,11 +284,18 @@ Run `*lock-screen-hook*' before locking it and run
(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"))
+(undefine-key *root-map* (kbd "S"))
+(undefine-key *root-map* (kbd "s"))
+(undefine-key *root-map* (kbd "e"))
+(undefine-key *root-map* (kbd "c"))
(define-frame-preference "Default"
(0 t nil :class "Emacs")
@@ -223,5 +310,9 @@ Run `*lock-screen-hook*' before locking it and run
(concatenate 'string (sb-ext:posix-getenv "HOME")
"/.stumpwm.d/desktop.lisp"))
+(ignore-errors (load-module "stumptray"))
+(load "~/.local/share/quicklisp/local-projects/stumpwm/contrib/util/stumptray/stumptray.lisp")
+(stumptray::stumptray)
+
(ql:quickload "swank")
(swank:create-server :dont-close t)