diff --git a/etc/soft/xmobar/xmobarrc b/etc/soft/xmobar/xmobarrc
new file mode 100644
index 0000000..c65de44
--- /dev/null
+++ b/etc/soft/xmobar/xmobarrc
@@ -0,0 +1,29 @@
+Config {
+ font = "xft:NotoMono Nerd Font:pixelsize=16:antialias=true"
+ , position = Static { xpos = 0, ypos = 0, width = 1920, height = 22 }
+ , bgColor = "#D9D9D9"
+ , fgColor = "#000000"
+ , borderColor = "#444"
+ , border = BottomB
+
+ , sepChar = "="
+ , alignSep = "}{"
+ , template = " =StdinReader= }{ =dates= =mail= | =battery= | =vol= | [=kbd=] | =date= "
+
+ , lowerOnStart = True
+ , hideOnStart = False
+ , allDesktops = True
+ , overrideRedirect = True
+ , pickBroadest = False
+ , persistent = True
+
+ , commands = [
+ Run StdinReader,
+ Run Com "/bin/bash" ["-c", "~/.xmonad/scripts/volume.sh"] "vol" 10,
+ Run Com "/bin/bash" ["-c", "~/.xmonad/scripts/dates.sh"] "dates" 86400,
+ Run Com "/bin/bash" ["-c", "~/.xmonad/scripts/battery.sh"] "battery" 50,
+ Run Com "/bin/bash" ["-c", "cat $MD/new"] "mail" 300,
+ Run Date " %H:%M %F" "date" 100,
+ Run Kbd [("us", "US"), ("ru", "RU"), ("gr(polytonic)", "GR")]
+ ]
+}
diff --git a/etc/wm/xmonad/scripts/battery.sh b/etc/wm/xmonad/scripts/battery.sh
new file mode 100755
index 0000000..6c0e3ef
--- /dev/null
+++ b/etc/wm/xmonad/scripts/battery.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+#Создан: Чт 16 янв 2020 18:15:31
+#Изменён: Чт 16 янв 2020 22:12:52
+
+acpi -V | grep 'Adapter.*on-line' >/dev/null && POWER_ON=1
+
+LEVEL=$(acpi | grep -o -E "[0-9]+%")
+LEVEL=${LEVEL//%}
+
+if [ -n "$POWER_ON" ]; then
+ COLOUR=darkgreen
+ ICON=""
+elif [ "$LEVEL" -lt 10 ]; then
+ COLOUR=red
+ ICON=""
+elif [ "$LEVEL" -lt 80 ]; then
+ COLOUR=brown
+ ICON=""
+else
+ COLOUR=darkgreen
+ ICON=""
+fi
+
+echo "${ICON} ${LEVEL}%"
+
diff --git a/etc/wm/xmonad/scripts/dates.sh b/etc/wm/xmonad/scripts/dates.sh
new file mode 100755
index 0000000..c851aab
--- /dev/null
+++ b/etc/wm/xmonad/scripts/dates.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+#Создан: Чт 16 янв 2020 18:28:29
+#Изменён: Пт 17 янв 2020 09:33:48
+
+dates | grep '/' >/dev/null && echo ' ' || echo ""
+
diff --git a/etc/wm/xmonad/scripts/volume.sh b/etc/wm/xmonad/scripts/volume.sh
new file mode 100755
index 0000000..9a27ae0
--- /dev/null
+++ b/etc/wm/xmonad/scripts/volume.sh
@@ -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
+
diff --git a/etc/wm/xmonad/xmonad.hs b/etc/wm/xmonad/xmonad.hs
new file mode 100644
index 0000000..4c90353
--- /dev/null
+++ b/etc/wm/xmonad/xmonad.hs
@@ -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 ("") ""
+
+------------------------------------------------------------------------
+-- 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)
+