5 changed files with 384 additions and 0 deletions
@ -0,0 +1,16 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
VOLUME_LEVEL=$(amixer sget Master \ |
||||||
|
| tail -n 1 \ |
||||||
|
| awk -F'[]%[]' ' |
||||||
|
/%/ { |
||||||
|
if ($7 == "off") { |
||||||
|
print "婢" |
||||||
|
} else { |
||||||
|
print "墳 " $2 "%" |
||||||
|
} |
||||||
|
}' |
||||||
|
) |
||||||
|
|
||||||
|
echo $VOLUME_LEVEL |
||||||
|
|
@ -0,0 +1,306 @@ |
|||||||
|
|
||||||
|
-- |
||||||
|
-- Изменён: Пт 17 янв 2020 22:23:35 |
||||||
|
-- |
||||||
|
|
||||||
|
------------------------------------------------------------------------ |
||||||
|
-- Используемые библиотеки |
||||||
|
------------------------------------------------------------------------ |
||||||
|
|
||||||
|
import XMonad hiding ((|||)) |
||||||
|
|
||||||
|
import XMonad.Layout.LayoutCombinators (JumpToLayout(..), (|||)) |
||||||
|
|
||||||
|
import XMonad.Util.EZConfig |
||||||
|
|
||||||
|
import XMonad.Hooks.DynamicLog (ppCurrent, ppHiddenNoWindows, ppLayout, ppUrgent, |
||||||
|
ppSep, ppTitle, ppVisible, ppWsSep, shorten, |
||||||
|
statusBar, wrap, xmobarColor, xmobarPP) |
||||||
|
|
||||||
|
import XMonad.Layout.Tabbed (shrinkText, tabbed, activeBorderColor, activeColor, |
||||||
|
activeTextColor, fontName, inactiveBorderColor, |
||||||
|
inactiveColor, inactiveTextColor, urgentTextColor) |
||||||
|
|
||||||
|
import XMonad.Util.Run (spawnPipe) |
||||||
|
import XMonad.Util.Cursor (setDefaultCursor) |
||||||
|
|
||||||
|
import XMonad.Hooks.EwmhDesktops (ewmh, fullscreenEventHook) |
||||||
|
|
||||||
|
import qualified XMonad.StackSet as W |
||||||
|
import qualified Data.Map as M |
||||||
|
|
||||||
|
------------------------------------------------------------------------ |
||||||
|
-- Функции |
||||||
|
------------------------------------------------------------------------ |
||||||
|
|
||||||
|
terminalEmulator = "xstab" |
||||||
|
|
||||||
|
-- mod1Mask - Alt_L |
||||||
|
-- mod4Mask - Super_L (Win) |
||||||
|
metaKey = mod1Mask |
||||||
|
|
||||||
|
desktops = ["1:α","2:β","3:γ","4:δ"] |
||||||
|
|
||||||
|
borderColourNormal = "#dddddd" |
||||||
|
borderColourFocused = "#ff0000" |
||||||
|
|
||||||
|
colourDefaultFG = "black" |
||||||
|
colourDefaultBG = "gray" |
||||||
|
|
||||||
|
------------------------------------------------------------------------ |
||||||
|
-- Функции |
||||||
|
------------------------------------------------------------------------ |
||||||
|
|
||||||
|
colour colourName = wrap ("<fc=" ++ colourName ++ ">") "</fc>" |
||||||
|
|
||||||
|
------------------------------------------------------------------------ |
||||||
|
-- Key bindings. Add, modify or remove key bindings here. |
||||||
|
------------------------------------------------------------------------ |
||||||
|
keybindings conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ |
||||||
|
-- launch a terminal |
||||||
|
[ ((modm, xK_t ), spawn $ XMonad.terminal conf) |
||||||
|
|
||||||
|
-- launch dmenu |
||||||
|
, ((modm, xK_x ), 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) |
||||||
|
|
||||||
|
--, ((modm, xK_o ), setLayout $ XMonad.layoutHook "ti") |
||||||
|
|
||||||
|
-- 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 .|. shiftMask, xK_h ), sendMessage Shrink) |
||||||
|
|
||||||
|
-- Expand the master area |
||||||
|
, ((modm .|. shiftMask, xK_l ), sendMessage Expand) |
||||||
|
|
||||||
|
-- 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)) |
||||||
|
|
||||||
|
-- Deincrement the number of windows in the master area |
||||||
|
, ((modm , xK_period), sendMessage (IncMasterN (-1))) |
||||||
|
|
||||||
|
-- Restart xmonad |
||||||
|
, ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart") |
||||||
|
] |
||||||
|
++ |
||||||
|
|
||||||
|
-- |
||||||
|
-- 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)]] |
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------------------ |
||||||
|
-- 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 |
||||||
|
[ ((modm, button1), (\w -> focus w >> mouseMoveWindow w >> windows W.shiftMaster)) |
||||||
|
|
||||||
|
-- mod-button2, Raise the window to the top of the stack |
||||||
|
, ((modm, button2), (\w -> focus w >> windows W.shiftMaster)) |
||||||
|
|
||||||
|
-- mod-button3, Set the window to floating mode and resize by dragging |
||||||
|
, ((modm, button3), (\w -> focus w >> mouseResizeWindow w >> windows W.shiftMaster)) |
||||||
|
|
||||||
|
-- you may also bind events to the mouse scroll wheel (button4 and button5) |
||||||
|
] |
||||||
|
|
||||||
|
------------------------------------------------------------------------ |
||||||
|
-- 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. |
||||||
|
-- |
||||||
|
------------------------------------------------------------------------ |
||||||
|
|
||||||
|
myTabsStyle = def { |
||||||
|
inactiveColor = "darkgrey", |
||||||
|
inactiveTextColor = "black", |
||||||
|
inactiveBorderColor = "darkgrey", |
||||||
|
activeColor = "grey", |
||||||
|
activeTextColor = colourDefaultFG, |
||||||
|
activeBorderColor = "grey", |
||||||
|
urgentTextColor = "red", |
||||||
|
fontName = "xft:NotoMono Nerd Font:pixelsize=14:antialias=true" |
||||||
|
} |
||||||
|
|
||||||
|
myLayout = tiled ||| Mirror tiled ||| tabbed shrinkText myTabsStyle ||| 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 = 1/2 |
||||||
|
|
||||||
|
-- Percent of screen to increment by when resizing panes |
||||||
|
delta = 3/100 |
||||||
|
|
||||||
|
------------------------------------------------------------------------ |
||||||
|
-- Window rules: |
||||||
|
|
||||||
|
-- Execute arbitrary actions and WindowSet manipulations when managing |
||||||
|
-- a new window. You can use this to, for example, always float a |
||||||
|
-- particular program, or have a client always appear on a particular |
||||||
|
-- workspace. |
||||||
|
-- |
||||||
|
-- To find the property name associated with a program, use |
||||||
|
-- > xprop | grep WM_CLASS |
||||||
|
-- and click on the client you're interested in. |
||||||
|
-- |
||||||
|
-- To match on the WM_NAME, you can use 'title' in the same way that |
||||||
|
-- 'className' and 'resource' are used below. |
||||||
|
-- |
||||||
|
myManageHook = composeAll |
||||||
|
[ className =? "MPlayer" --> doFloat |
||||||
|
, className =? "Gimp" --> doFloat |
||||||
|
, resource =? "desktop_window" --> doIgnore |
||||||
|
, resource =? "kdesktop" --> doIgnore ] |
||||||
|
|
||||||
|
------------------------------------------------------------------------ |
||||||
|
-- Event handling |
||||||
|
|
||||||
|
-- * EwmhDesktops users should change this to ewmhDesktopsEventHook |
||||||
|
-- |
||||||
|
-- Defines a custom handler function for X Events. The function should |
||||||
|
-- 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 <+> fullscreenEventHook |
||||||
|
|
||||||
|
------------------------------------------------------------------------ |
||||||
|
-- Status bars and logging |
||||||
|
|
||||||
|
-- Perform an arbitrary action on each internal state change or X event. |
||||||
|
-- See the 'XMonad.Hooks.DynamicLog' extension for examples. |
||||||
|
-- |
||||||
|
myLogHook = return () |
||||||
|
|
||||||
|
------------------------------------------------------------------------ |
||||||
|
-- Startup hook |
||||||
|
|
||||||
|
-- Курсор в виде стрелки |
||||||
|
myStartupHook = setDefaultCursor xC_left_ptr |
||||||
|
|
||||||
|
-- A structure containing your configuration settings, overriding |
||||||
|
-- fields in the default config. Any you don't override, will |
||||||
|
-- use the defaults defined in xmonad/XMonad/Config.hs |
||||||
|
-- |
||||||
|
-- No need to modify this. |
||||||
|
-- |
||||||
|
defaults = def { |
||||||
|
-- simple stuff |
||||||
|
terminal = terminalEmulator, |
||||||
|
focusFollowsMouse = False, |
||||||
|
clickJustFocuses = True, |
||||||
|
borderWidth = 1, |
||||||
|
modMask = metaKey, |
||||||
|
workspaces = desktops, |
||||||
|
normalBorderColor = borderColourNormal, |
||||||
|
focusedBorderColor = borderColourFocused, |
||||||
|
|
||||||
|
-- key bindings |
||||||
|
keys = keybindings, |
||||||
|
mouseBindings = myMouseBindings, |
||||||
|
|
||||||
|
-- hooks, layouts |
||||||
|
layoutHook = myLayout, |
||||||
|
manageHook = myManageHook, |
||||||
|
handleEventHook = myEventHook, |
||||||
|
logHook = myLogHook, |
||||||
|
startupHook = myStartupHook |
||||||
|
} `additionalKeysP` |
||||||
|
[ ("M-o", sendMessage $ JumpToLayout "Tabbed Simplest") ] |
||||||
|
|
||||||
|
------------------------------------------------------------------------ |
||||||
|
-- |
||||||
|
-- xmobar |
||||||
|
-- |
||||||
|
------------------------------------------------------------------------ |
||||||
|
|
||||||
|
xmobarCmd = "xmobar" |
||||||
|
|
||||||
|
xmobarTitleColor = "#FF86B0" |
||||||
|
xmobarCurrentWorkspaceColor = "#bd2c40" |
||||||
|
|
||||||
|
layoutShortName fullName = colour "darkblue" $ |
||||||
|
case fullName of |
||||||
|
"Full" -> "ﯸ" |
||||||
|
"Tall" -> "ﯼ" |
||||||
|
"Mirror Tall" -> "ﯹ" |
||||||
|
"Tabbed Simplest" -> "ﯺ" |
||||||
|
_ -> fullName |
||||||
|
|
||||||
|
myPP = xmobarPP { |
||||||
|
ppCurrent = xmobarColor xmobarCurrentWorkspaceColor "", |
||||||
|
ppTitle = xmobarColor xmobarTitleColor "" . shorten 100 . colour "brown", |
||||||
|
ppSep = " | ", |
||||||
|
ppWsSep = " | ", |
||||||
|
ppVisible = colour "darkgreen" . wrap "(" ")", |
||||||
|
ppUrgent = colour "darkred" . wrap "*" "*", |
||||||
|
ppHiddenNoWindows = showNamedWorkspaces, |
||||||
|
ppLayout = layoutShortName |
||||||
|
} where showNamedWorkspaces wsId = if any (`elem` wsId) "αβγδ" then wsId else "" |
||||||
|
|
||||||
|
-- Скрытие xmobar |
||||||
|
toggleStrutsKey XConfig { XMonad.modMask = modMask } = ( modMask, xK_b ) |
||||||
|
|
||||||
|
-- ------------------------------------------------------------------- |
||||||
|
|
||||||
|
main = xmonad =<< statusBar xmobarCmd myPP toggleStrutsKey (ewmh defaults) |
||||||
|
|
Loading…
Reference in new issue