diff --git a/programs/xmonad/xmobar/scripts/get_volume.sh b/programs/xmonad/xmobar/scripts/get_volume.sh
new file mode 100755
index 0000000..5673405
--- /dev/null
+++ b/programs/xmonad/xmobar/scripts/get_volume.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+echo $(amixer -D pulse sget Master | egrep -o "[0-9]+%" | head -n 1)
+exit 0
diff --git a/programs/xmonad/xmobar/src/xmobar.hs b/programs/xmonad/xmobar/src/xmobar.hs
index b95e9ec..a003ee7 100644
--- a/programs/xmonad/xmobar/src/xmobar.hs
+++ b/programs/xmonad/xmobar/src/xmobar.hs
@@ -52,7 +52,7 @@ config n = defaultConfig
, alignSep = "}{"
, template = "%XMonadLog%"
<> "} %date% %cpu% | %memory% * %swap% | %wlxd03745e1e87bwi%"
- <> "{ %kbd% %time%"
+ <> "{ Vol: %volume% %kbd% %time%"
}
myCommands :: [Runnable]
@@ -73,7 +73,6 @@ myCommands =
, Run $ Date "%a %d %b %Y" "date" (10 `seconds`)
, Run $ Date "%H:%M:%S" "time" (1 `seconds`)
, Run $ Kbd [("us(dvorak)", "us"), ("ru", "ru")]
- , Run $ XMonadLog
, Run $
Wireless
"wlxd03745e1e87b"
@@ -86,6 +85,8 @@ myCommands =
, "--high" , colorGreen
]
(10 `seconds`)
+ , Run $ Com "/bin/bash" ["-c", "~/.config/xmobar/scripts/get_volume.sh"] "volume" 1
+ , Run XMonadLog
]
where
seconds, minutes :: Int -> Int
diff --git a/programs/xmonad/xmonad.hs b/programs/xmonad/xmonad.hs
index 11c5fa0..8058b09 100644
--- a/programs/xmonad/xmonad.hs
+++ b/programs/xmonad/xmonad.hs
@@ -66,96 +66,100 @@ myFocusedBorderColor = "#f00"
--
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
- -- launch a terminal
- [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
+ -- launch a terminal
+ [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
- -- launch a 'flameshot' to screenshot
- , ((modm .|. shiftMask, xK_s ), safeSpawn "flameshot" ["gui"])
+ -- launch a 'flameshot' to screenshot
+ , ((modm .|. shiftMask, xK_s ), safeSpawn "flameshot" ["gui"])
- -- launch 'dmenu_run' to choose applications
- , ((modm, xK_p ), spawn "dmenu_run")
+ -- launch 'dmenu_run' to choose applications
+ , ((modm, xK_p ), spawn "dmenu_run")
- -- close focused window
- , ((modm .|. shiftMask, xK_c ), kill)
+ -- close focused window
+ , ((modm .|. shiftMask, xK_c ), kill)
- -- Rotate through the available layout algorithms
- , ((modm, xK_space ), sendMessage NextLayout)
+ -- 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)
+ -- 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)
+ -- Resize viewed windows to the correct size
+ , ((modm, xK_n ), refresh)
- -- Move focus to the next window
- , ((modm, xK_j ), 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 previous window
+ , ((modm, xK_k ), windows W.focusUp)
- -- Move focus to the master window
- , ((modm, xK_m ), windows W.focusMaster)
+ -- 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 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 next window
+ , ((modm .|. shiftMask, xK_j ), windows W.swapDown)
- -- Swap the focused window with the previous window
- , ((modm .|. shiftMask, xK_k ), windows W.swapUp)
+ -- Swap the focused window with the previous window
+ , ((modm .|. shiftMask, xK_k ), windows W.swapUp)
- -- Shrink the master area
- , ((modm, xK_h ), sendMessage Shrink)
+ -- Shrink the master area
+ , ((modm, xK_h ), sendMessage Shrink)
- -- Expand the master area
- , ((modm, xK_l ), sendMessage Expand)
+ -- Expand the master area
+ , ((modm, xK_l ), sendMessage Expand)
- -- Push window back into tiling
- , ((modm, xK_t ), withFocused $ windows . W.sink)
+ -- Push window back into tiling
+ , ((modm, xK_t ), withFocused $ windows . W.sink)
- -- Increment the number of windows in the master area
- , ((modm , xK_comma ), sendMessage $ IncMasterN 1)
+ -- 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))
+ -- 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)
+ -- 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)
- -- Quit xmonad
- , ((mod4Mask .|. shiftMask, xK_q ), io exitSuccess)
- -- Lock screen
- , ((mod4Mask , xK_l ), spawn "i3lock -e -c 000000")
+ -- Quit xmonad
+ , ((mod4Mask .|. shiftMask, xK_q ), io exitSuccess)
+ -- Lock screen
+ , ((mod4Mask , xK_l ), spawn "i3lock -e -c 000000")
- -- Restart xmonad
- , ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart")
+ -- Change volume
+ , ((mod4Mask , xK_Up ), spawn "amixer -D pulse sset Master 1%+")
+ , ((mod4Mask , xK_Down), spawn "amixer -D pulse sset Master 1%-")
- -- Run xmessage with a summary of the default keybindings (useful for beginners)
- , ((modm .|. shiftMask, xK_slash ), xmessage help)
+ -- 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)
- --
- -- 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)]]
- ++
+ ]
+ ++
- --
- -- 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_w, xK_e, xK_r] [0..]
- , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
+ --
+ -- 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)]]
+ ++
+
+ --
+ -- 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_w, xK_e, xK_r] [0..]
+ , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
------------------------------------------------------------------------
@@ -215,13 +219,13 @@ myLayout = avoidStruts
-- 'className' and 'resource' are used below.
--
myManageHook = composeAll
- [ className =? "MPlayer" --> doFloat
- , className =? "Gimp" --> doFloat
- , resource =? "desktop_window" --> doIgnore
- , resource =? "kdesktop" --> doIgnore
- -- my libs
- , resource =? "hwt" --> doFloat
- ]
+ [ className =? "MPlayer" --> doFloat
+ , className =? "Gimp" --> doFloat
+ , resource =? "desktop_window" --> doIgnore
+ , resource =? "kdesktop" --> doIgnore
+ -- my libs
+ , resource =? "hwt" --> doFloat
+ ]
------------------------------------------------------------------------
-- Event handling
@@ -335,4 +339,8 @@ help = unlines
, "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"
+ , ""
+ , "-- Volume"
+ , "mod4-Up Increase volume by 1%"
+ , "mod4-Down Decrease volume by 1%"
]