5 changed files with 384 additions and 0 deletions
@ -0,0 +1,16 @@
@@ -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 @@
@@ -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