Arch-Linux

如何在 Xmonad 中始終生成沒有邊界的 mpv?

  • April 6, 2022

mpv由於邊框,我遇到了問題,xmonad我希望能夠始終啟動mpv,浮動,完全沒有邊框,並且mpv預設情況下保持鍵綁定的功能。

注意:我知道就像我目前的.xmonad配置文件一樣,我可以全屏顯示,mpvmeta+bmeta+f希望能夠只使用預設的f鍵綁定mpv來全屏顯示並且沒有邊框。最後一種方法目前不起作用。

那可能嗎?

如果是,我需要如何修改我的.xmonad配置文件?

這是我目前的 .xmonad 配置文件

import System.IO
import System.Exit

import XMonad
import XMonad.Hooks.SetWMName
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageHelpers(doFullFloat, doCenterFloat, isFullscreen, isDialog)
import XMonad.Config.Desktop
import XMonad.Config.Azerty
import XMonad.Util.Run(spawnPipe)
import XMonad.Actions.SpawnOn
import XMonad.Util.EZConfig (additionalKeys, additionalMouseBindings)
import XMonad.Actions.CycleWS
import XMonad.Hooks.UrgencyHook
import qualified Codec.Binary.UTF8.String as UTF8

import XMonad.Layout.Spacing
import XMonad.Layout.Gaps
import XMonad.Layout.ResizableTile
import XMonad.Layout.NoBorders
import XMonad.Layout.Fullscreen (fullscreenFull)
import XMonad.Layout.Cross(simpleCross)
import XMonad.Layout.Spiral(spiral)
import XMonad.Layout.ThreeColumns
import XMonad.Layout.MultiToggle
import XMonad.Layout.MultiToggle.Instances
import XMonad.Layout.IndependentScreens


import XMonad.Layout.CenteredMaster(centerMaster)

import Graphics.X11.ExtraTypes.XF86
import qualified XMonad.StackSet as W
import qualified Data.Map as M
import qualified Data.ByteString as B
import Control.Monad (liftM2)
import qualified DBus as D
import qualified DBus.Client as D


myStartupHook = do
   spawn "$HOME/.xmonad/scripts/autostart.sh"
   setWMName "LG3D"

-- colours
normBord = "#4c566a"
focdBord = "#5e81ac"
fore     = "#DEE3E0"
back     = "#282c34"
winType  = "#c678dd"

--mod4Mask= super key
--mod1Mask= alt key
--controlMask= ctrl key
--shiftMask= shift key

myModMask = mod4Mask
encodeCChar = map fromIntegral . B.unpack
myFocusFollowsMouse = True
myBorderWidth = 2
myWorkspaces    = ["\61612","\61899","\61947","\61635","\61502","\61501","\61705","\61564","\62150","\61872"]
--myWorkspaces    = ["1","2","3","4","5","6","7","8","9","10"]
--myWorkspaces    = ["I","II","III","IV","V","VI","VII","VIII","IX","X"]

myBaseConfig = desktopConfig

-- window manipulations
myManageHook = composeAll . concat $
   [ [isDialog --> doCenterFloat]
   , [className =? c --> doCenterFloat | c <- myCFloats]
   , [title =? t --> doFloat | t <- myTFloats]
   , [resource =? r --> doFloat | r <- myRFloats]
   , [resource =? i --> doIgnore | i <- myIgnores]
   -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61612" | x <- my1Shifts]
   -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61899" | x <- my2Shifts]
   -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61947" | x <- my3Shifts]
   -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61635" | x <- my4Shifts]
   -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61502" | x <- my5Shifts]
   -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61501" | x <- my6Shifts]
   -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61705" | x <- my7Shifts]
   -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61564" | x <- my8Shifts]
   -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\62150" | x <- my9Shifts]
   -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61872" | x <- my10Shifts]
   ]
   where
   -- doShiftAndGo = doF . liftM2 (.) W.greedyView W.shift
   myCFloats = ["Arandr", "Arcolinux-calamares-tool.py", "Arcolinux-tweak-tool.py", "Arcolinux-welcome-app.py", "Galculator", "feh", "Xfce4-terminal"]
   myTFloats = ["Downloads", "Save As..."]
   myRFloats = []
   myIgnores = ["desktop_window"]
   -- my1Shifts = ["Chromium", "Vivaldi-stable", "Firefox"]
   -- my2Shifts = []
   -- my3Shifts = ["Inkscape"]
   -- my4Shifts = []
   -- my5Shifts = ["Gimp", "feh"]
   -- my6Shifts = ["vlc", "mpv"]
   -- my7Shifts = ["Virtualbox"]
   -- my8Shifts = ["Thunar"]
   -- my9Shifts = []
   -- my10Shifts = ["discord"]




