aboutsummaryrefslogtreecommitdiffstats
path: root/stumpwmrc
blob: 927c682714a6afbbeddeae1e98f27a5854886342 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
;; -*- mode: lisp; -*-

(in-package :stumpwm-user)

(ql:quickload "swank")

(load-module "swm-gaps")

(defvar *lock-screen-hook* nil
  "Hook that gets run right before the screen gets locked.")

(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'."
  (when (eq (sb-ext:process-status process) :exited)
    (run-hook *screen-unlocked-hook*)))

(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-hook *lock-screen-hook*)
  (sb-ext:run-program
   "/usr/bin/i3lock" '("-n" "-c" "000000")
   :wait nil
   :status-hook #'run-stumpwm-hook-on-exit))

(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")

(swm-gaps:toggle-gaps)

(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"))))

(swank:create-server :dont-close t)