저는 Xmonad를 처음 사용하고 창의 레이아웃을 사용자 정의하고 싶습니다. 창을 편집하는 방법에 대한 예를 찾지 못했지만 지금까지는 테두리 색상과 너비를 변경할 수 있습니다.
내 xmonad.hs를 팔로우하세요.
module Main (main) where
--------------------------------------------------------------------------------
import System.Exit
import XMonad
import XMonad.Config.Desktop
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageHelpers
import XMonad.Layout.BinarySpacePartition (emptyBSP)
import XMonad.Layout.NoBorders (noBorders)
import XMonad.Layout.ResizableTile (ResizableTall(..))
import XMonad.Layout.ToggleLayouts (ToggleLayout(..), toggleLayouts)
import XMonad.Prompt
import XMonad.Prompt.ConfirmPrompt
import XMonad.Prompt.Shell
import XMonad.Util.EZConfig
------------------------------------------------------------------------- -------
main = do
spawn "xmobar" -- Start a task bar such as xmobar.
spawn "wmname LG3D"
-- Start xmonad using the main desktop configuration with a few
-- simple overrides:
xmonad $ desktopConfig
{ modMask = mod4Mask -- Use the "Win" key for the mod key
, manageHook = myManageHook <+> manageHook desktopConfig
, layoutHook = desktopLayoutModifiers myLayouts
, logHook = dynamicLogString def >>= xmonadPropLog
, focusedBorderColor = "cyan"
, borderWidth = 1
}
`additionalKeysP` -- Add some extra key bindings:
[ ("M-S-q", confirmPrompt myXPConfig "exit" (io exitSuccess))
, ("M-p", shellPrompt myXPConfig)
, ("M-<Esc>", sendMessage (Toggle "Full"))
, ("<XF86AudioMute>", spawn "amixer -q sset 'Master' mute") --Muta o som
, ("<XF86AudioLowerVolume>", spawn "amixer -q sset 'Master' 1%-") - -Diminui o volume em 1%
, ("<XF86AudioRaiseVolume>", spawn "amixer -q sset 'Master' 1%+ unmute") --Aumenta o volume em 1%
, ("<XF86MonBrightnessDown>", spawn "sh ~/OneDrive/Documentos/xmonad/brightness.sh -s -1") --Diminui o brilho da tela em 1%
, ("<XF86MonBrightnessUp>", spawn "sh ~/OneDrive/Documentos/xmonad/brightness.sh -s +1") --Aumenta o Brilho da tela em 1%
, ("C-<Return>", spawn "chromium") --Abre o google chrome
, ("M-g", spawn "gedit") --Abre o gedit
, ("M-r", spawn "nautilus") --Abre o nautilus
, ("M-c", spawn "code") --Abre o MS Code
]
------------------------------------------------------------------------- -------
-- | Customize layouts.
--
-- This layout configuration uses two primary layouts, 'ResizableTall'
-- and 'BinarySpacePartition'. You can also use the 'M-<Esc>' key
-- binding defined above to toggle between the current layout and a
-- full screen layout.
myLayouts = toggleLayouts (noBorders Full) others
where
others = ResizableTall 1 (1.5/100) (3/5) [] ||| emptyBSP
--------------------------------------------------------------------------------
-- | Customize the way 'XMonad.Prompt' looks and behaves. It's a
-- great replacement for dzen.
myXPConfig = def
{ position = Top
, alwaysHighlight = True
, promptBorderWidth = 0
, font = "xft:monospace:size=9"
}
myManageHook = composeOne
[ className =? "Pidgin" -?> doFloat
, className =? "XCalc" -?> doFloat
, className =? "mpv" -?> doFloat
, className =? "vlc" -?> doFloat
, isDialog -?> doCenterFloat
, isFullscreen -?> doFullFloat
-- Move transient windows to their parent:
, transience
]
답변1
XMonad 자체는 클라이언트 창을 수정할 수 없습니다. 테두리/탭 및 기타 장식은 xmonad 자체에서 생성/렌더링할 수 있습니다.
당신은 그것을 사용할 수 있습니다XMonad.Layout.NoBorders ~에서xmonad-contrib스마트 테두리 동작 패키지.
예를 들어 다음을 사용합니다.
import XMonad.Layout.NoBorders
myBorders = lessBorders (Combine Union Screen OnlyFloat)
myLayout =
avoidStruts $
myBorders $
layoutHintsToCenter $
onWorkspace "con"
( tab ||| full ||| tiled ||| mtiled) $
onWorkspaces ["web","irc"]
full $
full ||| tiled ||| mtiled
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 =
toRational (2 / (1 + sqrt 5 :: Double))
-- Percent of screen to increment by when resizing panes
delta = 5 / 100
-- tab is tabbed
tab =
tabbed shrinkText (theme smallClean)
-- full is Full
full =
(fullscreenFloat . fullscreenFull) Full
-- mtiled is mirrortiled
mtiled = Mirror tiled
이는 여러 창이 있는 레이아웃에만 테두리를 제공합니다. 테두리가 없는 전체 화면 부동 창의 응용 프로그램도 있습니다. 이는 xmobar 상태 표시줄에도 적용됩니다.
답변2
테두리를 제거하려면 를 설정해야 합니다 borderWidth = 0
.