From 6eb0161f8ed3b869aa402806b352505dc754c72e Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sun, 12 Mar 2023 12:07:09 -0400 Subject: config --- desktop/.xmonad/xmonad.hs | 4 +- emacs/.config/emacs-kj/init.el | 116 +++----------------- emacs/.config/emacs-kj/lisp/kj-bindings.el | 20 ++++ emacs/.config/emacs-kj/lisp/kj-popup.el | 83 ++++++++++++++ xmonad/xmobar.hs | 54 ---------- xmonad/xmonad.hs | 167 ----------------------------- 6 files changed, 120 insertions(+), 324 deletions(-) create mode 100644 emacs/.config/emacs-kj/lisp/kj-bindings.el create mode 100644 emacs/.config/emacs-kj/lisp/kj-popup.el delete mode 100644 xmonad/xmobar.hs delete mode 100644 xmonad/xmonad.hs diff --git a/desktop/.xmonad/xmonad.hs b/desktop/.xmonad/xmonad.hs index 375d74d..ee1b10d 100644 --- a/desktop/.xmonad/xmonad.hs +++ b/desktop/.xmonad/xmonad.hs @@ -92,7 +92,7 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ , ((modm, xK_s ), spawn "rofipass") -- launch emacs everywhere - , ((modm, xK_minus ), spawn "emacsclient --eval \"(emacs-everywhere)\"") + , ((modm, xK_t ), spawn "emacsclient -c") -- close focused window , ((modm .|. shiftMask, xK_c ), kill) @@ -134,7 +134,7 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ , ((modm, xK_l ), sendMessage Expand) -- Push window back into tiling - , ((modm, xK_t ), withFocused $ windows . W.sink) + , ((modm .|. shiftMask, xK_t ), withFocused $ windows . W.sink) -- Next monitor , ((modm , xK_Tab ), nextScreen) diff --git a/emacs/.config/emacs-kj/init.el b/emacs/.config/emacs-kj/init.el index 3658e63..bbc6640 100644 --- a/emacs/.config/emacs-kj/init.el +++ b/emacs/.config/emacs-kj/init.el @@ -702,22 +702,6 @@ (kill-region (region-beginning) (region-end)) (backward-kill-word (or arg 1)))) -(use-package emacs - :bind - (("C-w" . kj/kill-word-or-region) - ("C-c d" . kill-region) - ("C-c m" . smerge-ediff) - ("C-c b r" . revert-buffer) - ("C-c r l" . consult-flymake) - ("C-c r f" . eglot-format) - ("C-c r g" . recompile) - ("C-c r a" . eglot-code-actions) - ("C-c r r" . eglot-rename) - ("C-c c i" . insert-char) - ("C-c w u" . winner-undo) - ("C-c w U" . winner-redo) - ("C-" . completion-at-point))) - (let ((google-config-file (expand-file-name "google.el" user-emacs-directory))) (when (file-exists-p google-config-file) @@ -773,93 +757,23 @@ (previous-line kj/some-lines)) ;; Repeat commands (e.g., C-x o o o) -;; (use-package repeat-help -;; :ensure t ;; or :straight t -;; :hook (repeat-mode . repeat-help-mode) -;; :config -;; (setq repeat-help-popup-type "which-key")) (repeat-mode 1) -;;; Window placement -;;; TODO: Test popper.el. -(global-set-key (kbd "C-`") #'window-toggle-side-windows) -(global-set-key (kbd "M-`") #'kj/popup-toggle-override) -(setq window-sides-slots '(0 0 2 2)) ; 2 right side windows -(setq switch-to-buffer-obey-display-actions t) -(setq switch-to-buffer-in-dedicated-window 'pop) - -(defvar kj/popup-override nil) - -(defun kj/popup-clear-overrides () - (interactive) - (dolist (buffer (buffer-list)) - (with-current-buffer buffer - (kill-local-variable 'kj/popup-override)))) - -(defun kj/popup-toggle-override () - (interactive) - (if (local-variable-p 'kj/popup-override) - (kill-local-variable 'kj/popup-override) - (setq-local kj/popup-override - (not (kj/popup-buffer-base (buffer-name))))) - (let ((buffer (buffer-name))) - (switch-to-prev-buffer) - (switch-to-buffer buffer))) - -(defun kj/popup-buffer-base (buffer &optional condition) - (or - (s-matches-p - (rx (| "*Help*" - "*info*" - (seq "*scratch*") - (seq "*Messages*") - (seq "*Warnings*") - (seq "*Backtrace*") - (seq "*eldoc " (* anything) "*") - (seq "*WoMan " (* anything) "*") - (seq "*man " (* anything) "*") - (seq "fig: " (* anything)) - (seq "*htop*" (* anything)) - (seq "*Proced*" (* anything)) - (seq "*eshell*" (* anything)) - (seq "*shell*" (* anything)) - "*Occur*")) buffer) - (with-current-buffer buffer - (apply #'derived-mode-p - '(magit-mode - compilation-mode - shell-mode - comint-mode - Custom-mode ; For customization - fig-commit-mode))))) - -(defun kj/popup-buffer (buffer &optional condition) - (with-current-buffer buffer - (if (local-variable-p 'kj/popup-override) - kj/popup-override - (kj/popup-buffer-base buffer condition)))) - -(setq transient-display-buffer-action - '(display-buffer-in-best-side - (slot . 1) - (inhibit-same-window . t) - (window-parameters - (no-other-window . t)))) - -(defun display-buffer-in-best-side (buffer alist) - (display-buffer-in-side-window - buffer - (append (if (> (frame-width) 160) - '((side . right) - (window-width . 85)) - '((side . bottom) - (window-height . 0.5))) - alist))) - -(add-to-list 'display-buffer-alist - `(kj/popup-buffer - (display-buffer-in-best-side) - (slot . 0))) +;; Disable the built-in repeat-mode hinting +(setq repeat-echo-function #'ignore) + +;; Spawn or hide a which-key popup +(advice-add 'repeat-post-hook :after + (defun repeat-help--which-key-popup () + (if-let ((cmd (or this-command real-this-command)) + (keymap (or repeat-map + (repeat--command-property 'repeat-map)))) + (run-at-time + 0 nil + (lambda () + (which-key--create-buffer-and-show + nil (symbol-value keymap)))) + (which-key--hide-popup)))) ;; Calendar settings. (setq calendar-week-start-day 1) diff --git a/emacs/.config/emacs-kj/lisp/kj-bindings.el b/emacs/.config/emacs-kj/lisp/kj-bindings.el new file mode 100644 index 0000000..37332f2 --- /dev/null +++ b/emacs/.config/emacs-kj/lisp/kj-bindings.el @@ -0,0 +1,20 @@ +;;; -*- lexical-binding: t; -*- + +(use-package emacs + :bind + (("C-w" . kj/kill-word-or-region) + ("C-c s" . shell) + ("C-c e" . eshell) + ("C-c m" . smerge-ediff) + ("C-c b r" . revert-buffer) + ("C-c r l" . consult-flymake) + ("C-c r f" . eglot-format) + ("C-c r g" . recompile) + ("C-c r a" . eglot-code-actions) + ("C-c r r" . eglot-rename) + ("C-c c i" . insert-char) + ("C-c w u" . winner-undo) + ("C-c w U" . winner-redo) + ("C-" . completion-at-point))) + +(provide 'kj-bindings) diff --git a/emacs/.config/emacs-kj/lisp/kj-popup.el b/emacs/.config/emacs-kj/lisp/kj-popup.el new file mode 100644 index 0000000..6bda93d --- /dev/null +++ b/emacs/.config/emacs-kj/lisp/kj-popup.el @@ -0,0 +1,83 @@ +;;; -*- lexical-binding: t; -*- +;;; Window placement +;;; TODO: Test popper.el. +(global-set-key (kbd "C-`") #'window-toggle-side-windows) +(global-set-key (kbd "M-`") #'kj/popup-toggle-override) +(setq window-sides-slots '(0 0 2 2)) ; 2 right side windows +(setq switch-to-buffer-obey-display-actions t) +(setq switch-to-buffer-in-dedicated-window 'pop) + +(defvar kj/popup-override nil) + +(defun kj/popup-clear-overrides () + (interactive) + (dolist (buffer (buffer-list)) + (with-current-buffer buffer + (kill-local-variable 'kj/popup-override)))) + +(defun kj/popup-toggle-override () + (interactive) + (if (local-variable-p 'kj/popup-override) + (kill-local-variable 'kj/popup-override) + (setq-local kj/popup-override + (not (kj/popup-buffer-base (buffer-name))))) + (let ((buffer (buffer-name))) + (switch-to-prev-buffer) + (switch-to-buffer buffer))) + +(defun kj/popup-buffer-base (buffer &optional condition) + (or + (s-matches-p + (rx (| "*Help*" + "*info*" + (seq "*scratch*") + (seq "*Messages*") + (seq "*Warnings*") + (seq "*Backtrace*") + (seq "*eldoc " (* anything) "*") + (seq "*WoMan " (* anything) "*") + (seq "*man " (* anything) "*") + (seq "fig: " (* anything)) + (seq "*htop*" (* anything)) + (seq "*Proced*" (* anything)) + (seq "*eshell*" (* anything)) + (seq "*shell*" (* anything)) + "*Occur*")) buffer) + (with-current-buffer buffer + (apply #'derived-mode-p + '(magit-mode + compilation-mode + shell-mode + comint-mode + Custom-mode ; For customization + fig-commit-mode))))) + +(defun kj/popup-buffer (buffer &optional condition) + (with-current-buffer buffer + (if (local-variable-p 'kj/popup-override) + kj/popup-override + (kj/popup-buffer-base buffer condition)))) + +(setq transient-display-buffer-action + '(display-buffer-in-best-side + (slot . 1) + (inhibit-same-window . t) + (window-parameters + (no-other-window . t)))) + +(defun display-buffer-in-best-side (buffer alist) + (display-buffer-in-side-window + buffer + (append (if (> (frame-width) 160) + '((side . right) + (window-width . 85)) + '((side . bottom) + (window-height . 0.5))) + alist))) + +(add-to-list 'display-buffer-alist + `(kj/popup-buffer + (display-buffer-in-best-side) + (slot . 0))) + +(provide 'kj-popup) diff --git a/xmonad/xmobar.hs b/xmonad/xmobar.hs deleted file mode 100644 index e719488..0000000 --- a/xmonad/xmobar.hs +++ /dev/null @@ -1,54 +0,0 @@ -Config { font = "xft:Source Code Pro:size=8:bold:antialias=true" -- "-*-Fixed-Bold-R-Normal-*-13-*-*-*-*-*-*-*" - , lowerOnStart = True - , overrideRedirect = True - , persistent = False - , bgColor = "black" - , fgColor = "grey" - , position = TopP 0 100 -- TopW L 95 - , commands = [ - -- Run Weather "EGPF" ["-t"," °C","-L","64","-H","77","--normal","green","--high","red","--low","lightblue"] 36000 - Run Weather "KNYC" - ["-t", "NYC °C %" - , "-L", "15", "-H", "25", "--normal", "green" - , "--high", "red", "--low", "lightblue"] 36000 - , Run MPD ["-t", - " - <track>/<plength> <statei> [<flags>]", - "--", "-P", ">>", "-Z", "|", "-S", "><"] 30 - , Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10 - , Run Volume "default" "Master" [ - "-t", "♪ <volume> <status>"] 10 - , Run Brightness ["-t", "☼<percent>%"] 10 - -- , Run Memory ["-t","Mem: <usedratio>%"] 600 - -- , Run Swap [] 10 - , Run Date "%a %b %_d <fc=darkorange>%H:%M:%S</fc>" "date" 10 - , Run DiskU [("/", "<fc=#eeeeee>/</fc> <used>/<size>")] - ["-L", "20", "-H", "50", "-m", "1", "-p", "3"] 1000 - , Run StdinReader - -- , Run DynNetwork [ - -- "--template" , "<dev>: <tx>kB/s|<rx>kB/s" - -- , "--Low" , "1000" -- units: kB/s - -- , "--High" , "5000" -- units: kB/s - -- , "--low" , "green" - -- , "--normal" , "orange" - -- , "--high" , "red" - -- ] 100 - , Run BatteryP ["BAT0"] [ - "--template" , "⚡ <acstatus>" - , "--Low" , "10" -- units: % - , "--High" , "80" -- units: % - , "--low" , "darkred" - , "--normal" , "darkorange" - , "--high" , "darkgreen" - , "--" -- battery specific options - -- discharging status - , "-o" , "<left>% (<timeleft>)" - -- AC "on" status - , "-O" , "<fc=#ee9a00>Charging</fc>" - -- charged status - , "-i" , "<fc=#00ff00>Charged</fc>" - ] 50 - ] - , sepChar = "%" - , alignSep = "}{" - , template = "%StdinReader% }{ %mpd% %default:Master% %bright% %battery% %disku% %date% %KNYC%" - } diff --git a/xmonad/xmonad.hs b/xmonad/xmonad.hs deleted file mode 100644 index b8989c8..0000000 --- a/xmonad/xmonad.hs +++ /dev/null @@ -1,167 +0,0 @@ -import System.Posix.Unistd (nodeName, getSystemID) -import System.Posix.Env (setEnv) -import XMonad -import XMonad.Actions.CycleWS -import XMonad.Config.Kde -import XMonad.Config.Desktop -import XMonad.Hooks.DynamicLog -import XMonad.Hooks.ManageDocks -import XMonad.Hooks.InsertPosition -import XMonad.Util.Run (spawnPipe) -import XMonad.Layout -import XMonad.Layout.OnHost -import XMonad.Layout.NoBorders -import XMonad.Layout.LayoutScreens -import XMonad.Layout.TwoPane -import System.IO -import qualified XMonad.StackSet as W -import qualified Data.Map as M -import System.Exit -import XMonad.Hooks.EwmhDesktops -import Control.Applicative ((<$>), pure) -import XMonad.Hooks.SetWMName -import XMonad.Hooks.ManageHelpers -import Data.List.Split -import Control.Monad - -main = do - host <- (head . splitOn "." . nodeName) <$> getSystemID - setEnv "HOST" host True - -- config <- xmobar (myConfig host) - let config = myConfig host - xmonad config - -layoutScreensHost = "unused" -- orange - -myConfig host = - (docks . ewmh) $ kdeConfig - { layoutHook = smartBorders $ myLayout - , keys = myKeys - , modMask = mod4Mask - , terminal = "urxvt" - , borderWidth = 2 - , focusedBorderColor = "#ff0000" - , normalBorderColor = "#777778" - , workspaces = pure <$> "\"<>PYFAOEUI" - , manageHook = manageHook kdeConfig <+> insertPosition Below Newer <+> (isDialog --> doF W.shiftMaster <+> doF W.swapDown) - } - where myLayout = onHost layoutScreensHost (verticalTiled ||| horizontalTiled ||| Full) $ - layoutHook desktopConfig - verticalTiled = Mirror (Tall 1 (5/100) (2/3)) - horizontalTiled = Tall 0 (5/100) (2/3) - -muteCommand = "pactl set-sink-mute @DEFAULT_SINK@ toggle" -increaseVolumeCommand = "sh -c \"pactl set-sink-mute 0 false ; pactl set-sink-volume @DEFAULT_SINK@ +5%\"" -decreaseVolumeCommand = "sh -c \"pactl set-sink-mute 0 false ; pactl set-sink-volume @DEFAULT_SINK@ -5%\"" - -myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ - - -- launch a terminal - [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf) - - -- launch dmenu - , ((modm, xK_d ), spawn "dmenu_run") - - -- close focused window - , ((modm .|. shiftMask, xK_c ), kill) - - -- Rotate through the available layout algorithms - , ((modm, xK_space ), sendMessage NextLayout) - - -- Reset the layouts on the current workspace to default - , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf) - - -- Resize viewed windows to the correct size - , ((modm, xK_n ), refresh) - - -- Move focus to the next window - -- , ((modm, xK_Tab ), windows W.focusDown) - - -- Move focus to the next window - , ((modm, xK_j ), windows W.focusDown) - - -- Move focus to the previous window - , ((modm, xK_k ), windows W.focusUp ) - - -- Move focus to the master window - , ((modm, xK_m ), windows W.focusMaster ) - - -- Swap the focused window and the master window - , ((modm, xK_Return), windows W.swapMaster) - - -- Swap the focused window with the next window - , ((modm .|. shiftMask, xK_j ), windows W.swapDown ) - - -- Swap the focused window with the previous window - , ((modm .|. shiftMask, xK_k ), windows W.swapUp ) - - -- Shrink the master area - , ((modm, xK_h ), sendMessage Shrink) - - -- Expand the master area - , ((modm, xK_l ), sendMessage Expand) - - -- Push window back into tiling - , ((modm, xK_t ), withFocused $ windows . W.sink) - - -- Next monitor - , ((modm , xK_Tab ), nextScreen) - , ((modm .|. shiftMask, xK_Tab ), swapNextScreen) - - -- Increment the number of windows in the master area - -- , ((modm , xK_comma ), sendMessage (IncMasterN 1)) - , ((modm , xK_semicolon ), sendMessage (IncMasterN 1)) - , ((modm , xK_q ), sendMessage (IncMasterN (-1))) - - , ((modm , xK_w ), spawn muteCommand) - , ((modm , xK_v ), spawn decreaseVolumeCommand) - , ((modm , xK_z ), spawn increaseVolumeCommand) - - , ((modm , xK_s ), (layoutScreens 2 (TwoPane 0.5 0.5))) - , ((modm .|. shiftMask, xK_s ), rescreen) - - -- This is redundant because it's added by the statusBar function. - , ((modm , xK_b ), sendMessage ToggleStruts) - - -- Quit xmonad - -- , ((modm .|. shiftMask, xK_q ), io (exitWith ExitSuccess)) - - -- Restart xmonad - -- , ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart") - - -- Lock screen - , ((modm .|. shiftMask, xK_z), spawn "mate-screensaver-command --lock") - ] - ++ - - -- - -- mod-[1..9], Switch to workspace N - -- mod-shift-[1..9], Move client to workspace N - -- - -- [((m .|. modm, k), windows $ f i) - -- | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9] - -- , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] - -- ++ - - [((m .|. modm, k), windows $ f i) - | (i, k) <- zip (XMonad.workspaces conf) [ - xK_apostrophe - , xK_comma - , xK_period - , xK_p - , xK_y - , xK_f - , xK_a - , xK_o - , xK_e - , xK_u - , xK_i] - , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]] - -- ++ - -- - -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3 - -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3 - -- - -- [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f)) - -- | (key, sc) <- zip [xK_semicolon, xK_q, xK_r] [0..] - -- , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]] -- cgit v1.2.3