From fc77a67516a7afbb6de54d02be277992e38bdf90 Mon Sep 17 00:00:00 2001 From: Thomas Ulmer Date: Wed, 29 Oct 2025 09:39:31 -0700 Subject: some cleanup --- xmonad/xmonad.hs | 190 +++++++------------------------------------------------ 1 file changed, 23 insertions(+), 167 deletions(-) (limited to 'xmonad') diff --git a/xmonad/xmonad.hs b/xmonad/xmonad.hs index eaa0f47..863707e 100644 --- a/xmonad/xmonad.hs +++ b/xmonad/xmonad.hs @@ -1,12 +1,3 @@ --- --- xmonad example config file. --- --- A template showing all available configuration hooks, --- and how to override the defaults in your own xmonad.hs conf file. --- --- Normally, you'd only override those defaults you care about. --- - import XMonad import Data.Monoid import System.Exit @@ -32,136 +23,74 @@ import XMonad.Layout.NoBorders (noBorders, smartBorders) import XMonad.Layout.Minimize (minimize) import qualified XMonad.Layout.BoringWindows as BW - --- The preferred terminal program, which is used in a binding below and by --- certain contrib modules. --- myTerminal = "urxvt" +myBrowser = "glide" +myLauncher = "dmenu_run" +myBrightnessDown = "brightnessdown" +myBrightnessUp = "brightnessup" +myVolumeDown = "pactl set-sink-volume @DEFAULT_SINK@ -5%" +myVolumeUp = "pactl set-sink-volume @DEFAULT_SINK@ +5%" +myVolumeMute = "pactl set-sink-mute @DEFAULT_SINK@ toggle" --- Whether focus follows the mouse pointer. myFocusFollowsMouse :: Bool myFocusFollowsMouse = False - --- Whether clicking on a window to focus also passes the click to the window myClickJustFocuses :: Bool myClickJustFocuses = False - --- Width of the window border in pixels. --- myBorderWidth = 1 +myNormalBorderColor = "#bbbbbb" +myFocusedBorderColor = "#6904f7" --- modMask lets you specify which modkey you want to use. The default --- is mod1Mask ("left alt"). You may also consider using mod3Mask --- ("right alt"), which does not conflict with emacs keybindings. The --- "windows key" is usually mod4Mask. --- myModMask = mod4Mask --- The default number of workspaces (virtual screens) and their names. --- By default we use numeric strings, but any string may be used as a --- workspace name. The number of workspaces is determined by the length --- of this list. --- --- A tagging example: --- --- > workspaces = ["web", "irc", "code" ] ++ map show [4..9] --- myWorkspaces = ["1","2","3","4","5","6","7","8","9"] --- Border colors for unfocused and focused windows, respectively. --- -myNormalBorderColor = "#bbbbbb" -myFocusedBorderColor = "#6904f7" - ------------------------------------------------------------------------ --- Key bindings. Add, modify or remove key bindings here. --- 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") - - -- browser - , ((modm, xK_e ), spawn "glide") - - -- goto + , ((modm, xK_d ), spawn myBrowser) + , ((modm, xK_e ), spawn myLauncher) + , ((noModMask , xF86XK_AudioMute), spawn myVolumeMute) + , ((noModMask , xF86XK_AudioLowerVolume), spawn myVolumeDown) + , ((noModMask , xF86XK_AudioRaiseVolume), spawn myVolumeUp) + , ((noModMask , xF86XK_MonBrightnessDown), spawn myBrightnessDown) + , ((noModMask , xF86XK_MonBrightnessUp), spawn myBrightnessUp) + , ((modm .|. shiftMask, xK_g ), gotoMenu) , ((modm .|. shiftMask, xK_b ), bringMenu) - -- 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_k ), windows W.focusUp) + , ((modm, xK_m ), windows W.focusMaster) , ((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 + -- floating -> tiling , ((modm, xK_t ), withFocused $ windows . W.sink) -- push and pop from the hidden window stack , ((modm, xK_backslash), withFocused minimizeWindow) , ((modm .|. shiftMask, xK_backslash), withLastMinimized maximizeWindowAndFocus) - -- Increment the number of windows in the master area , ((modm , xK_comma ), sendMessage (IncMasterN 1)) - - -- Deincrement the number of windows in the master area , ((modm , xK_period), sendMessage (IncMasterN (-1))) - -- Toggle the status bar gap - -- Use this binding with avoidStruts from Hooks.ManageDocks. - -- See also the statusBar function from Hooks.DynamicLog. - -- , ((modm , xK_b ), sendMessage ToggleStruts) - - , ((noModMask , xF86XK_AudioMute), spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle") - , ((noModMask , xF86XK_AudioLowerVolume), spawn "pactl set-sink-volume @DEFAULT_SINK@ -5%") - , ((noModMask , xF86XK_AudioRaiseVolume), spawn "pactl set-sink-volume @DEFAULT_SINK@ +5%") - , ((noModMask , xF86XK_MonBrightnessDown), spawn "brightnessdown") - , ((noModMask , xF86XK_MonBrightnessUp), spawn "brightnessup") - -- Quit xmonad + , ((modm .|. shiftMask, xK_q ), io exitSuccess) - - -- Restart xmonad , ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart") - - -- Run xmessage with a summary of the default keybindings (useful for beginners) - , ((modm .|. shiftMask, xK_slash ), xmessage help) ] ++ @@ -184,8 +113,6 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ ------------------------------------------------------------------------ --- Mouse bindings: default actions bound to mouse events --- myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList -- mod-button1, Set the window to floating mode and move by dragging @@ -204,27 +131,11 @@ myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList ------------------------------------------------------------------------ -- Layouts: - --- You can specify and transform your layouts by modifying these values. --- If you change layout bindings be sure to use 'mod-shift-space' after --- restarting (with 'mod-q') to reset your layout state to the new --- defaults, as xmonad preserves your old layout settings by default. --- --- The available layouts. Note that each layout is separated by |||, --- which denotes layout choice. --- myLayout = smartBorders tiled ||| noBorders Full where - -- default tiling algorithm partitions the screen into two panes tiled = Tall nmaster delta ratio - - -- The default number of windows in the master pane nmaster = 1 - - -- Default proportion of screen occupied by master pane ratio = 3/5 - - -- Percent of screen to increment by when resizing panes delta = 2/100 ------------------------------------------------------------------------ @@ -258,7 +169,7 @@ myManageHook = composeAll -- return (All True) if the default handler is to be run afterwards. To -- combine event hooks use mappend or mconcat from Data.Monoid. -- -myEventHook = handleEventHook def +myEventHook = ewmhDesktopsEventHook -- handleEventHook def ------------------------------------------------------------------------ -- Status bars and logging @@ -296,7 +207,6 @@ main = xmonad $ withEasySB mySB defToggleStrutsKey defaults -- No need to modify this. -- defaults = ewmhFullscreen . ewmh $ def { - -- simple stuff terminal = myTerminal, focusFollowsMouse = myFocusFollowsMouse, clickJustFocuses = myClickJustFocuses, @@ -306,66 +216,12 @@ defaults = ewmhFullscreen . ewmh $ def { normalBorderColor = myNormalBorderColor, focusedBorderColor = myFocusedBorderColor, - -- key bindings keys = myKeys, mouseBindings = myMouseBindings, - -- hooks, layouts layoutHook = minimize . BW.boringWindows $ myLayout, manageHook = myManageHook, handleEventHook = myEventHook, logHook = myLogHook, startupHook = myStartupHook } - --- | Finally, a copy of the default bindings in simple textual tabular format. -help :: String -help = unlines ["The default modifier key is 'alt'. Default keybindings:", - "", - "-- launching and killing programs", - "mod-Shift-Enter Launch xterminal", - "mod-p Launch dmenu", - "mod-Shift-p Launch gmrun", - "mod-Shift-c Close/kill the focused window", - "mod-Space Rotate through the available layout algorithms", - "mod-Shift-Space Reset the layouts on the current workSpace to default", - "mod-n Resize/refresh viewed windows to the correct size", - "mod-Shift-/ Show this help message with the default keybindings", - "", - "-- move focus up or down the window stack", - "mod-Tab Move focus to the next window", - "mod-Shift-Tab Move focus to the previous window", - "mod-j Move focus to the next window", - "mod-k Move focus to the previous window", - "mod-m Move focus to the master window", - "", - "-- modifying the window order", - "mod-Return Swap the focused window and the master window", - "mod-Shift-j Swap the focused window with the next window", - "mod-Shift-k Swap the focused window with the previous window", - "", - "-- resizing the master/slave ratio", - "mod-h Shrink the master area", - "mod-l Expand the master area", - "", - "-- floating layer support", - "mod-t Push window back into tiling; unfloat and re-tile it", - "", - "-- increase or decrease number of windows in the master area", - "mod-comma (mod-,) Increment the number of windows in the master area", - "mod-period (mod-.) Deincrement the number of windows in the master area", - "", - "-- quit, or restart", - "mod-Shift-q Quit xmonad", - "mod-q Restart xmonad", - "mod-[1..9] Switch to workSpace N", - "", - "-- Workspaces & screens", - "mod-Shift-[1..9] Move client to workspace N", - "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", - "", - "-- Mouse bindings: default actions bound to mouse events", - "mod-button1 Set the window to floating mode and move by dragging", - "mod-button2 Raise the window to the top of the stack", - "mod-button3 Set the window to floating mode and resize by dragging"] -- cgit v1.2.3