Да, при таком раскладе баг с «замораживанием» фрейма себя не проявляет, спасибо.
Up: проявляет, но реже
Модератор: Модераторы разделов
Код: Выделить всё
XIO: fatal IO error 11 (Ресурс временно недоступен) on X server ":5.0"
after 39026 requests (39025 known processed) with 0 events remaining.
xinit: connection to X server lost
Код: Выделить всё
$ xmodmap
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock ISO_Next_Group (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Multi_key (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Код: Выделить всё
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, TypeSynonymInstances, FlexibleContexts, NoMonomorphismRestriction #-}
import XMonad
import qualified XMonad.StackSet as W -- to shift and float windows
import Data.Ratio
import qualified Data.Map as M
import XMonad.Actions.CycleWS
import XMonad.Actions.WindowGo
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.FadeInactive
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.SetWMName
import XMonad.Layout.Grid
import XMonad.Layout.LayoutModifier
import XMonad.Layout.PerWorkspace
import XMonad.Layout.LayoutCombinators hiding ( (|||) )
import XMonad.Layout.IM
import XMonad.Layout.IndependentScreens
--import XMonad.Layout.ShowWName
import XMonad.Util.EZConfig
import XMonad.Util.Run
import XMonad.Util.WindowProperties
import Control.Monad
import Graphics.X11.ExtraTypes.XF86
import Foreign.C.Types
-- Взять значение свойства окна
getProp :: Atom -> Window -> X (Maybe [CLong])
getProp a w = withDisplay $ \dpy -> io $ getWindowProperty32 dpy a w
-- Эта функция проверяет, выставлено ли свойство окна name в значение value
checkAtom name value = ask >>= \w -> liftX $ do
a <- getAtom name
val <- getAtom value
mbr <- getProp a w
case mbr of
Just [r] -> return $ elem (fromIntegral r) [val]
_ -> return False
-- Эта функция проверяет, является ли окно диалогом
checkDialog = checkAtom "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_DIALOG"
-- Отрывающиеся (tear-off) меню
checkMenu = checkAtom "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_MENU"
basicLayout = Mirror tiled where
tiled = Tall nmaster delta ratio
nmaster = 1
delta = 2/100
ratio = 3/7
basicALayout = avoidStruts $ basicLayout
tallLayout = Mirror basicLayout
tallALayout = avoidStruts $ Mirror basicLayout
imLayout = withIMs ratio rosters chatLayout where
chatLayout = Mirror Grid
ratio = 1%5
rosters = [skypeRoster, pidginRoster]
pidginRoster = (ClassName "Pidgin") `And` (Role "buddy_list")
--skypeRoster = (ClassName "Skype") `And` (Not (Title "Options")) `And` (Not (Role "Chats")) `And` (Not (Title "*чат")) `And` (Not (Role "CallWindowForm"))
skypeRoster = (Title "evvproffessorr - Skype™ (Beta)")
myLayoutHook = fullscreen $ iml $ av $ normal where
normal = basicLayout ||| basicALayout ||| tallLayout ||| tallALayout ||| Full
fullscreen = onWorkspace "0_4, 1_4, 0_5, 1_5" Full
iml = onWorkspace "0_3" imLayout
av = onWorkspace "1_1" basicALayout
manageMenus = checkMenu --> doFloat
manageDialogs = checkDialog --> doFloat
imManageHooks = composeAll . concat $
[[className =? "Krusader" --> moveTo "0_1"]
, [className =? "Conky" --> moveTo "1_1"]
, [className =? "Firefox" --> moveTo "0_2"]
, [title =? d --> doFloat | d <- myTFloats]
, [className =? c --> doFloat | c <- myFloats]
, [className =? a --> moveTo "0_3" | a <- myIMs]
, [title =? "NCMPC" --> moveTo "1_2"]
, [title =? "SMPlayer" --> moveTo "0_4"]
, [className =? "Wine" --> moveTo "0_5"]
, [title =? "Sun VirtualBox" --> moveTo "0_6"]
, [className =? b --> doIgnore | b <- myIgnores]
, [className =? "Basket" --> moveTo "1_9"]
, [isFullscreen --> (doF W.focusDown <+> doFullFloat)]
]
where
--moveTo = doF . W.shift
moveTo = doShift
myIMs = ["Pidgin", "Skype"]
myIgnores = ["Qt-subapplication", "Plasma"]
myFloats = ["KMix", "Gimp-2.6", "Wine"]
myTFloats = ["Firefox Preferences", "Составление фильтра для Adblock Plus", "Copying", "Moving", "Deleting", "Renaming"]
myManageHook = imManageHooks <+> manageMenus <+> manageDialogs
myLogHook :: X ()
myLogHook = fadeInactiveLogHook fadeAmount
where fadeAmount = 0.75
-- | Data type for LayoutModifier which converts given layout to IM-layout
-- (with dedicated space for the roster and original layout for chat windows)
data AddRosters a = AddRosters Rational [Property] deriving (Read, Show)
instance LayoutModifier AddRosters Window where
modifyLayout (AddRosters ratio props) = applyIMs ratio props
modifierDescription _ = "IMs"
-- | Modifier which converts given layout to IMs-layout (with dedicated
-- space for rosters and original layout for chat windows)
withIMs :: LayoutClass l a => Rational -> [Property] -> l a -> ModifiedLayout AddRosters l a
withIMs ratio props = ModifiedLayout $ AddRosters ratio props
-- | IM layout modifier applied to the Grid layout
gridIMs :: Rational -> [Property] -> ModifiedLayout AddRosters Grid a
gridIMs ratio props = withIMs ratio props Grid
hasAnyProperty :: [Property] -> Window -> X Bool
hasAnyProperty [] _ = return False
hasAnyProperty (p:ps) w = do
b <- hasProperty p w
if b then return True else hasAnyProperty ps w
-- | Internal function for placing the rosters specified by
-- the properties and running original layout for all chat windows
applyIMs :: (LayoutClass l Window) =>
Rational
-> [Property]
-> W.Workspace WorkspaceId (l Window) Window
-> Rectangle
-> X ([(Window, Rectangle)], Maybe (l Window))
applyIMs ratio props wksp rect = do
let stack = W.stack wksp
let ws = W.integrate' $ stack
rosters <- filterM (hasAnyProperty props) ws
let n = fromIntegral $ length rosters
let (rostersRect, chatsRect) = splitHorizontallyBy (n * ratio) rect
let rosterRects = splitHorizontally n rostersRect
let filteredStack = stack >>= W.filter (`notElem` rosters)
wrs <- runLayout (wksp {W.stack = filteredStack}) chatsRect
return ((zip rosters rosterRects) ++ fst wrs, snd wrs)
myMouseBindings (XConfig {XMonad.modMask = mod4Mask}) = M.fromList $
[ ((0, 9), (\_ -> toggleWS)),
((mod4Mask, button1), (\w -> focus w >> mouseMoveWindow w)),
((mod4Mask, button3), (\w -> focus w >> mouseResizeWindow w))
]
myWorkspaces = withScreens 2 (workspaces defaultConfig)
main = do
xmonad $ defaultConfig {
modMask = mod4Mask
, layoutHook = myLayoutHook
, manageHook = myManageHook
, startupHook = setWMName "LG3D"
, workspaces = myWorkspaces
, borderWidth = 0
, logHook = myLogHook
, terminal = "urxvt"
, mouseBindings = myMouseBindings
}
`additionalKeysP`
[ ("M1-<F4>", kill)
, ("M1-<Tab>", windows W.focusDown)
, ("M1-S-<Tab>", windows W.focusUp)
, ("<XF86Explorer>", spawn "urxvt")
, ("<XF86Launch3>", spawn "urxvt --title NCMPC -e ncmpc -c -m -S")
, ("<XF86Launch5>", spawn "~/.mpd/playlist.sh")
, ("<XF86Launch6>", spawn "urxvt -e ssh -p 43434 evv@192.168.0.1")
, ("<XF86Launch7>", spawn "urxvt -e ssh -p 43434 evv@92.125.142.238")
--, ("<XF86Launch9>", shiftToPrev)
, ("<XF86Mail>", toggleWS)
--, ("<XF86Favorites>", shiftToNext)
, ("<XF86MenuKB>", windows $ W.view "0_3")
--, ("S-<XF86MenuKB>", (windows $ W.shift "3") >> (windows $ W.view "3"))
--, ("C-<XF86MenuKB>", windows $ W.view "6")
, ("<XF86Sleep>", spawn "sudo pm-suspend")
, ("<XF86AudioLowerVolume>", spawn "amixer -q set Master 1- unmute")
, ("<XF86AudioRaiseVolume>", spawn "amixer -q set Master 1+ unmute")
, ("<XF86AudioMute>", spawn "mpc random")
, ("<XF86AudioNext>", spawn "mpc next")
, ("<XF86AudioPrev>", spawn "mpc prev")
, ("<XF86AudioStop>", spawn "mpc stop")
, ("<XF86AudioPlay>", spawn "mpc toggle")
, ("<XF86MyComputer>", spawn "gmrun")
]
`additionalKeysP`
[("M-" ++ m ++ show k, windows $ onCurrentScreen f i)
| (i, k) <- zip (workspaces defaultConfig) [1..9]
, (f, m) <- [(W.greedyView, ""), (W.shift, "S-")]]
minoru-kun писал(а): ↑26.05.2010 14:15Собрал XMonad с Layout.Tabbed (местами не без помощи portnov'а). Хотелось бы решить следующие проблемы:
1. Область экрана разделена на два L.Tabbed при помощи L.LayoutCombinators. Alt-j, Alt-k переключают между всеми окнами сразу. А хотелось бы чтобы только между окнами в данной области.
2. Все окна попадают в верхний Layout, после чего некоторые из них я перетаскиваю при помощи L.WindowNavigation. Хотелось бы, чтобы некоторые окна попадали сразу в нижний в зависимости от их WM_CLASS.
Как такое сделать?
Код: Выделить всё
export SAL_USE_VCLPLUGIN=gen
Код: Выделить всё
import XMonad.Layout.PerWorkspace
.....
myLayout = windowArrange $ avoidStruts $ fixFocus $
onWorkspace "a:chat" myIM $
onWorkspace "e:term" ( mytabs ||| magicFocus( centerMaster mytabs ) ||| TwoPane (3/100) (1/2) ||| Grid) $
onWorkspace "l:mail" mytabs $
onWorkspace "w:webs" ( mytabs ||| Accordion ||| TwoPane (3/100) (1/2) ||| Circle ||| noBorders Full ) $
onWorkspace "v:virt" mouseResizableTile $
noBorders Full
.....
B0BaH писал(а): ↑10.10.2010 21:222) Как сделать так чтобы некоторый класс приложений открывался ТОЛЬКО на заданном рабочем столе? например pidgin и skype открывались бы только на рабочем столе номер 2....firefox transmission и тому подобное только на рабочем столе 1, vim и прочая нечисть открывались на 3 рабочем столе, и так далее!!
Код: Выделить всё
import qualified XMonad.StackSet as W
.....
myWorkspaces = [ "a:chat", "e:term", "l:mail", "w:webs", "m:mix", "v:virt" ]
.....
myManageHook = manageDocks <+>manageMenus<+>manageDialogs<+>composeAll
[ className =? "MPlayer" --> doFloat
, className =? "Gimp" --> doFloat
, resource =? "desktop_window" --> doIgnore
, resource =? "kdesktop" --> doIgnore
, className =? "Pidgin" --> doF(W.shift "a:chat")
, className =? "Iceweasel" --> doF(W.shift "w:webs")
, className =? "Chromium-browser" --> doF(W.shift "w:webs")
, className =? "Icedove" --> doF(W.shift "l:mail")
, className =? "Gnome-terminal" --> doF(W.shift "e:term")
, className =? "xine" --> (ask >>= \w -> liftX (toggleBorder w) >> doCenterFloat)
, className =? "Vlc" --> (ask >>= \w -> liftX (toggleBorder w) >> doCenterFloat)]
Код: Выделить всё
myWorkspaces = ["1:web","2:im","3:term","4","5","6","7","8","9"]
myLayout = onWorkspace "1:web" (Circle ||| Full)
Код: Выделить всё
xmonad --recompile
xmonad.hs:16:23:
Couldn't match expected type `GHC.Word.Word64'
against inferred type `PerWorkspace (Choose Circle Full) l2 a'
Expected type: l2 a -> Window
Inferred type: l2 a -> PerWorkspace (Choose Circle Full) l2 a
In the `layoutHook' field of a record
In the first argument of `additionalKeysP', namely
`gnomeConfig
{modMask = myModmask, terminal = "gnome-terminal",
layoutHook = myLayout, workspaces = myWorkspaces}'
xmonad.hs:47:11:
No instance for (LayoutClass Circle a)
arising from a use of `onWorkspace' at xmonad.hs:47:11-47
Possible fix:
add an instance declaration for (LayoutClass Circle a)
In the expression: onWorkspace "1:web" (Circle ||| Full)
In the definition of `myLayout':
myLayout = onWorkspace "1:web" (Circle ||| Full)
Please check the file for errors.
Код: Выделить всё
myManageHook = composeAll
[ className =? "Pidgin" --> doF(W.shift "2:im")
, className =? "Firefox" --> doF(W.shift "1:web")
]
Код: Выделить всё
import XMonad
import XMonad.Config.Desktop
import XMonad.Layout.Circle
import XMonad.Config.Gnome
import XMonad.Util.EZConfig
import XMonad.Layout.IM
import Data.Ratio ((%))
import qualified XMonad.StackSet as W -- to shift and float windows
import XMonad.ManageHook
import XMonad.Layout.PerWorkspace
import XMonad.Hooks.ManageDocks
main = xmonad $ gnomeConfig
{ modMask = myModmask -- Use Super instead of Alt
, terminal = "gnome-terminal"
, layoutHook = myLayout
, workspaces = myWorkspaces
, manageHook = myManageHook
-- more changes
}
`additionalKeysP`
[ ("M1-m", spawn "exaile")
, ("M1-f", spawn "firefox")
, ("M1-v", spawn "vlc")
, ("M1-p", spawn "pidgin")
, ("M1-v", spawn "gvim")
]
myModmask = mod4Mask
myWorkspaces = ["1:web","2:im","3:term","4","5","6","7","8","9"]
myLayout = onWorkspace "1:web" (Circle ||| Full) $
myManageHook = composeAll
[ className =? "Pidgin" --> doF(W.shift "2:im")
, className =? "Firefox" --> doF(W.shift "1:web")
]
Код: Выделить всё
import XMonad
import XMonad.Config.Desktop
import XMonad.Layout.Circle
import XMonad.Config.Gnome
import XMonad.Util.EZConfig
import XMonad.Layout.IM --layout for pidgin
import Data.Ratio ((%))
import qualified XMonad.StackSet as W -- to shift and float windows
import XMonad.ManageHook
import XMonad.Hooks.ManageHelpers
import XMonad.Layout.WindowArranger
import Data.Maybe --fixfocus
import XMonad.Layout.PerWorkspace
import XMonad.Layout.NoBorders
import XMonad.Layout.Grid
main = xmonad $ gnomeConfig
{ modMask = myModmask -- Use Super instead of Alt
, terminal = "gnome-terminal"
, layoutHook = desktopLayoutModifiers myLayout
, workspaces = myWorkspaces
, manageHook = myManageHook
-- more changes
}
`additionalKeysP`
[ ("M1-m", spawn "exaile")
, ("M1-f", spawn "firefox")
, ("M1-v", spawn "vlc")
, ("M1-p", spawn "pidgin")
, ("M1-v", spawn "gvim")
]
myModmask = mod4Mask
myWorkspaces = ["1:web","2:chat","3:term","4:media"]
--myLayout = withIM (1%6) (ClassName "Pidgin")
--myLayout = Circle ||| tiled ||| Mirror tiled ||| Full
myLayout = windowArrange $
onWorkspace "1:web" (tiled ||| Circle ||| Full) $
onWorkspace "2:chat" (withIM (1%6) (ClassName "Pidgin") Circle) $
onWorkspace "3:term" (tiled ||| Full) $
onWorkspace "4:media" (Grid ||| Circle ||| tiled ||| Full) $
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 = 1/2
-- Percent of screen to increment by when resizing panes
delta = 3/100
--myLayout = onWorkspace "1:web" myWeb
myManageHook = composeAll
[ manageHook gnomeConfig
, className =? "Gnome-terminal" --> doShift "3:term"
-- needs: import XMonad.Hooks.ManageHelpers (isFullscreen,doFullFloat)
, isFullscreen --> doFullFloat
, className =? "Pidgin" --> doF(W.shift "2:chat")
, className =? "Firefox" --> doF(W.shift "1:web")
, className =? "Exaile" --> doF(W.shift "4:media")
, className =? "Vlc" --> doF(W.shift "4:media")
]
Код: Выделить всё
myLayout = onWorkspace "1:web" (Circle ||| Full) $
Full
Код: Выделить всё
import XMonad
import System.Exit
import XMonad.Layout.Circle
import XMonad.Layout.NoBorders
import XMonad.Layout.ShowWName
import XMonad.Util.Run
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import qualified XMonad.StackSet as W
import qualified Data.Map as M
main = do
spawn "feh --bg-scale ~/desktop.png"
xmobar <- spawnPipe "xmobar ~/.xmonad/xmobar"
xmonad $ defaultConfig{
terminal ="urxvt",
focusFollowsMouse = False,
borderWidth = 1,
modMask = mod4Mask,
workspaces = ["dp1","dp2","dp3","dp4","dp5","dp6"],
-- workspaces = ssworkspaces,
normalBorderColor = "#202020",
focusedBorderColor = "#e67817",
keys = myKeys,
mouseBindings = myMouseBindings,
layoutHook = showWName' mySWNConfig myLayout,
manageHook = myManageHook <+> manageDocks,
logHook = dynamicLogWithPP $ defaultPP {ppOutput = hPutStrLn xmobar},
startupHook = return ()}
mySWNConfig = defaultSWNConfig
{swn_font = "-xos4-terminus-bold-*-normal-*-14-*-*-*-*-*-iso10646-*"
,swn_bgcolor = "#202020"
,swn_color = "#e67817"
,swn_fade = 1}
-- ssworkspaces :: [String]
-- ssworkspaces = ["dp1","dp2","dp3","dp4","dp5","dp6","dp7"]
myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
[((controlMask .|. mod1Mask,xK_q),spawn $ XMonad.terminal conf)
,((controlMask .|. mod4Mask,xK_a),spawn "firefox")
,((mod1Mask .|. mod4Mask,xK_a),spawn "urxvt -e mcabber")
,((mod4Mask,xK_Up),spawn "amixer set 'PCM' 5+ > /dev/null")
,((mod4Mask,xK_Down),spawn "amixer set 'PCM' 5- > /dev/null")
,((0,xK_Print),spawn "scrot ~/scrots/%m-%d-%T_scrot.png")
,((mod1Mask,xK_x),withFocused $ windows . W.sink)
,((mod1Mask,xK_q),spawn "xkill")
--, ((mod1Mask,xK_x), withFocused (sendMessage . expandWindowAlt) >> sendMessage Expand)
--, ("M-h", withFocused (sendMessage . shrinkWindowAlt) >> sendMessage Shrink)
-- , ((mod1Mask,xK_x), sendMessage MirrorShrink)
-- , ((mod1Mask,xK_z), sendMessage MirrorExpand)
-- close focused window
, ((modMask .|. shiftMask, xK_c ), kill)
-- Rotate through the available layout algorithms
, ((modMask, xK_space ), sendMessage NextLayout)
-- Reset the layouts on the current workspace to default
, ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
-- Resize viewed windows to the correct size
, ((modMask, xK_n ), refresh)
-- Move focus to the next window
, ((mod1Mask, xK_Tab ), windows W.focusDown)
-- Move focus to the next window
, ((modMask, xK_j ), windows W.focusDown)
-- Move focus to the previous window
, ((modMask, xK_k ), windows W.focusUp )
-- Move focus to the master window
, ((modMask, xK_m ), windows W.focusMaster )
-- Swap the focused window and the master window
, ((modMask, xK_Return), windows W.swapMaster)
-- Swap the focused window with the next window
, ((modMask .|. shiftMask, xK_j ), windows W.swapDown )
-- Swap the focused window with the previous window
, ((modMask .|. shiftMask, xK_k ), windows W.swapUp )
-- Shrink the master area
, ((modMask, xK_h ), sendMessage Shrink)
-- Expand the master area
, ((modMask, xK_l ), sendMessage Expand)
-- Push window back into tiling
-- , ((modMask, xK_t ), withFocused $ windows . W.sink)
-- Increment the number of windows in the master area
, ((modMask , xK_comma ), sendMessage (IncMasterN 1))
-- Deincrement the number of windows in the master area
, ((modMask , xK_period), sendMessage (IncMasterN (-1)))
-- toggle the status bar gap
-- TODO, update this binding with avoidStruts , ((modMask , xK_b ),
-- Quit xmonad
, ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
-- Restart xmonad
, ((modMask , xK_q ), restart "xmonad" True)
]
++
--
-- mod-[1..9], Switch to workspace N
-- mod-shift-[1..9], Move client to workspace N
--
[((m .|. mod1Mask, 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 .|. modMask, 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)]]
myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
[((mod1Mask,button1),(\w -> focus w >> mouseMoveWindow w))
,((mod1Mask,button2),(\w -> focus w >> windows W.swapMaster))
,((mod1Mask,button3),(\w -> focus w >> mouseResizeWindow w))]
myLayout = avoidStruts $ smartBorders (tiled ||| Circle ||| Mirror tiled ||| Full)
where
tiled = Tall nmaster delta ratio
nmaster = 1
ratio = 1/2
delta = 3/100
-- tiled = ResizableTall 1 (2/100) (1/2) []
myManageHook = composeAll
[className =? "MPlayer" --> doFloat
,className =? "Gimp" --> doFloat
,className =? "Qmmp" --> doFloat
]
Код: Выделить всё
xmonad.hs:692:28:
Couldn't match expected type `containers-0.3.0.0:Data.Map.Map
(ButtonMask, KeySym) (X ())'
against inferred type `M.Map (KeyMask, KeySym) (X ())'
In the `keys' field of a record
In the second argument of `($)', namely
`defaultConfig
{focusFollowsMouse = myFocusFollowsMouse,
borderWidth = myBorderWidth, modMask = myModMask,
numlockMask = myNumlockMask, workspaces = myWorkspaces,
normalBorderColor = myNormalBorderColor,
focusedBorderColor = myFocusedBorderColor,
строка 692 ---> keys = myKeys,
Код: Выделить всё
ghc-pkg hide containers-0.4.0.0
Код: Выделить всё
Сообщение
Как можно исправить?
Код: Выделить всё
$ cat .xmobarrc
Config { font = "-Misc-Fixed-*-R-Normal--9-120-75-75-C-70-ISO8859-1"
, bgColor = "black"
, fgColor = "green"
, position = Static { xpos = 0
, ypos = 38
, width = 1280
, height = 17
}
, lowerOnStart = True
, commands = [ Run PipeReader "/home/AlexYeCu/.xmonad/status" "xlog"
]
, sepChar = "%"
, alignSep = "}{"
, template = "%xlog%"
}
Код: Выделить всё
font = "xft:terminus-9:style=normal"