Как сгенерировать такой тайлинг xmonad

Как я могу создать такую ​​мозаику с помощью xmonad?

http://xmonad.org/images/screen-ejt-spiral-dzen.png

Я знаю, что вы можете увеличить/уменьшить количество окон в мастер-панели с помощью mod-comma и использовать mod-space mod-h и mod-l, чтобы изменить макет. Но похоже, что только этот набор команд не может воспроизвести мозаику в приведенной выше ссылке.

В частности, есть две вещи, которые я просто не знаю, как сделать по ссылке выше:

  1. Большая плитка справа не разделена горизонтально посередине, а на самом деле длиннее. Я могу увеличивать/уменьшать основную панель только с помощью mod-h и mod-l
  2. Меньшая плитка справа разделена на две подплитки. Я понятия не имею, как вы могли бы сделать это с помощью xmonad.

person antimatter    schedule 10.05.2016    source источник


Ответы (1)


Вам нужно создать новый макет в вашем .xmonad/xmonad.hs. Для этого вам нужно иметь небольшой опыт работы с haskell.

Я создал полноэкранный макет, который можно использовать, нажав определенную комбинацию клавиш, вот пример:

импортировать следующее:

import XMonad.Layout.Spacing
import XMonad.Layout.LayoutCombinators hiding ( (|||) )
import XMonad.Layout.Fullscreen
import XMonad.Layout.NoBorders
import XMonad.Layout.Reflect
import XMonad.Layout.Combo
import XMonad.Layout.TwoPane
import XMonad.Layout.Tabbed 
import XMonad.Layout.PerWorkspace
import XMonad.Layout.IM
import XMonad.Layout.ThreeColumns

И тогда вы могли бы сделать что-то вроде этого:

sPx = 1

verticalLayout = spacing sPx $ avoidStruts $ reflectHoriz $ Tall 1 0.03 0.5
verticalLayoutLargeScreen = spacing sPx $ avoidStruts $ ThreeCol 1 0.03 0.5
horizontalLayout = spacing sPx $ avoidStruts $ Mirror $ Tall 1 0.03 0.5
webdevLayout = spacing sPx $ avoidStruts $ Tall 1 0.03 0.63
fullscreenLayout = noBorders $ fullscreenFull $ Full

myLayout =
    onWorkspace "2:web" (webdevLayout ||| fullscreenLayout) $
                    (verticalLayout ||| horizontalLayout ||| fullscreenLayout)

После этого определите сопоставление для вашей комбинации клавиш:

myAdditionalKeys = [
  -- Switch to next layout:
  ((mod4Mask .|. shiftMask, xK_m), sendMessage NextLayout),
]

а потом не забудьте добавить свой макет и свой ключ Mapping в конфиг, может выглядеть так:

main = do
  xmonad $ defaultConfig
             { manageHook = manageSpawn <+> myManageHook <+> manageDocks,
               layoutHook = myLayout,
               logHook = dynamicLogWithPP xmobarPP {
                       ppOutput = hPutStrLn xmproc,
                       ppLayout = (\ x -> ""),
                       ppTitle = xmobarColor "#b2ed00" ""
                     } >> updatePointer (Relative 0.99 0.99),
               modMask = mod4Mask,
               borderWidth = 4,
               normalBorderColor = "#777777",
               focusedBorderColor = "#ccff00",
               workspaces = myWorkspaces,
               focusFollowsMouse = True,
               terminal = "x-terminal-emulator"
             }
             `removeKeys` myRemoveKeys
             `additionalKeys` myAdditionalKeys
person GiftZwergrapper    schedule 10.05.2016
comment
Спасибо, да, я думаю, в документах недостаточно ясно сказано, что этот конкретный макет не может быть выполнен с помощью ключей, а требует пользовательского макета. - person antimatter; 11.05.2016