Xmonad
如何刪除 Xmonad 視窗的底部邊緣和側面,留下上面的?
我是 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 ]
XMonad 本身不能修改客戶端視窗。邊框/標籤和其他裝飾可以由 xmonad 本身創建/渲染。
您可以使用xmonad-contrib包中的XMonad.Layout.NoBorders 來實現智能邊框行為。
例如我使用:
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 狀態欄。