Хотя я совсем не уверен в этом, я думаю, что ваша проблема возникает, когда вы пытаетесь в полноэкранном режиме черепичного окна. Строка в вашей конфигурации, который говорит
manageHook = manageDocks <+> ...
рассказывает xmonad, что вы не хотите, чтобы ваши окна черепицы перекрываться xmobar. Итак, xmonad пытается подчиниться этому даже для полноэкранных окон, когда они черепичные. Таким образом, в решение входят три части:
Вы можете плавать в своих окнах перед их полной экранизацией. Обычно это достигается путем удержания клавиши mod и один раз щелкнуть по окну. Когда вы разместили окно, оно может охватывать все другие окна, включая xmobar. Поэтому, если вы затем попытаетесь открыть полноэкранное окно, оно должно покрыть весь экран.
Вы можете сказать xmonad плавать VLC по умолчанию. Это встроенное поведение для mplayer, но, по-видимому, не для VLC. Вы можете сделать это, изменив конфиг сказать
manageHook = manageDocks <+> (className =? "Vlc" --> doFloat) <+> manageHook defaultConfig
«Управление крюк» это то, что решает, как окна должны появиться. Объект <+>
сочетает в себе возможности для управления крючком. Бит, который говорит
(className =? "Vlc" --> doFloat)
просто означает, что «если окно является окном VLC, сделайте его плавающим по умолчанию."
Третья, очень жизнеспособна, опция для загрузки xmonad-contrib
пакета, который содержит XMonad.Hooks.ManageHelpers модуля. Этот модуль содержит много умных вспомогательные функции для customsing как xmonad предполагается обрабатывать ваши окна. Например, это, вы можете добавить правило, которое говорит
(isFullscreen --> doFullFloat)
, что означает «если окно пытается быть полноэкранный режим, автоматически всплывают его и сделать его на весь экран». - это только эффект, который вы хотите вы добавляете это для вашего управления крючком точно так же, как и название класса:
manageHook = manageDocks <+> (isFullscreen --> doFullFloat) <+> manageHook defaultConfig
, а затем VLC должен вести себя правильно, когда вы в полноэкранном режиме, независимо от того, плавали ли вы или нет!
Как небольшой совет: Когда вы начнете получать много различных вариантов в ваших управлять крюками и устаешь сочетая их с <+>
, вы можете альтернативно написать вещь как
manageHook = composeAll [
manageDocks,
isFullscreen --> doFullFloat,
className =? "Vlc" --> doFloat,
manageHook defaultConfig
]
Этот composeAll
автоматически объединяет все элементы в списке с оператором <+>
.
Пожалуйста, спросите, есть ли какая-то конфигурация, из которой вы не уверены, что это значит. Бьюсь об заклад, многие люди рады попробовать перевести код Haskell на человеческий язык. Я знаю, как сложно разочаровываться в том, чтобы просто дико копировать и вставлять конфигурацию, не зная, как это работает. (И это только недавно я начал изучать, как работает xmonad конфигурации, и это красота.)
Edit: О ваших границ окна на полном экранированных окон. Существует модуль XMonad.Layout.NoBorders
, который обеспечивает опрятную функцию smartBorders
, которая изменяет ваш крюк компоновки так, чтобы он не рисовал границы окон, которые выглядят полноэкранными. Вы можете изменить свой макет крюк, чтобы использовать эту функцию, а также путем изменения строки в вашей конфигурации, чтобы
layoutHook = smartBorders . avoidStruts $ layoutHook defaultConfig
.
вещи сочетает в себе несколько функций в одном, и в этом случае он будет совмещать smartBorders
с avoidStruts
, чтобы дать вам преимущество обоих. Затем он перехватит привязку макета по умолчанию к обоим из них, чтобы создать измененный, лучший макет компоновки.
К сожалению, я не могу проверить, насколько хорошо это работает, поскольку я бегу XMonad без границ.
Вы показываете VLC в однооконном режиме в xmonad или используете полноэкранный режим VLC? Потому что, когда я делаю полноэкранный просмотр в своих медиаплеерах, они оба покрывают xmobar и не получают границы. – kqr
@kqr Я имею в виду тип полноэкранного режима, который вы получаете, когда вы дважды щелкаете в видеокадре. Я работаю в Xmonad «full», если это то, что вы подразумеваете под режимом «один-оконный». – toeplitz
Если вы делаете окно VLC плавающим (обычно, удерживая нажатой кнопку «Показывать», когда вы нажимаете на нее), а затем дважды щелкните по видеокадре для полноэкранного просмотра, покрывает ли он весь экран? Возможно, что окна с черепицей ведут себя по-другому. – kqr