From 67349dad2342e6b1a57dedd0a34eafa75ed4d8d1 Mon Sep 17 00:00:00 2001 From: Thanos Apollo Date: Wed, 7 Jun 2023 18:06:23 +0300 Subject: desktop: update stumpwm for debian Still a work in progress but it can be used on my x220 somewhat normally, groups not working properly yet --- desktop.org | 327 +++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 192 insertions(+), 135 deletions(-) (limited to 'desktop.org') diff --git a/desktop.org b/desktop.org index 0de42c7..eae0bb1 100644 --- a/desktop.org +++ b/desktop.org @@ -67,8 +67,8 @@ decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more - active_opacity = 0.95 - inactive_opacity = 0.85 + active_opacity = 0.99 + inactive_opacity = 0.97 rounding = 10 blur = no blur_size = 3 @@ -192,7 +192,7 @@ *** Exec upon start #+begin_src conf :tangle ~/.config/hypr/hyprland.conf exec-once = waybar - exec-once = hyprpaper + exec = hyprpaper exec-once = emacs --daemon exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = nm-applet @@ -202,10 +202,11 @@ preload = ~/wallpapers/wallpaper-cyberpunk.jpg preload = ~/wallpapers/science-athlete.jpg preload = ~/wallpapers/robo-girl.jpg + preload = ~/wallpapers/chalk-board-wallpapers.jpg - wallpaper = DP-1, ~/wallpapers/robo-girl.jpg + wallpaper = DP-1, ~/wallpapers/chalk-board-wallpapers.jpg - wallpaper = HDMI-A-1, ~/wallpapers/robo-girl.jpg + wallpaper = HDMI-A-1, ~/wallpapers/chalk-board-wallpapers.jpg wallpaper = LVDS-1, ~/wallpapers/science-athlete.jpg #+end_src @@ -482,29 +483,72 @@ } #+end_src +* iSync +#+begin_src conf :tangle ~/.mbsyncrc + IMAPAccount public + Host mail.gandi.net + Port 993 + User public@thanosapollo.com + PassCmd "pass show gandi/thanosapollo" + SSLType IMAPS + SSLVersions TLSv1.2 + CertificateFile /etc/ssl/certs/ca-certificates.crt + + IMAPStore public-remote + Account public + + MaildirStore public-local + Path ~/Mail/Public/ + Inbox ~/Mail/Public/Inbox + Trash ~/Mail/Public/Trash/ + SubFolders Verbatim + + Channel public + Far :public-remote: + Near :public-local: + Patterns * + Expunge None + CopyArrivalDate yes + Sync All + Create Both + SyncState * +#+end_src + * Stumpwm #+begin_src lisp :tangle ~/.stumpwm.d/init.lisp (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" - (user-homedir-pathname)))) - (when (probe-file quicklisp-init) - (load quicklisp-init))) + (user-homedir-pathname)))) + (when (probe-file quicklisp-init) + (load quicklisp-init))) (in-package :stumpwm) (setf *default-package* :stumpwm) + (set-module-dir "~/.stumpwm.d/modules") + + (load-module "beckon") + (load-module "end-session") + (load-module "globalwindows") + (load-module "mpd") + (load-module "stump-backlight") + (load-module "urgentwindows") + + (mpd:mpd-connect) + (setf *startup-message* "StumpWM is ready!") ;; autostart (run-shell-command " - emacs --daemon & - feh --bg-scale ~/wallpapers/robo-girl.jpg & - picom & - setxkbmap us -option ctrl:swapcaps") + emacs --daemon & + feh --bg-scale ~/wallpapers/robo-girl.jpg & + picom & + setxkbmap us -option ctrl:swapcaps") (setf *mouse-focus-policy* :click) ;; prefix key (set-prefix-key (kbd "C-t")) + (which-key-mode) ;; prompt the user for an interactive command. The first arg is an ;; optional initial contents. @@ -512,19 +556,24 @@ (let ((cmd (read-one-line (current-screen) ": " :initial-input initial))) (when cmd (eval-command cmd t)))) + + ;(define-key *top-map* (kbd "Super-2") (gselect 1)) ;; Run rofi (define-key *root-map* (kbd "C-r") "exec rofi -show drun") - (define-key *root-map* (kbd ".") "exec rofi-pass") + (define-key *root-map* (kbd "p") "exec ~/Developer/rofi-pass/rofi-pass") + (define-key *root-map* (kbd "f") "float-this") + (define-key *root-map* (kbd "C-f") "unfloat-this") + (define-key *root-map* (kbd "C-s") "hsplit-and-focus") (define-key *root-map* (kbd "e") "exec emacsclient -c") (define-key *root-map* (kbd "C-e") "exec emacs --daemon") ;; Ssh somewhere - (define-key *root-map* (kbd "C-s") "colon1 exec xterm -e ssh ") + (define-key *root-map* (kbd "C-S") "colon1 exec xterm -e ssh ") ;; Lock screen - (define-key *root-map* (kbd "C-l") "exec xlock") + (define-key *root-map* (kbd "C-l") "exec pkill -KILL -u thanos") ;; Audio (define-key *top-map* (kbd "XF86AudioLowerVolume") "exec pamixer -d 5") @@ -535,11 +584,10 @@ (define-key *top-map* (kbd "XF86LaunchA") "exec brightnessctl --device='tpacpi::kbd_backlight' set 1-") ;; Keyboard layout - (define-key *top-map* (kbd "F1") "exec setxkbmap us -option ctrl:swapcaps") - (define-key *top-map* (kbd "F2") "exec setxkbmap gr -option ctrl:swapcaps") - (define-key *top-map* (kbd "F3") "exec setxkbmap my-cyr -option ctrl:swapcaps") + (define-key *top-map* (kbd "F1") "exec setxkbmap us") + (define-key *top-map* (kbd "F2") "exec setxkbmap gr") - ;;; Groups + ;;; Groups ;; Switch to group (define-key *root-map* (kbd "M-1") "gselect 1") (define-key *root-map* (kbd "M-2") "gselect 2") @@ -568,12 +616,51 @@ (run-shell-command (concatenate 'string ,prefix search)))) (make-web-jump "duckduckgo" "mullvad-browser https://duckduckgo.com/?q=") - ;(make-web-jump "imdb" "firefox http://www.imdb.com/find?q=") + ;(make-web-jump "imdb" "firefox http://www.imdb.com/find?q=") ;; C-t M-s is a terrble binding, but you get the idea. (define-key *root-map* (kbd "M-s") "duckduckgo") - + ;; + (defcommand mullvad-browser () () + "Run or raise Firefox." + (sb-thread:make-thread (lambda () (run-or-raise "mullvad-browser" '(:class "mullvad-browser") t nil)))) + + (defcommand delete-window-and-frame () () + "Delete the current frame with its window." + (delete-window) + (remove-split)) + + (defcommand hsplit-and-focus () () + "Create a new frame on the right and focus it." + (hsplit) + (move-focus :right)) + + (defcommand vsplit-and-focus () () + "Create a new frame below and move focus to it." + (vsplit) + (move-focus :down)) + + (defcommand term (&optional program) () + "Invoke a terminal, possibly with a @arg{program}." + (sb-thread:make-thread + (lambda () + (run-shell-command (if program + (format nil "kitty ~A" program) + "kitty"))))) + + (defvar *my/desktop-dump-file* "~/.cache/stump-at-work" + "Where my desktop dump should go and be loaded from.") + + (defcommand dump-work () () + "Save desktop layout when at work." + (dump-desktop-to-file *my/desktop-dump-file*)) + + (defcommand at-work () () + "Restore desktop layout when at work." + (restore-from-file *my/desktop-dump-file*) + (run-shell-command "gpclient") + (run-shell-command "bluetoothctl power on && bluetoothctl connect 14:3F:A6:6D:E3:D9")) ;; UI (setf *message-window-gravity* :center ,*input-window-gravity* :center @@ -601,104 +688,111 @@ (defvar thanos-nord15 "#b48ead") (setq *colors* - `(,thanos-nord1 ;; 0 black + `(,thanos-nord0 ;; 0 black ,thanos-nord11 ;; 1 red ,thanos-nord14 ;; 2 green ,thanos-nord13 ;; 3 yellow ,thanos-nord10 ;; 4 blue ,thanos-nord14 ;; 5 magenta - ,thanos-nord8 ;; 6 cyan + ,thanos-nord8 ;; 6 cyan ,thanos-nord5)) ;; 7 white (when *initializing* (update-color-map (current-screen))) - (set-border-color thanos-nord1) - (set-focus-color thanos-nord1) - (set-unfocus-color thanos-nord3) - (set-float-focus-color thanos-nord1) - (set-float-unfocus-color thanos-nord3) + ;; Modeline phun + (load-module "battery-portable") + (load-module "cpu") + (load-module "mpd") + (load-module "mem") - (set-fg-color thanos-nord4) - (set-bg-color thanos-nord1) + (setf *mode-line-timeout* 2) + (setf *group-format* "%t") + (setf *window-format* "%n: %30t") + + (setf *mode-line-background-color* thanos-nord1 + ,*mode-line-foreground-color* thanos-nord5) + + (setf *mode-line-border-color* thanos-nord1 + ,*mode-line-border-width* 0) + + (setf cpu::*cpu-modeline-fmt* "%c" + cpu::*cpu-usage-modeline-fmt* "^f2^f0^[~A~2D%^]" + mem::*mem-modeline-fmt* "%a%p" + mpd:*mpd-modeline-fmt* "%a - %t" + mpd:*mpd-status-fmt* "%a - %t" + ,*hidden-window-color* "^**" + ,*mode-line-highlight-template* "«~A»") + + (defvar *mode-line-formatter-list* + '(("%g") ("%W") ("^>") ("docker-running" . t) ("mu-unread" . t) ("%m") ("%C") ("%M") ("%B") ("%d")) + "List of formatters for the modeline.") + + (defun generate-modeline (elements &optional not-invertedp rightp) + "Generate a modeline for StumpWM. + ELEMENTS should be a list of `cons'es which `car' is the modeline + formatter or the shell command to run, and their `cdr' is either nil + when the `car' is a formatter and t when it is a shell command." + (when elements + (cons (format nil + " ^[~A^]^(:bg \"~A\") " + (format nil "^(:fg \"~A\")^(:bg \"~A\")^f1~A^f0" + (if (xor not-invertedp rightp) phundrak-nord1 phundrak-nord3) + (if (xor not-invertedp rightp) phundrak-nord3 phundrak-nord1) + (if rightp "" "")) + (if not-invertedp phundrak-nord3 phundrak-nord1)) + (let* ((current-element (car elements)) + (formatter (car current-element)) + (commandp (cdr current-element))) + (cons (if commandp + `(:eval (run-shell-command ,formatter t)) + (format nil "~A" formatter)) + (generate-modeline (cdr elements) + (not not-invertedp) + (if (string= "^>" (caar elements)) t rightp))))))) + + (defcommand reload-modeline () () + "Reload modeline." + (sb-thread:make-thread + (lambda () + (setf *screen-mode-line-format* + (cdr (generate-modeline *mode-line-formatter-list*)))))) - (setf *normal-border-width* 0 - ,*float-window-border* 0 - ,*float-window-title-height* 15 - ,*window-border-style* :none - ,*window-format* "%n:%t") + (when *initializing* + (grename "[EMACS]") + (grename "[BROWSER]") + (grename "[LAMBDA]")) + (clear-window-placement-rules) + (setf *dynamic-group-master-split-ratio* 1/2) + - (setf *key-seq-color* "^2") - (setf *which-key-format* (concat *key-seq-color* "*~5a^n ~a")) - (setf *input-window-gravity* :top + (setf *input-window-gravity* :center ,*message-window-padding* 10 ,*message-window-y-padding* 10 ,*message-window-gravity* :center) - ;; Message window font - (set-font "-xos4-terminus-medium-r-normal--14-140-72-72-c-80-iso8859-15") - - (set-font "-xos4-terminus-medium-r-normal-*-20-*-*-*-*-*-*-*") - - ;;; Define window placement policy... - - - (defvar *thanos/workspaces* - (list "ALPHA" - "BETA" - "GAMMA" - "DELTA" - "EPSILON" - "ZETA" - "LAMBDA")) - ;; I had to put lambda in there! But I don't want the rest of the letters before it. Don't @ me! - - (stumpwm:grename (nth 0 *thanos/workspaces*)) - (dolist (workspace (cdr *thanos/workspaces*)) - (stumpwm:gnewbg workspace)) - - ;; (defvar *move-to-keybinds* (list "!" "@" "#" "$" "%" "^" "&" "*" "(")) - ;; (dotimes (y (length *ce/workspaces*)) - ;; (let ((workspace (write-to-string (+ y 1)))) - ;; (define-key *root-map* (kbd workspace) (concat "gselect " workspace)) - ;; (define-key *root-map* (kbd (nth y *move-to-keybinds*)) (concat "gmove-and-follow " workspace)))) - - ;; Clear rules - ;; (clear-window-placement-rules) - ;; (setf *dynamic-group-master-split-ratio* 1/2) - ;; ;; Last rule to match takes precedence! - ;; ;; TIP: if the argument to :title or :role begins with an ellipsis, a substring - ;; ;; match is performed. - ;; ;; TIP: if the :create flag is set then a missing group will be created and - ;; ;; restored from *data-dir*/create file. - ;; ;; TIP: if the :restonre flag is set then group dump is restored even for an - ;; ;; existing group using *data-dir*/restore file. - ;; (define-frame-preference "Default" - ;; ;; frame raise lock (lock AND raise == jumpto) - ;; (0 t nil :class "Konqueror" :role "...konqueror-mainwindow") - ;; (1 t nil :class "XTerm")) - - ;; (define-frame-preference "Ardour" - ;; (0 t t :instance "ardour_editor" :type :normal) - ;; (0 t t :title "Ardour Session Control") - ;; (0 nil nil :class "XTerm") - ;; (1 t nil :type :normal) - ;; (1 t t :instance "ardour_mixer") - ;; (2 t t :instance "jvmetro") - ;; (1 t t :instance "qjackctl") - ;; (3 t t :instance "qjackctl" :role "qjackctlMainForm")) - - ;; (define-frame-preference "Shareland" - ;; (0 t nil :class "XTerm") - ;; (1 nil t :class "aMule")) - - ;; (define-frame-preference "Emacs" - ;; (1 t t :restore "emacs-editing-dump" :title "...xdvi") - ;; (0 t t :create "emacs-dump" :class "Emacs")) + + (load-module "swm-gaps") + (setf swm-gaps:*head-gaps-size* 0 + swm-gaps:*inner-gaps-size* 2 + swm-gaps:*outer-gaps-size* 4) + + (when *initializing* + (swm-gaps:toggle-gaps)) + + (set-border-color thanos-nord1) + (set-focus-color thanos-nord1) + (set-unfocus-color thanos-nord3) + (set-float-focus-color thanos-nord1) + (set-float-unfocus-color thanos-nord3) + + (set-fg-color thanos-nord4) + (set-bg-color thanos-nord1) + ;; Modeline (setf *window-format* "%m%n%s%c") (setf *screen-mode-line-format* (list "%g ^> %d")) @@ -712,41 +806,4 @@ (setf *group-format* "%t") (setf *window-format* "%n: %30t") - - - (setf *mode-line-background-color* thanos-nord1 - ,*mode-line-foreground-color* thanos-nord5) - - (setf *mode-line-border-color* thanos-nord1 - ,*mode-line-border-width* 0) -#+end_src -* iSync -#+begin_src conf :tangle ~/.mbsyncrc - IMAPAccount public - Host mail.gandi.net - Port 993 - User public@thanosapollo.com - PassCmd "pass show gandi/thanosapollo" - SSLType IMAPS - SSLVersions TLSv1.2 - CertificateFile /etc/ssl/certs/ca-certificates.crt - - IMAPStore public-remote - Account public - - MaildirStore public-local - Path ~/Mail/Public/ - Inbox ~/Mail/Public/Inbox - Trash ~/Mail/Public/Trash/ - SubFolders Verbatim - - Channel public - Far :public-remote: - Near :public-local: - Patterns * - Expunge None - CopyArrivalDate yes - Sync All - Create Both - SyncState * #+end_src -- cgit v1.2.3