Диспетчеры оконных панелей и настройка нескольких голов: рабочее пространство в стиле Gnome

2722
Flow

Я только что переключился с metacity на xmonad, и я очень впечатлен концепцией оконного менеджера. Но меня это беспокоит: в gnome «рабочее пространство» состояло из всех трех моих мониторов, но в xmonad каждый физический экран имеет свое рабочее пространство (например, когда я нажимаю mod + 1, только один экран меняет свое рабочее пространство).

Существует ли менеджер окон, который реализует концепцию рабочего пространства gnome (metacity)? Может ли xmonad связать все физические экраны в одно рабочее пространство?

4

1 ответ на вопрос

3
Robert Massaioli

XMonad не может использовать все три экрана в качестве единого рабочего пространства, но вы этого не хотите. Я думаю, вам просто нужно знать, как лучше ориентироваться на экранах. У меня есть настройка, которая мне очень нравится, и вы можете увидеть конфигурационный файл для этой настройки в разделе XMonad на Haskell Wiki . Все, что я покажу, будет исходить из материала в моем собственном конфиге на моей машине (хотя это не обязательно то, что на той странице, на которую я ссылаюсь)

Есть две библиотеки xmonad-contrib, которые делают многоголовую навигацию не только сносной, но и замечательной находкой, и это CycleWS и TagWindows .

CycleWS позволяет циклически перемещаться по рабочим областям на разных физических экранах (с prevScreen и nextScreen), а также позволяет легко перемещать окна между экранами (с помощью shiftPrevScreen и shiftNextScreen). Это означает, что, несмотря на то, что у вас есть разные рабочие области на каждом экране, они могут совместно использовать окна между ними. Если вы не хотите, чтобы одно окно охватывало каждый экран, то у вас все в порядке. Вот как мой xmonad.hs использует команды CycleWS:

-- Alt + Ctrl Left / Right makes the view go left and right, ((altMask .|. controlMask, xK_Left ), prevScreen >> windowCenter), ((altMask .|. controlMask, xK_Right ), nextScreen >> windowCenter), ((altMask .|. controlMask, xK_Down ), shiftPrevScreen), ((altMask .|. controlMask, xK_Up ), shiftNextScreen), ((altMask .|. controlMask .|. shiftMask, xK_Down ), shiftPrevScreen >> prevScreen >> windowCenter), ((altMask .|. controlMask .|. shiftMask, xK_Up ), shiftNextScreen >> nextScreen >> windowCenter) 

[Примечание: windowCenter = warpToWindow (1% 6) (1% 6)]

TagWindows - это классно, особенно функция viewOnScreen, которая позволяет вам вызывать любую программу с тегами на любом из ваших экранов прямо вперед, хотя мне пришлось немного взломать, чтобы мне это понравилось. Вот ключи, которые я использую:

, ((myModMask, xK_g ), tagPrompt defaultXPConfig (withFocused . addTag)), ((myModMask .|. shiftMask, xK_g ), tagDelPrompt defaultXPConfig), ((altMask, xK_g ), tagPrompt defaultXPConfig (`withTaggedGlobalP` gotoWindow)) 

И здесь определена функция gotoWindow:

-- Warning: This gotoWindow function assumes you made your workspaces -- with the 'withScreens' function from XMonad.Layout.IndependentScreens  gotoWindow :: Window -> WindowSet -> WindowSet gotoWindow window ws = case S.findTag window ws of Just i -> viewOnScreen (screenIdFromTag i) i ws Nothing -> ws where screenIdFromTag :: WorkspaceId -> ScreenId screenIdFromTag = S . read . takeWhile (/= '_') 

И это должно позволить вам закрепить многоголовую удивительность в вашем конфигурационном файле XMonad. Не стесняйтесь задавать мне больше вопросов в комментариях, если у вас есть какие-либо. Надеюсь, это поможет.

«XMonad не может использовать все три экрана в качестве единого рабочего пространства, но при этом вы этого не хотите». Это довольно самоуверенно. Скажем, у вас есть 3 маленьких монитора с разрешением 1366 × 768, вы запускаете оболочку в крайнем левом углу и затем печатаете 100 строк по 500 символов. Они бы завернули. В целях упрощения чтения вы можете временно расширить оболочку на два или три монитора. Вы можете плавать, но тогда вы теряете много добра. Я думаю, что очень важно иметь возможность использовать одно рабочее пространство на всех мониторах. steady rain 9 лет назад 0
Я отклонил этот ответ по той же причине, что и постоянный дождь; это совершенно актуальная вещь, чтобы хотеть. user76871 8 лет назад 0

Похожие вопросы