(in-package :stumpwm-user) (defvar *distraction-hook* nil "Hook where application scan register functions to call when I'm distracted.") (defcommand distraction! () () (run-hook *distraction-hook*)) (define-key *top-map* (kbd "s-d") "distraction!") (defun clock-out () (sb-ext:run-program *shell-program* '("-c" "emacsclient --no-wait --eval \"(org-clock-out)\""))) (add-hook *screen-locking-hook* 'clock-out) (add-hook *distraction-hook* 'clock-out) (defun pause-music () (sb-ext:run-program *shell-program* '("-c" "[ \"$(playerctl status)\" = \"Playing\" ]] && playerctl pause"))) (add-hook *screen-locking-hook* 'pause-music) (add-hook *distraction-hook* 'pause-music) (defun pause-notifications () (sb-ext:run-program *shell-program* '("-c" "dunstctl set-paused true"))) (defun resume-notifications () (sb-ext:run-program *shell-program* '("-c" "dunstctl set-paused false"))) (add-hook *screen-locking-hook* 'pause-notifications) (add-hook *screen-unlocked-hook* 'resume-notifications) (defvar *applications* nil) (defun pop-os-load-applications () (mapcar (lambda (s) (split-string s " ")) (split-string (with-output-to-string (mystr) (sb-ext:run-program "/home/tomwillemsen/code/diamond-interactive/chanced-scripts/list-desktop-files" '() :output mystr))))) (define-stumpwm-type :application (input prompt) (or (argument-pop input) (let ((applications (setf *applications* (or *applications* (pop-os-load-applications))))) (cadr (assoc (completing-read (current-screen) prompt (mapcar #'car applications) :require-match t) applications :test 'string=))))) (defcommand reload-applications () () (pop-os-load-applications) (message "OK!")) (defcommand run-application (application) ((:application "Application: ")) (sb-ext:run-program "/usr/bin/gtk-launch" (list application) :wait nil)) (define-key *user-bindings* (kbd "a") "run-application") (defvar *xrandr-program* "/usr/bin/xrandr") (defcommand laptop-screen () () (sb-ext:run-program *xrandr-program* '("--output" "eDP-1" "--primary" "--auto" "--output" "HDMI-1" "--off" "--output" "DP-1" "--off")) (if (> (length (screen-heads (current-screen))) 1) (refresh-heads))) (defcommand samsung-screen () () (sb-ext:run-program *xrandr-program* '("--output" "eDP-1" "--off" "--output" "DP-1" "--auto" "--primary")) (when (and (= 1 (length (screen-heads (current-screen)))) (/= (screen-width (current-screen)) (frame-width (car (screen-heads (current-screen)))))) (refresh-heads))) (defcommand laptop+mnn-screen () () (sb-ext:run-program *xrandr-program* '("--output" "eDP-1" "--auto" "--output" "HDMI-1" "--auto" "--primary" "--right-of" "eDP-1")))