# HG changeset patch # User Steve Losh # Date 1761161293 14400 # Node ID 890e2d48b6f7d15df3751cc81678f4197a2fb20f # Parent 73ac57eeaeead0a5a31dd33aeb08edccd527c6b8 More diff -r 73ac57eeaeea -r 890e2d48b6f7 XCompose --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/XCompose Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,103 @@ +include "%L" + + : "°" + + : "α" + : "β" + : "ξ" + : "δ" + : "ε" + : "φ" + : "γ" + : "θ" + : "ι" + : "ϊ" + : "κ" + : "λ" + : "μ" + : "ν" + : "ο" +

: "Π" + : "Ψ" + : "Ρ" + : "Σ" + : "Τ" + : "Υ" + : "Ϋ" + : "Ω" + : "Χ" + : "Η" + : "Ζ" + + : "…" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 73ac57eeaeea -r 890e2d48b6f7 bin/bootstrap.sh --- a/bin/bootstrap.sh Fri Aug 29 14:55:22 2025 -0400 +++ b/bin/bootstrap.sh Wed Oct 22 15:28:13 2025 -0400 @@ -67,5 +67,7 @@ ensure_link "src/dotfiles/w3m-keymap" ".w3m/keymap" ensure_link "src/dotfiles/xbindkeysrc" ".xbindkeysrc" ensure_link "src/dotfiles/xsessionrc" ".xsessionrc" +ensure_link "src/dotfiles/XCompose" ".XCompose" + echo done diff -r 73ac57eeaeea -r 890e2d48b6f7 bin/chars-to-phred --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/chars-to-phred Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,5 @@ +#!/usr/bin/env python3 + +import sys + +print([ord(ch) - ord("!") for ch in sys.stdin.read().rstrip('\n')]) diff -r 73ac57eeaeea -r 890e2d48b6f7 bin/csv2ssv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/csv2ssv Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 + +import sys +import csv + +def run_file(f): + w = csv.writer(sys.stdout, delimiter=' ') + for row in csv.reader(f): + w.writerow(row) + +def run(paths): + for path in paths: + if path == '-': + run_file(sys.stdin) + else: + with open(path) as f: + run_file(f) + +if __name__ == '__main__': + run(sys.argv[1:] or ['-']) diff -r 73ac57eeaeea -r 890e2d48b6f7 bin/hu --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/hu Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -euo pipefail + +htop -u $(whoami) "$@" diff -r 73ac57eeaeea -r 890e2d48b6f7 bin/lrd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/lrd Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -euo pipefail + +cd ~/src/dotfiles/remote/bin + +src="../../bin/$1" +dst="$1" + +type "$src" + +ln -s "$src" "$dst" diff -r 73ac57eeaeea -r 890e2d48b6f7 bin/n50 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/n50 Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +import sys + +def n50(lengths): + if not lengths: + return 0 + + ls = sorted(lengths, reverse=True) + total = sum(ls) + target = total / 2 + + x = 0 + for l in ls: + x += l + if x >= target: + return l + +lengths = [int(line) for line in sys.stdin.readlines() if line] +print(n50(lengths)) + diff -r 73ac57eeaeea -r 890e2d48b6f7 bin/ssv2csv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/ssv2csv Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 + +import sys +import csv + +def run_file(f): + w = csv.writer(sys.stdout, delimiter=',') + for row in csv.reader(f, delimiter=' '): + w.writerow(row) + +def run(paths): + for path in paths: + if path == '-': + run_file(sys.stdin) + else: + with open(path) as f: + run_file(f) + +if __name__ == '__main__': + run(sys.argv[1:] or ['-']) diff -r 73ac57eeaeea -r 890e2d48b6f7 bin/ssv2tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/ssv2tsv Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 + +import sys +import csv + +def run_file(f): + w = csv.writer(sys.stdout, delimiter='\t') + for row in csv.reader(f, delimiter=' '): + w.writerow(row) + +def run(paths): + for path in paths: + if path == '-': + run_file(sys.stdin) + else: + with open(path) as f: + run_file(f) + +if __name__ == '__main__': + run(sys.argv[1:] or ['-']) diff -r 73ac57eeaeea -r 890e2d48b6f7 bin/tsv2ssv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/tsv2ssv Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 + +import sys +import csv + +def run_file(f): + w = csv.writer(sys.stdout, delimiter=' ') + for row in csv.reader(f, delimiter='\t'): + w.writerow(row) + +def run(paths): + for path in paths: + if path == '-': + run_file(sys.stdin) + else: + with open(path) as f: + run_file(f) + +if __name__ == '__main__': + run(sys.argv[1:] or ['-']) diff -r 73ac57eeaeea -r 890e2d48b6f7 fish/config.fish --- a/fish/config.fish Fri Aug 29 14:55:22 2025 -0400 +++ b/fish/config.fish Wed Oct 22 15:28:13 2025 -0400 @@ -52,6 +52,7 @@ abbr --add ai "sudo apt install" abbr --add sc "sudo systemctl" abbr --add paper --set-cursor=% "cp -t . ~/Sync/papers/files/%" +abbr --add i "qimgv" # }}} # Completions {{{ @@ -141,6 +142,13 @@ set -g -x ANSIBLE_NOCOWS 1 +set -g -x DFT_COLOR 'always' # disable stupid pipe detection +set -g -x DFT_WIDTH 10000000000 # stop trying to be smart +set -g -x DFT_TAB_WIDTH 8 # tabs are 8 characters wide +set -g -x DFT_DISPLAY side-by-side +set -g -x DFT_CONTEXT 8 # more context +set -g -x DFT_SYNTAX_HIGHLIGHT off # my eyes + # }}} # Disable Spyware {{{ diff -r 73ac57eeaeea -r 890e2d48b6f7 gitconfig --- a/gitconfig Fri Aug 29 14:55:22 2025 -0400 +++ b/gitconfig Wed Oct 22 15:28:13 2025 -0400 @@ -45,8 +45,13 @@ d = diff di = diff --cached - dl = "!f() { git diff \"$@\" | nvim -R -c 'set ft=diff' -; }; f" - dil = "!f() { git diff --cached \"$@\" | nvim -R -c 'set ft=diff' -; }; f" + dl = "!f() { git diff \"$@\" | less -RS; }; f" + dil = "!f() { git diff --cached \"$@\" | less -RS; }; f" + dv = "!f() { git diff --no-ext-diff \"$@\" | nvim -R -c 'set ft=diff' -; }; f" + div = "!f() { git diff --no-ext-diff --cached \"$@\" | nvim -R -c 'set ft=diff' -; }; f" + s = show --ext-diff + sl = "!f() { git show --ext-diff \"$@\" | less -RS; }; f" + sv = "!f() { git show \"$@\" | nvim -R -c 'set ft=diff' -; }; f" co = checkout --recurse-submodules id = rev-parse @@ -100,8 +105,6 @@ addremove = !git add . && git add -u addrem = !git addremove - sl = "!sh -c 'git show --color=always $1 | less -R' -" - find-merge = "!sh -c 'git log $1..master --merges -n1' -" import-patch = am @@ -164,3 +167,6 @@ textconv = cat [init] defaultBranch = main + +[diff] + external = difft diff -r 73ac57eeaeea -r 890e2d48b6f7 remote/bin/csv2ssv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remote/bin/csv2ssv Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,1 @@ +../../bin/csv2ssv \ No newline at end of file diff -r 73ac57eeaeea -r 890e2d48b6f7 remote/bin/hu --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remote/bin/hu Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,1 @@ +../../bin/hu \ No newline at end of file diff -r 73ac57eeaeea -r 890e2d48b6f7 remote/bin/n50 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remote/bin/n50 Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,1 @@ +../../bin/n50 \ No newline at end of file diff -r 73ac57eeaeea -r 890e2d48b6f7 remote/bin/run-igv --- a/remote/bin/run-igv Fri Aug 29 14:55:22 2025 -0400 +++ b/remote/bin/run-igv Wed Oct 22 15:28:13 2025 -0400 @@ -2,5 +2,4 @@ set -euo pipefail -module load openjdk ~/src/igv/build/IGV-dist/igv.sh diff -r 73ac57eeaeea -r 890e2d48b6f7 remote/bin/slurm-shell --- a/remote/bin/slurm-shell Fri Aug 29 14:55:22 2025 -0400 +++ b/remote/bin/slurm-shell Wed Oct 22 15:28:13 2025 -0400 @@ -2,17 +2,17 @@ set -euo pipefail -read -p "Account? " -acct="$REPLY" +read -p "Account [apboyle0]? " +acct="${REPLY:-apboyle0}" -read -p "Hours? " -hours="$REPLY" +read -p "Hours [4]? " +hours="${REPLY:-4}" -read -p "CPUs? " -cpus="$REPLY" +read -p "CPUs [4]? " +cpus="${REPLY:-4}" -read -p "Memory (gb)? " -mem_gb="$REPLY" +read -p "Memory (gb) [16]? " +mem_gb="${REPLY:-16}" mem_kb=$(( mem_gb * 1024 * 1024 / cpus )) read -p "X11? " diff -r 73ac57eeaeea -r 890e2d48b6f7 remote/bin/ssv2csv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remote/bin/ssv2csv Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,1 @@ +../../bin/ssv2csv \ No newline at end of file diff -r 73ac57eeaeea -r 890e2d48b6f7 remote/bin/ssv2tsv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remote/bin/ssv2tsv Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,1 @@ +../../bin/ssv2tsv \ No newline at end of file diff -r 73ac57eeaeea -r 890e2d48b6f7 remote/bin/tsv2ssv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remote/bin/tsv2ssv Wed Oct 22 15:28:13 2025 -0400 @@ -0,0 +1,1 @@ +../../bin/tsv2ssv \ No newline at end of file diff -r 73ac57eeaeea -r 890e2d48b6f7 stumpwm/applications.lisp --- a/stumpwm/applications.lisp Fri Aug 29 14:55:22 2025 -0400 +++ b/stumpwm/applications.lisp Wed Oct 22 15:28:13 2025 -0400 @@ -55,18 +55,9 @@ (gather (process-info child))))))) -(defun dwim-cwd (&optional (window (current-window))) - (recursively ((proc (process-info (window-pid window))) - (depth 0)) - (or (first (mapcar (lambda (child) - (recur child (1+ depth))) - (children proc))) - (cwd proc)))) - (defcommand terminal-here () () (terminal-in (dwim-cwd))) - (defcommand terminal-apl () () (run-shell-command "st -f 'BQN386 Unicode:style=Regular:size=12'")) diff -r 73ac57eeaeea -r 890e2d48b6f7 stumpwm/external-screens.lisp --- a/stumpwm/external-screens.lisp Fri Aug 29 14:55:22 2025 -0400 +++ b/stumpwm/external-screens.lisp Wed Oct 22 15:28:13 2025 -0400 @@ -24,3 +24,12 @@ :do (uiop:run-program `("xrandr" "--output" ,output ,@commands)))) (t (message "Not configured on this system.")))) +(defcommand screen-alan () () + (hostcase + ((:juss) (loop :with laptop = "eDP" + :with extern = "DisplayPort-0" + :for (output commands) :in `((,laptop ("--mode" "1920x1080")) + (,extern ("--mode" "1920x1080" "--same-as" "eDP"))) + :do (uiop:run-program `("xrandr" "--output" ,output ,@commands)))) + (t (message "Not configured on this system.")))) + diff -r 73ac57eeaeea -r 890e2d48b6f7 stumpwm/igv.lisp --- a/stumpwm/igv.lisp Fri Aug 29 14:55:22 2025 -0400 +++ b/stumpwm/igv.lisp Wed Oct 22 15:28:13 2025 -0400 @@ -1,6 +1,6 @@ (defpackage :stumpwm-user/igv (:use :cl :losh) - (:import-from :stumpwm :defcommand :echo) + (:import-from :stumpwm :defcommand :echo :run-shell-command) (:export :igv/supplementary-on :igv/supplementary-off @@ -51,9 +51,12 @@ (defun goto% () (ppcre:register-groups-bind (chr start end) - ("(chr[A-Za-z0-9_]+)[\\s:]+([\\d,]+)(?:[\\s:]+)?([\\d,]+)?" (pbpaste)) + ("(chr[A-Za-z0-9_]+)[\\s:]+([\\d,]+)(?:[\\s-]+)?([\\d,]+)?" (pbpaste)) (send-igv-command (format nil "goto ~A:~A~@[-~A~]" chr start end)))) +(defun goto-start% () + (send-igv-command "goto chr1:1-1000")) + (defun clear-read-selections% () (dolist (track-name (alignment-tracks%)) (send-igv-command (format nil "clearSelections ~A" track-name)))) @@ -90,6 +93,9 @@ (defcommand igv/goto () () (goto%)) +(defcommand igv/goto-start () () + (goto-start%)) + (defcommand igv/zoom-in () () (zoom-in%)) @@ -103,3 +109,7 @@ (defcommand igv/init () () (send-igv-batch-file "/home/sjl/bin/igv.batch")) + +(defcommand igv/minimera () () + ; hack because h-m is taken + (run-shell-command "~/src/minimera/contrib/minimera-clipboard.sh")) diff -r 73ac57eeaeea -r 890e2d48b6f7 stumpwm/key-mapping.lisp --- a/stumpwm/key-mapping.lisp Fri Aug 29 14:55:22 2025 -0400 +++ b/stumpwm/key-mapping.lisp Wed Oct 22 15:28:13 2025 -0400 @@ -30,6 +30,7 @@ ("H-SunPageDown" "st-font-down") ("H-z" "fullscreen") ("H-Z" "end-zoom") + ("S-H-F1" "bht") ("C-S-F1" "bht") ("H-F4" "switch-yubikeys") ("H-\\" "pass-personal") @@ -135,8 +136,8 @@ (define-top-keys ;; naming ("H-'" "title") ("H-\"" "grename") - ("H-less" "title") - ("H-greater" "grename")) + ;; ("H-less" "title") + ("H-greater" "grename-cwd")) (define-top-keys ;; sound ("H-F1" "mute") @@ -190,7 +191,9 @@ (define-key *keymap/igv* (kbd "R") "igv/clear-read-selections") (define-key *keymap/igv* (kbd "l") "igv/goto") (define-key *keymap/igv* (kbd "L") "igv/goto-read") +(define-key *keymap/igv* (kbd "0") "igv/goto-start") (define-key *keymap/igv* (kbd "i") "igv/init") +(define-key *keymap/igv* (kbd "m") "igv/minimera") (define-key *keymap/igv* (kbd "H-i") "igv") (define-top-keys ;; alternate maps diff -r 73ac57eeaeea -r 890e2d48b6f7 stumpwm/miscellaneous.lisp --- a/stumpwm/miscellaneous.lisp Fri Aug 29 14:55:22 2025 -0400 +++ b/stumpwm/miscellaneous.lisp Wed Oct 22 15:28:13 2025 -0400 @@ -110,3 +110,7 @@ all-groups)) (selected (select-from-menu current-screen groups))) (when selected (stumpwm::switch-to-group (second selected))))) + +(defcommand grename-cwd () () + (when-let ((cwd (dwim-cwd))) + (grename (pathname-name (pathname cwd))))) diff -r 73ac57eeaeea -r 890e2d48b6f7 stumpwm/utils.lisp --- a/stumpwm/utils.lisp Fri Aug 29 14:55:22 2025 -0400 +++ b/stumpwm/utils.lisp Wed Oct 22 15:28:13 2025 -0400 @@ -154,3 +154,11 @@ `(when-let ((,symbol (find-window `(:title ,(ppcre:create-scanner ,title-query))))) ,@body)) + +(defun dwim-cwd (&optional (window (current-window))) + (recursively ((proc (process-info (window-pid window))) + (depth 0)) + (or (first (mapcar (lambda (child) + (recur child (1+ depth))) + (children proc))) + (cwd proc)))) diff -r 73ac57eeaeea -r 890e2d48b6f7 vim/custom-dictionary.utf-8.add --- a/vim/custom-dictionary.utf-8.add Fri Aug 29 14:55:22 2025 -0400 +++ b/vim/custom-dictionary.utf-8.add Wed Oct 22 15:28:13 2025 -0400 @@ -568,3 +568,4 @@ unclustered helicase reauthenticate +virtualenv

: "π" + : "ψ" + : "ρ" + : "σ" + : "τ" + : "υ" + : "ϋ" + : "ω" + : "χ" + : "η" + : "ζ" + + : "Α" + : "Β" + : "Ξ" + : "Δ" + : "Ε" + : "Φ" + : "Γ" + : "Θ" + : "Ι" + : "Ϊ" + : "Κ" + : "Λ" + : "Μ" + : "Ν" + : "Ο" +