summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2023-03-12 12:07:09 -0400
committerKjetil Orbekk <kj@orbekk.com>2023-03-12 12:07:09 -0400
commit6eb0161f8ed3b869aa402806b352505dc754c72e (patch)
tree5bebb033d3daf66a8ca8e7f8e0ad5f854ffc3238
parent200a440c8448595b081a8225464f6cf97ef4c03f (diff)
config
-rw-r--r--desktop/.xmonad/xmonad.hs4
-rw-r--r--emacs/.config/emacs-kj/init.el116
-rw-r--r--emacs/.config/emacs-kj/lisp/kj-bindings.el20
-rw-r--r--emacs/.config/emacs-kj/lisp/kj-popup.el83
-rw-r--r--xmonad/xmobar.hs54
-rw-r--r--xmonad/xmonad.hs167
6 files changed, 120 insertions, 324 deletions
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-<tab>" . 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-<tab>" . 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","<skyCondition> <tempC>°C","-L","64","-H","77","--normal","green","--high","red","--low","lightblue"] 36000
- Run Weather "KNYC"
- ["-t", "<fc=lightblue>NYC</fc> <tempC>°C <skyCondition> <rh>%"
- , "-L", "15", "-H", "25", "--normal", "green"
- , "--high", "red", "--low", "lightblue"] 36000
- , Run MPD ["-t",
- "<artist> - <title> <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)]]