From 4d905774b8093cc9f0f30632e028adfbd100eb52 Mon Sep 17 00:00:00 2001 From: Daniele Fucini Date: Thu, 8 Oct 2026 16:11:27 +0200 Subject: [PATCH] Cap XMonad volume at 100% and clean up config - Raise volume with wpctl, capped at 100% - Define workspace names once instead of repeating the strings - Remove unused imports and the never-matching transmission-gtk rule - Add missing type signatures - Document why the isFullscreen rule is needed alongside ewmhFullscreen --- .config/xmonad/xmonad.hs | 72 ++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/.config/xmonad/xmonad.hs b/.config/xmonad/xmonad.hs index 2ec8c65..f1a4997 100644 --- a/.config/xmonad/xmonad.hs +++ b/.config/xmonad/xmonad.hs @@ -1,22 +1,17 @@ -- Import -import Data.Default import Data.Monoid import Graphics.X11.ExtraTypes.XF86 import Control.Monad (liftM2) import XMonad import XMonad.Actions.PhysicalScreens -import XMonad.Hooks.DynamicLog import XMonad.Hooks.EwmhDesktops -import XMonad.Hooks.FloatConfigureReq -import XMonad.Hooks.InsertPosition import XMonad.Hooks.ManageDocks import XMonad.Hooks.ManageHelpers import XMonad.Hooks.Rescreen import XMonad.Hooks.StatusBar import XMonad.Hooks.StatusBar.PP import XMonad.Layout.Grid -import XMonad.Layout.LayoutCombinators import XMonad.Layout.Magnifier import XMonad.Layout.NoBorders import XMonad.Layout.PerWorkspace @@ -61,8 +56,10 @@ myFocusBorderColor = "#41a6b5" myKeyboardLayoutIT :: String myKeyboardLayoutIT = " -layout it" +myKeyboardLayoutUS :: String myKeyboardLayoutUS = " -layout us" +myKeyboardLayoutSK :: String myKeyboardLayoutSK = " -layout sk -variant qwerty" myScreenshotDir :: String @@ -145,7 +142,7 @@ myConfig = ] `additionalKeys` [ ((0, xF86XK_AudioMute), spawn "pactl set-sink-mute $(pactl get-default-sink) toggle"), ((0, xF86XK_AudioLowerVolume), spawn "pactl set-sink-volume $(pactl get-default-sink) -10%"), - ((0, xF86XK_AudioRaiseVolume), spawn "pactl set-sink-volume $(pactl get-default-sink) +10%"), + ((0, xF86XK_AudioRaiseVolume), spawn "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 10%+"), ((0, xF86XK_Calculator), spawn "qalculate-gtk"), ((0, xF86XK_HomePage), spawn myBrowser), ((0, xF86XK_Mail), namedScratchpadAction myScratchpads "Mail"), @@ -158,10 +155,19 @@ myConfig = -- Workspaces myWorkspaces :: [String] -myWorkspaces = ["1:\xf489 ", "2:\xe743 ", "3:\xf1b6 ", "4:\xf10b ", "5:\xead9 ", "6:\xeb69 ", "7:\xea7a "] ++ map show [8, 9] +myWorkspaces = [wsTerm, wsWeb, wsGames, wsChat, wsMedia, wsDocs, wsVM] ++ map show [8, 9] + +wsTerm, wsWeb, wsGames, wsChat, wsMedia, wsDocs, wsVM :: String +wsTerm = "1:\xf489 " +wsWeb = "2:\xe743 " +wsGames = "3:\xf1b6 " +wsChat = "4:\xf10b " +wsMedia = "5:\xead9 " +wsDocs = "6:\xeb69 " +wsVM = "7:\xea7a " -- Layout -myLayoutHook = onWorkspace "2:\xe743 " myWebLayout $ onWorkspace "3:\xf1b6 " myGamesLayout $ onWorkspace "5:\xead9 " myVideoLayout myDefaultLayout +myLayoutHook = onWorkspace wsWeb myWebLayout $ onWorkspace wsGames myGamesLayout $ onWorkspace wsMedia myVideoLayout myDefaultLayout where myWebLayout = avoidStruts $ renamed [CutWordsLeft 1] $ spacingWithEdge 3 $ myTabbed ||| tiled ||| Mirror tiled ||| threeCol ||| Grid ||| spiral 0.856 myGamesLayout = avoidStruts $ smartBorders Full @@ -242,41 +248,41 @@ myStartupHook = do myManageHook :: ManageHook myManageHook = composeAll - [ className =? "Gpodder" --> doShift "5:\xead9 ", - className =? "An Anime Game Launcher" --> doShift "3:\xf1b6 ", + [ className =? "Gpodder" --> doShift wsMedia, + className =? "An Anime Game Launcher" --> doShift wsGames, className =? "Qalculate-gtk" --> doFloat, - title =? "Genshin Impact" --> doShift "3:\xf1b6 ", - className =? "Signal" --> doShift "4:\xf10b ", - className =? "Spotify" --> doShift "5:\xead9 ", - className =? "Transmission-gtk" --> doShift "2:\xe743 ", + title =? "Genshin Impact" --> doShift wsGames, + className =? "Signal" --> doShift wsChat, + className =? "Spotify" --> doShift wsMedia, + className =? "Transmission-gtk" --> doShift wsWeb, className =? "Viewnior" --> doFloat, - className =? "Vivaldi-stable" --> doShift "2:\xe743 ", + className =? "Vivaldi-stable" --> doShift wsWeb, className =? "Xmessage" --> doFloat, - className =? "Xreader" --> doShift "6:\xeb69 ", - className =? "calibre" --> doShift "6:\xeb69 ", - className =? "discord" --> doShift "4:\xf10b ", - className =? "explorer.exe" --> doShift "3:\xf1b6 ", + className =? "Xreader" --> doShift wsDocs, + className =? "calibre" --> doShift wsDocs, + className =? "discord" --> doShift wsChat, + className =? "explorer.exe" --> doShift wsGames, className =? "feh" --> doFloat, title =? "glxgears" --> doFloat, - className =? "library_manager" --> doShift "6:\xeb69 ", - className =? "libreoffice-calc" --> doShift "6:\xeb69 ", - className =? "libreoffice-writer" --> doShift "6:\xeb69 ", + className =? "library_manager" --> doShift wsDocs, + className =? "libreoffice-calc" --> doShift wsDocs, + className =? "libreoffice-writer" --> doShift wsDocs, className =? "mpv" --> doFullFloat, - className =? "mpv" --> viewShift "5:\xead9 ", - className =? "freetube" --> doShift "5:\xead9 ", - className =? myTerminal --> doShift "1:\xf489 ", - className =? "scrcpy" --> doShift "5:\xead9 ", - className =? "steam" --> doShift "3:\xf1b6 ", + className =? "mpv" --> viewShift wsMedia, + className =? "freetube" --> doShift wsMedia, + className =? myTerminal --> doShift wsTerm, + className =? "scrcpy" --> doShift wsMedia, + className =? "steam" --> doShift wsGames, className =? "steam_app_109600" --> doFloat, - className =? "steam_app_109600" --> doShift "3:\xf1b6 ", + className =? "steam_app_109600" --> doShift wsGames, className =? "steam_app_289070" --> doFloat, - className =? "steam_app_289070" --> doShift "3:\xf1b6 ", - className =? "transmission-gtk" --> doShift "2:\xe743 ", - className =? "VirtualBox Machine" --> doShift "7:\xea7a ", + className =? "steam_app_289070" --> doShift wsGames, + className =? "VirtualBox Machine" --> doShift wsVM, className =? "VirtualBox Machine" --> doFullFloat, - className =? "VirtualBox Manager" --> doShift "7:\xea7a ", - className =? "zen" --> doShift "2:\xe743 ", + className =? "VirtualBox Manager" --> doShift wsVM, + className =? "zen" --> doShift wsWeb, isDialog --> doFloat, + -- Windows that open already fullscreen; ewmhFullscreen only handles later requests isFullscreen --> doFullFloat ] <+> namedScratchpadManageHook myScratchpads