myLayout = spacingRaw True (Border 0 5 5 5) True (Border 5 5 5 5) True $ mkToggle (NBFULL ?? NOBORDERS ?? EOT) $ tiled ||| Mirror tiled ||| spiral (6/7)  ||| ThreeColMid 1 (3/100) (1/2) ||| noBorders Full
   where
       tiled = Tall nmaster delta tiled_ratio
       nmaster = 1
       delta = 3/100
       tiled_ratio = 1/2


myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $

   -- mod-button1, Set the window to floating mode and move by dragging
   [ ((modMask, 1), (\w -> focus w >> mouseMoveWindow w >> windows W.shiftMaster))

   -- mod-button2, Raise the window to the top of the stack
   , ((modMask, 2), (\w -> focus w >> windows W.shiftMaster))

   -- mod-button3, Set the window to floating mode and resize by dragging
   , ((modMask, 3), (\w -> focus w >> mouseResizeWindow w >> windows W.shiftMaster))

   ]

我已經解決了這個問題

lessBorders Never $ avoidStruts

我的佈局

myLayout = BO.lessBorders BO.Never $ avoidStruts (full ||| tiled ||| grid ||| bsp)
 where
   
     -- full
    full = renamed [Replace "Full"] 
         $ BO.noBorders (Full)
     
     --- tiled
    tiled = renamed [Replace "Tall"] 
          $ spacingRaw True (Border 10 0 10 0) True (Border 0 10 0 10) True
          -- $ spacingRaw True (Border 0 5 5 5) True (Border 5 5 5 5) True 
          $ ResizableTall 1 (3/100) (1/2) []
     -- grid
   
    grid = renamed [Replace "Grid"] 
         $ spacingRaw True (Border 10 0 10 0) True (Border 0 10 0 10) True 
         $ Grid (16/10)
   
    -- bsp
    bsp = renamed [Replace "BSP"] 
        $ emptyBSP

主要的

main :: IO ()
main = do
   dbus <- D.connectSession
   -- Request access to the DBus name
   D.requestName dbus (D.busName_ "org.xmonad.Log")
       [D.nameAllowReplacement, D.nameReplaceExisting, D.nameDoNotQueue]

   
   
   xmonad $ withUrgencyHook LibNotifyUrgencyHook $ ewmh desktopConfig
       { manageHook = ( isFullscreen --> doFullFloat ) <+> manageDocks <+> myManageHook <+> manageHook desktopConfig
       , startupHook        = myStartupHook
       , layoutHook         = myLayout
       , handleEventHook    = handleEventHook desktopConfig
       , workspaces         = myWorkspaces
       , borderWidth        = myBorderWidth
       , terminal           = myTerminal
       , modMask            = myModMask
       , normalBorderColor  = normBord
       , focusedBorderColor = focdBord
       , logHook            = updatePointer (0.25, 0.25) (0.25, 0.25)
       , keys = myKeys
       , mouseBindings = myMouseBindings
       }

並完全重建xmonad.sh

請參閱我關於此主題的相關答案,它也解決了此問題中提出的問題。

引用自:https://unix.stackexchange.com/questions/696872