Compare commits

...

6 commits

Author SHA1 Message Date
8e2f5eed4a Replace all ‘lambda’ occurrences with ‘λ’ 2023-06-20 23:06:25 -07:00
b775263a34 Add gaps to my stumpwm configuration
I had to copy in and redefine the ‘stumpwm::maximize-window’ function from the
‘swm-gaps’ package because for some reason ‘(frame-width ...)’ returns a ratio
on my machine (is it because high-dpi, or ultra-wide? I don't know) and not an
integer, which screws up the ‘(setf (xlib:drawable-width ...) ...)’ call.
2023-06-20 22:51:40 -07:00
ac08c5edd8 Update Emacs configuration 2023-06-15 23:23:31 -07:00
752a3152b4 Enable hiding commands that start with a space in ZSH 2023-06-15 23:10:56 -07:00
921724c48f [surfingkeys] Change ‘af’ -> ‘C-u f’ 2023-06-15 23:10:02 -07:00
f64dbccd6f Update Emacs config 2023-06-15 23:00:54 -07:00
15 changed files with 130 additions and 58 deletions

View file

@ -12,7 +12,7 @@ executable bit set. TEXT is a sequence of strings and file-like objects, as in:
(define build
(let ((text (if guile (drop text 2) text)))
(gexp (call-with-output-file (ungexp output "out")
(lambda (port)
(λ (port)
(set-port-encoding! port "UTF-8")
(display (string-append (ungexp-splicing text)) port)
(chmod port #o555))))))

View file

@ -93,6 +93,7 @@
"alias hc=herbstclient\n"
"setopt SHARE_HISTORY\n"
"setopt HIST_IGNORE_ALL_DUPS\n"
"setopt HIST_IGNORE_SPACE\n"
"setopt PROMPT_SUBST\n"
"zle -N x-copy-region-as-kill\n"
"zle -N x-kill-region\n"

View file

@ -218,7 +218,7 @@ horizontal axis.")
(define (home-dunst-config-dunstrc config)
(computed-file "dunstrc"
#~(call-with-output-file #$output
(lambda (port)
(λ (port)
(display #$(serialize-dunst-configuration config)
port)))))

View file

@ -45,7 +45,7 @@
(define (home-guile-config-file config)
(computed-file "guile"
#~(call-with-output-file #$output
(lambda (port)
(λ (port)
(display #$(serialize-guile-configuration config) port)))))
(define (home-guile-config-files config)

View file

@ -55,7 +55,7 @@
(define (build-keybindings bindings)
(append
(list "herbstclient keyunbind --all\n")
(map (lambda (binding)
(map (λ (binding)
(format #f "herbstclient keybind ~a ~a\n"
(kbd (car binding)) (cdr binding)))
bindings)))
@ -70,18 +70,16 @@
(home-herbstluftwm-configuration-key-bindings config))
(list "herbstclient mouseunbind --all\n")
(map (lambda (binding)
(map (λ (binding)
(format #f "herbstclient mousebind ~a ~a\n"
(kbd (car binding)) (cdr binding)))
(home-herbstluftwm-configuration-mouse-bindings config))
(map (lambda (setting)
(map (λ (setting)
(format #f "herbstclient set ~s ~s\n"
(car setting) (cdr setting)))
(home-herbstluftwm-configuration-settings config))
(map (lambda (tag)
(format #f "herbstclient add ~s\n" tag))
tags)
(map (lambda (key tag)
(map (λ (tag) (format #f "herbstclient add ~s\n" tag)) tags)
(map (λ (key tag)
(format #f "herbstclient keybind Mod4-~a use ~s\n" key tag))
(take (home-herbstluftwm-configuration-tag-keys config)
(length tags))
@ -89,26 +87,25 @@
(if (> (length tags) 0)
(list (format #f "herbstclient use ~s\nherbstclient merge_tag default ~s\n" (car tags) (car tags)))
'())
(map (lambda (attribute-pair)
(map (λ (attribute-pair)
(format #f "herbstclient attr ~a ~s\n"
(string-join (map symbol->string (car attribute-pair)) ".")
(cdr attribute-pair)))
(home-herbstluftwm-configuration-attributes config))
(list "herbstclient unrule -F\n")
(map (lambda (rule)
(map (λ (rule)
(format #f "herbstclient rule ~a\n"
(string-join rule " ")))
(home-herbstluftwm-configuration-rules config))
(list "herbstclient unlock\n"
(format #f "herbstclient pad ~a\n"
(string-join (map number->string (home-herbstluftwm-configuration-padding config)) " ")))
(map (lambda (layout-pair)
(map (λ (layout-pair)
(format #f "herbstclient load ~s '~s'\n"
(car layout-pair)
(cdr layout-pair)))
(home-herbstluftwm-configuration-layouts config))
(map (lambda (line)
(format #f "herbstclient ~a\n" line))
(map (λ (line) (format #f "herbstclient ~a\n" line))
(home-herbstluftwm-configuration-extra config))))))
(define (add-herbstluftwm-executable config)

View file

@ -52,7 +52,7 @@
(define (home-mpd-audio-output-list? value)
(and (list? value)
(every (lambda (v) (is-a? v <home-mpd-audio-output>)) value)))
(every (λ (v) (is-a? v <home-mpd-audio-output>)) value)))
(define-maybe string)
(define-maybe home-mpd-audio-output-list)

View file

@ -34,7 +34,7 @@
(symbol->string field)
": {\n"
(apply string-append
(map (lambda (type)
(map (λ (type)
(string-append
" "
(symbol->string (car type))
@ -44,7 +44,7 @@
(string-append
"{ "
(apply string-append
(map (lambda (option)
(map (λ (option)
(string-append (symbol->string (car option)) " = " (if (cdr option) "true" "false")))
(cdr type)))
" },"))
@ -61,7 +61,7 @@
(define (serialize-list field value)
(string-append (symbol->string field) " = [\n"
(apply string-append (map (lambda (item)
(apply string-append (map (λ (item)
(string-append " \"" item "\",\n"))
value))
"];\n"))
@ -166,7 +166,7 @@
(computed-file
"picom.conf"
#~(call-with-output-file #$output
(lambda (port)
(λ (port)
(display #$(serialize-configuration config home-picom-configuration-fields) port)))))
(define (home-picom-files-service config)

View file

@ -95,18 +95,18 @@
"\n}\n")))
(define (format-rofi-theme theme)
(let ((keys (map (lambda (s)
(let ((keys (map (λ (s)
(if (symbol? s)
(symbol->string s)
(object->string s)))
(butlast theme 1)))
(values (car (list-tail theme (- (length theme) 1)))))
(string-append (string-join keys ", ")
" {\n "
(string-join
(map format-rofi-config values)
"\n ")
"\n}\n")))
(string-append (string-join keys ", ")
" {\n "
(string-join
(map format-rofi-config values)
"\n ")
"\n}\n")))
(define (serialize-rofi-theme theme)
(string-join (map format-rofi-theme theme) "\n"))

View file

@ -2,9 +2,12 @@
#:use-module ((gnu services configuration)
#:select (serialize-package
define-configuration))
#:use-module ((gnu packages lisp)
#:select (sbcl))
#:use-module ((gnu packages wm)
#:select (stumpwm
stumpish))
stumpish
sbcl-stumpwm-swm-gaps))
#:use-module ((gnu home services)
#:select (service-type
service-extension
@ -25,13 +28,19 @@
(package
(package stumpwm)
"Package to use for setting Stumpwm")
(gaps-package
(package sbcl-stumpwm-swm-gaps)
"Package to use for setting Stumpwm Gaps")
(stumpish-package
(package stumpish)
"Package to use for setting Stumpish"))
(define (add-stumpwm-packages config)
(list (home-stumpwm-configuration-package config)
(home-stumpwm-configuration-stumpish-package config)))
(list sbcl
(home-stumpwm-configuration-package config)
(list stumpwm "lib")
(home-stumpwm-configuration-stumpish-package config)
(home-stumpwm-configuration-gaps-package config)))
(define (home-stumpwm-config-files config)
`(("stumpwm/config" ,(local-file "stumpwm/config"))))

View file

@ -2,6 +2,7 @@
(in-package :stumpwm-user)
(require 'swank)
(require 'swm-gaps)
(set-prefix-key (kbd "s-x"))
@ -76,6 +77,70 @@ after it has been unlocked."
"%d "))
(mode-line)
;;; Redefine this function again because for some reason on my system
;;; `(frame-width ...)' returns a ratio, not an integer, which is not accepted
;;; by `xlib:drawable-width'.
(defun stumpwm::maximize-window (win)
"Redefined gaps aware maximize function."
(multiple-value-bind (x y wx wy width height border stick)
(stumpwm::geometry-hints win)
(let ((ox 0) (oy 0) (ow 0) (oh 0)
(frame (stumpwm::window-frame win)))
(if (swm-gaps::apply-gaps-p win)
(multiple-value-setq (ox oy ow oh) (swm-gaps::gaps-offsets win)))
;; Only do width or height subtraction if result will be positive,
;; otherwise stumpwm will crash. Also, only modify window dimensions
;; if needed (i.e. window at least fills frame minus gap).
(when (and (< ow width)
(>= width (- (frame-width frame) ow)))
(setf width (- width ow)))
(when (and (< oh height)
(>= height (- (frame-height frame) oh)))
(setf height (- height oh)))
(setf x (+ x ox)
y (+ y oy))
;; This is the only place a window's geometry should change
(set-window-geometry win :x wx :y wy :width width :height height :border-width 0)
(xlib:with-state ((window-parent win))
;; FIXME: updating the border doesn't need to be run everytime
;; the window is maximized, but only when the border style or
;; window type changes. The overhead is probably minimal,
;; though.
(setf (xlib:drawable-x (window-parent win)) x
(xlib:drawable-y (window-parent win)) y
(xlib:drawable-border-width (window-parent win)) border)
;; the parent window should stick to the size of the window
;; unless it isn't being maximized to fill the frame.
(if (or stick
(find *window-border-style* '(:tight :none)))
(setf (xlib:drawable-width (window-parent win)) (window-width win)
(xlib:drawable-height (window-parent win)) (window-height win))
(let ((frame (stumpwm::window-frame win)))
(setf (xlib:drawable-width (window-parent win)) (- (round (frame-width frame))
(* 2 (xlib:drawable-border-width (window-parent win)))
ow)
(xlib:drawable-height (window-parent win)) (- (stumpwm::frame-display-height (window-group win) frame)
(* 2 (xlib:drawable-border-width (window-parent win)))
oh))))
;; update the "extents"
(xlib:change-property (window-xwin win) :_NET_FRAME_EXTENTS
(list wx
(- (xlib:drawable-width (window-parent win)) width wx)
wy
(- (xlib:drawable-height (window-parent win)) height wy))
:cardinal 32))
(update-configuration win))))
(setf swm-gaps:*head-gaps-size* 0)
(setf swm-gaps:*inner-gaps-size* 15)
(setf swm-gaps:*outer-gaps-size* 15)
(swm-gaps:toggle-gaps-on)
(restore-from-file "default")
(define-frame-preference "Default"

View file

@ -61,7 +61,7 @@
(if (> (length buttons) 0)
(list
"--ignore-buttons"
(string-join (map (lambda (i) (format #f "~s" i)) buttons) ","))
(string-join (map (λ (i) (format #f "~s" i)) buttons) ","))
'())))
#:log-file (format #f "~a/.local/var/log/unclutter.log" (getenv "HOME"))))
(stop #~(make-kill-destructor)))))

View file

@ -28,11 +28,11 @@
(define (serialize-keymap parent keymap)
(string-join
(let* ((prefixes (filter (lambda (pair) (list? (cdr pair))) keymap))
(others (filter (lambda (pair) (not (list? (cdr pair)))) keymap))
(names (map (lambda (_) (gensym)) prefixes)))
(let* ((prefixes (filter (λ (pair) (list? (cdr pair))) keymap))
(others (filter (λ (pair) (not (list? (cdr pair)))) keymap))
(names (map (λ (_) (gensym)) prefixes)))
(append
(map (lambda (key-pair sym)
(map (λ (key-pair sym)
(format #f " (define (~s)\n (ungrab-all-keys)\n (remove-all-keys)\n ~a\n (xbindkey-function '(control g) (reset-higher-level-binding ~a))\n (xbindkey-function '(Return) (reset-higher-level-binding ~a))\n (xbindkey-function '(Escape) (reset-higher-level-binding ~a))\n (grab-all-keys))\n"
sym
(serialize-keymap sym (cdr key-pair))
@ -40,7 +40,7 @@
parent
parent))
prefixes names)
(map (lambda (key-pair)
(map (λ (key-pair)
(let ((key (car key-pair)))
(format #f " (xbindkey ~s ~s)\n (xbindkey-function '(release ~s) (reset-higher-level-binding ~a))\n"
(if (string? key) key `(quote ,key))
@ -54,27 +54,27 @@
(apply mixed-text-file
"xbindkeysrc.scm"
"(define (reset-higher-level-binding level) (lambda () (ungrab-all-keys) (remove-all-keys) (level) (grab-all-keys)))\n"
(let* ((prefixes (filter (lambda (pair) (list? (cdr pair)))
(let* ((prefixes (filter (λ (pair) (list? (cdr pair)))
(home-xbindkeys-configuration-keybindings config)))
(others (filter (lambda (pair) (not (list? (cdr pair))))
(others (filter (λ (pair) (not (list? (cdr pair))))
(home-xbindkeys-configuration-keybindings config)))
(names (map (lambda (_) (gensym)) prefixes)))
(names (map (λ (_) (gensym)) prefixes)))
(append
(map (lambda (key-pair sym)
(map (λ (key-pair sym)
(format #f " (define (~s)\n (ungrab-all-keys)\n (remove-all-keys)\n ~a\n (xbindkey-function '(control g) (reset-higher-level-binding ~a))\n (xbindkey-function '(Return) (reset-higher-level-binding ~a))\n (xbindkey-function '(Escape) (reset-higher-level-binding ~a))\n (grab-all-keys))\n"
sym
(serialize-keymap "first-binding" (cdr key-pair))
'first-binding
'first-binding
'first-binding))
sym
(serialize-keymap "first-binding" (cdr key-pair))
'first-binding
'first-binding
'first-binding))
prefixes names)
(list "(define (first-binding)\n"
" \"Top-level bindings\"\n")
(map (lambda (key-pair sym)
(map (λ (key-pair sym)
(let ((key (car key-pair)))
(format #f "(xbindkey-function ~s ~s)\n" (if (string? key) key `(quote ,key)) sym)))
prefixes names)
(map (lambda (key-pair)
(map (λ (key-pair)
(format #f " (xbindkey (quote ~s) ~s) \n" (car key-pair) (cdr key-pair)))
others)
(list " )\n"

View file

@ -21,7 +21,7 @@
(define (kbd str)
(let ((parts (string-split str #\-)))
(string-join
(fold-right (lambda (key previous)
(fold-right (λ (key previous)
(if (null? previous)
(list (convert-key key))
(cons (convert-modifier key) previous)))

View file

@ -11,7 +11,7 @@
#:use-module (oni packages go))
(define-public emacs-oni-config
(let ((commit "4ab9d3c4b3c7ff057b68cc45e39730a406a37612")
(let ((commit "dddc309e9e775069ae09de320668bb3ec8667745")
(revision "0"))
(package
(name "emacs-oni-config")
@ -24,7 +24,7 @@
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "0ipzspx4kkry8gi534yd62qq8506s9phvymw4m719mm4l2wi3mq6"))))
(base32 "0cr05brmjp4fjxmj420613ja6gd8m9jkh32f2vl825d0kn5d0yr6"))))
(build-system emacs-build-system)
(home-page "https://code.ryuslash.org/ryuslash/emacs-config")
(synopsis "My Emacs configuration")
@ -290,8 +290,7 @@ Emacs")))
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chdir-oni-bats
(lambda _
(chdir "oni-bats"))))
(λ _ (chdir "oni-bats"))))
#:include '("\\.el$" "^snippets\\/bats-mode\\/")))
(propagated-inputs
`(("emacs-bats" ,emacs-bats)
@ -309,8 +308,7 @@ Emacs")))
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chdir-oni-org
(lambda _
(chdir "oni-org"))))
(λ _ (chdir "oni-org"))))
#:include '("\\.el$"
"^snippets\\/org-mode\\/"
"^capture-templates\\/"
@ -458,7 +456,7 @@ Emacs")))
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chdir-oni-conf
(lambda _ (chdir "oni-conf"))))
(λ _ (chdir "oni-conf"))))
#:include '("\\.el$"
"^snippets\\/conf-mode\\/")))
(propagated-inputs
@ -498,7 +496,7 @@ Emacs")))
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chdir-oni-csharp
(lambda _ (chdir "oni-csharp"))))
(λ _ (chdir "oni-csharp"))))
#:include '("\\.el$" "^snippets\\/")))
(propagated-inputs
`(("emacs-csharp-mode" ,emacs-csharp-mode)
@ -519,7 +517,7 @@ Emacs")))
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chdir-oni-css
(lambda _ (chdir "oni-css"))))
(λ _ (chdir "oni-css"))))
#:include '("\\.el$" "^snippets\\/")))
(propagated-inputs
`(("emacs-oni-company" ,emacs-oni-company)
@ -548,7 +546,7 @@ Emacs")))
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chdir-oni-elisp
(lambda _ (chdir "oni-elisp"))))
(λ _ (chdir "oni-elisp"))))
#:include '("\\.el$" "^snippets\\/")))
(propagated-inputs
`(("emacs-oni-company" ,emacs-oni-company)

View file

@ -25,6 +25,7 @@ api.map('r', 'D');
api.map('c0', 'yy');
api.map('<Alt-p>', 'E');
api.map('<Alt-n>', 'R');
api.map('<Ctrl-u>f', 'af');
api.unmap('h');
api.unmap('j');
@ -34,6 +35,7 @@ api.unmap('D');
api.unmap('yy');
api.unmap('E');
api.unmap('R');
api.unmap('af');
api.map('<Ctrl-v>', 'P');
api.map('<Alt-v>', 'U');