add(nixos): xscreensaver for xmonad

This commit is contained in:
Léana 江 2023-12-26 18:06:36 +01:00 committed by Léana 江
parent f4beaf22cb
commit 98d0feb8f0
10 changed files with 118 additions and 34 deletions

View file

@ -42,7 +42,6 @@
"promise-async": { "branch": "main", "commit": "94f6f03c6c1e2aab551aacdf0c1e597a7269abb6" },
"rust-tools.nvim": { "branch": "master", "commit": "0cc8adab23117783a0292a0c8a2fbed1005dc645" },
"tabular": { "branch": "master", "commit": "339091ac4dd1f17e225fe7d57b48aff55f99b23a" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
"telescope.nvim": { "branch": "0.1.x", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
"todo-comments.nvim": { "branch": "main", "commit": "4a6737a8d70fe1ac55c64dfa47fcb189ca431872" },
"twilight.nvim": { "branch": "main", "commit": "8b7b50c0cb2dc781b2f4262a5ddd57571556d1e4" },

View file

@ -20,6 +20,10 @@ import XMonad.Hooks.DynamicLog
import XMonad.Hooks.StatusBar
import XMonad.Hooks.StatusBar.PP
import XMonad.ManageHook
import Graphics.X11.ExtraTypes.XF86
import qualified XMonad.StackSet as W
import NeatInterpolation
@ -28,9 +32,10 @@ import qualified Data.Text as T
xmonadConfig = def
{ modMask = myMod
, terminal = myTerm
, focusFollowsMouse = False
, focusFollowsMouse = True
, borderWidth = 2
, workspaces = myWorkspaces
, manageHook = myManageHook
, layoutHook = myLayoutHook
, startupHook = myStartupHook
, normalBorderColor = "#2a00a6"
@ -47,15 +52,18 @@ myWorkspaces = map show [1..4]
myLayoutHook =
let nmaster = 1
ratio = 3/5
ratio = 1/2
delta = 3/100
tiled = Tall nmaster delta ratio
threeCol = ThreeColMid nmaster delta ratio
mag = magnifiercz' 1.3
in spacingWithEdge 5
$ mag tiled ||| Mirror tiled ||| Full ||| mag threeCol
$ tiled ||| Full ||| (mag $ tiled ||| threeCol)
myManageHook = composeAll
[ className =? "cinny" --> doFloat <+> doShift "4"
]
-- Only remove mappings that needs pass through.
-- If a new mapping is added, the old one is overridden
@ -66,27 +74,51 @@ myUnmaps =
++ [ ((myMod , n)) | n <- [xK_1 .. xK_9] ]
++ [ ((myMod .|. shiftMask, n)) | n <- [xK_1 .. xK_9] ]
toggleXkbLayout = T.unpack
[text|
if setxkbmap -query | grep dvorak-french 2>&1 > /dev/null; then
setxkbmap dvorak
else
setxkbmap dvorak-french
fi
|]
externalScreenOnly = T.unpack
[text|
if xrandr --output DP-1 --left-of eDP-1 --mode 2560x1440 --rate 59.94; then
xrandr --output eDP-1 --off
else
xrandr --auto
fi
|]
myKeymaps =
let remap src dst =
( src
, bindFirst $ dst ++ [ (pure True, uncurry sendKey src) ]
)
toggleXkbLayout = T.unpack
[text|
if setxkbmap -query | grep dvorak-french 2>&1 > /dev/null; then
setxkbmap dvorak
else
setxkbmap dvorak-french
fi
|]
in [ -- shortcuts
((controlMask .|. mod1Mask, xK_f), spawn "firefox")
, ((controlMask .|. mod1Mask, xK_s), spawn "scrot -s")
, ((controlMask .|. mod1Mask, xK_z), spawn "xsreensaver-command -lock")
, ((controlMask .|. mod1Mask, xK_z), spawn "xscreensaver-command -lock")
, ((controlMask .|. mod1Mask, xK_c), spawn $ unwords [ myTerm, "--", "fish -c tmux_cmus" ])
-- TODO: https://libreddit.earth2077.fr/r/xmonad/comments/i1s9do/keybinding_send_key_to_application/
-- toggle external display
, ((controlMask, xK_F7), spawn "xrandr --output DP-1 --left-of eDP-1 --mode 2560x1440 --rate 59.94 && xrandr --output eDP-1 --off || xrandr --auto")
-- FIXME: brightness adjustments
, ((controlMask, xK_F5), spawn "light -S 10")
, ((controlMask, xK_F6), spawn "light -A 10")
-- volume adjustments
, ((controlMask, xK_F1), spawn "amixer set Master toggle")
, ((controlMask, xK_F2), spawn "amixer set Master 5%-")
, ((controlMask, xK_F3), spawn "amixer set Master 5%+")
, ((0, xF86XK_AudioMute), spawn "amixer set Master toggle")
, ((0, xF86XK_AudioLowerVolume), spawn "amixer set Master 5%-")
, ((0, xF86XK_AudioRaiseVolume), spawn "amixer set Master 5%+")
-- tab navigation in firefox
, remap
(controlMask .|. shiftMask, xK_bracketright)
@ -134,6 +166,12 @@ myStartupHook = do
|]
-- notification daemon
spawnOnce "/usr/bin/env wired &"
-- screensaver
spawnOnce "/usr/bin/env xscreensaver --no-splash &"
-- bluetooth applet
spawnOnce "/usr/bin/env blueman-applet &"
-- external display hack
spawnOnce externalScreenOnly
main = xmonad
. ewmhFullscreen . ewmh