- Comparison of tiling window managers
- Contents
- Comparison table
- Management style
- Layouts
- Key bindings
- Tiling Window Manager и почему вы должны его использовать
- Что такое Tiling Window Manager
- Менеджеры с плавающими окнами VS
- Ломать пространство
- навигация
- Менеджеры верхнего окна
- Linux
- BSPWM
- Xmonad
- AwesomeWM
- ChunkWM
- Аметист
- Windows
- AquaSnap
- Аксессуары и инструменты
- Polybar
- Lemonbar
- URxvt
- напор
- Данст
- Заключительные мысли
Comparison of tiling window managers
This article provides an unbiased comparison of the most popular tiling window managers (as opposed to floating window managers).
Contents
Comparison table
The following table lists the most popular tiling window managers alongside notable features, providing readers with a quick overview.
Window Manager | Written in | Configured with | Management style | System tray support | On-the-fly reload | Information bars | Compositing | Default layouts | Pixel usage | External control | Library | Multiple (n) monitor behavior | ICCCM/EWMH compliant | Maintenance |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
alopex | C | C (recompile) | Hybrid | None | No | Built-in; call script/program as first argument | External | max, h-stack, v-stack, h-tab | Variable borders, titles in-statusbar | Xlib | six tags, two views available by default | Abandoned | ||
Awesome | C | Lua | Dynamic | Built-in | Yes | Built-in, images and text | External | max, nh-stack (and invert), nv-stack (and invert), free | Variable borders, optional h-tab titles | dbus (if enabled) | XCB | n-tags (workspaces). Per default 9 are enabled. Example | Yes | Active |
bspwm | C | Anything | Hybrid | None | Yes | Can write internal state to a FIFO | External | v-split, h-split | Variable borders | via bspc | XCB | Monitors hold Desktops | Yes | Active |
dwm | C | C (recompile) | Dynamic | Optional Patch | Optional | Built-in, reads from root window name | External | v-stack, max | via dwmfifo | Xlib | n regions, 9 workspaces fixed to each region | Active | ||
echinus | C | Text | Dynamic | None | Yes | ourico AUR | External | v-stack, b-stack, max | Variable borders, optional titles | Xlib | Yes | Abandoned | ||
euclid-wm | C | Text | Hybrid | None | Yes | External (dzen) | rows, columns | 1-pix borders | Xlib | Dormant | ||||
FrankenWM | C | C (recompile) | Dynamic | None | No | No, outputs information to stdout, which can easily be parsed and displayed by an external monitor or panel (dzen2, conky, etc) | External | v-stack (and invert), h-stack (and invert), dual-v/h-stack, grid, fibonacci (vh-stack), rows, columns, max, free | Variable borders | XCB | Active | |||
herbstluftwm | C++ | Text | Manual | None | Yes | rows, columns | 1-pix borders | commands via herbstclient | Xlib | n regions, 9 workspaces visible in any region | Active | |||
i3 | C | Text | Dynamic | i3bar | Yes (Layout is preserved) | text piped to i3bar ( i3status / conky and others can be used) | External | tree, v-split, h-split, stacked, tabbed, max, can be nested infinitely | None, 1-pix or 2-pix, optional titlebars, can hide edge borders | commands via ipc (or i3-msg, which uses ipc) | XCB | n regions | Yes | Active |
LeftWM | Rust | toml (user settings) / Anything (themes) | Dynamic | None | Yes | Yes, many options through theme system | External | v-stack, columns, rows | Variable based on theme | supports _NET_ACTIVE_WINDOW and sending commands to a named pipe | Xlib | Workspaces and monitors are not tide. Many workspaces for monitor or many monitors for workspace | Yes | Active |
Notion | C, Lua | Lua, compatible with Ion3 configs | Manual | trayion, stalonetray | Yes | configurable | ? | h-tab, max | Configurable borders and titlebars/tabs | EWMH, arbitrary Lua scripts which have access to the rich internal API | Xlib | n workspaces on each monitor. Supports on-the-fly changes in topology | Active | |
qtile | Python | Python | Dynamic | Yes | Yes | Yes | External | tree, v-split, h-split, stacked, tabbed, max | No borders, although customizable | Hooks, Server mode | XCB | Active | ||
Ratpoison | C | Text | Manual | None | Yes | Yes | External | max | No | Active | ||||
Snapwm | C | Reloadable Text | Dynamic | None | Yes | Built-in, reads from root window name | External | nVertical, Fullscreen, nHorizontal, Grid, Center Stacking | Variable borders, no titles | Xlib | Number of desktops distributed evenly between monitors | Active | ||
Spectrwm | C | Text | Dynamic | None | Yes | Built-in, reads from user script | No | nv-stack, nh-stack, max | 1-pix borders, no titles | XCB | n regions, 10 workspaces visible in any region | Yes | Active | |
Stumpwm | Lisp | Lisp | Manual | None | Yes | Yes | No | Xlib | No | Active | ||||
subtle | C | Ruby | Manual | Built-in | Yes | Built-in (Ruby), external can be used as well | External | Variable grid | Variable borders, no titles | Hooks (Ruby), subtler (CLI), subtlext (Ruby extension) | Xlib | One workspace (view) per monitor (screen), placement on views via tags and per runtime | Yes | Active |
Wingo | Go | Text | Dynamic | None | Yes | No | External | floating, nv-stack, nh-stack, max | title bars in floating, skinny borders in tiling | via wingo-cmd or UNIX sockets in any programming language | X Go Binding | n regions, workspaces visible in any region | Yes | Dormant |
WMFS | C | Text | Dynamic | Built-in | Yes | Built-in, set with command, color text, images | External | nh-stack (and invert), nv-stack (and invert), mirror-v, mirror-h, grid, free, max | Variable borders, titles or no titles | commands | Xlib | Up to 36 tags(workspaces) per screen | Yes | Active |
xmonad | Haskell | Haskell | Dynamic | None | Yes | No | Yes, with xmonad-contrib and an external manager | nv-stack, nh-stack, max | Variable borders, no titles | via XMonad-Hooks-ServerMode | Xlib | n regions, 9 workspaces visible in any region | Yes / ? | Active |
Window Manager | Written in | Configured with | Management style | System tray support | On-the-fly reload | Information bars | Compositing | Default layouts | Pixel usage | External control | Library | Multiple (n) monitor behavior | ICCCM/EWMH compliant | Maintenance |
Management style
Dynamic management emphasizes automatic management of window layouts for speed and simplicity. Manual management emphasizes manual adjustment of layout and sizing with potentially more precise control, at the cost of more time spent moving and sizing windows.
Layouts
A number of common layout types appear in several tiling WMs, although the terminology varies somewhat.
- max: one window shown fullscreen (with or without a status bar, title and borders). Aka: monocle (dwm, monsterwm).
- h-stack: master area in top half, other windows stack up horizontally in the bottom half. The master area may be resizable. May be inverted top-bottom (wmfs). Aka: bottom stack (dwm), bstack(monsterwm).
- v-stack: master area in left half, other windows stack up vertically in the right half. The master area may be resizable. May be inverted left-right (wmfs). Aka: tile (dwm, monsterwm).
- nh-stack: h-stack allowing >=1 windows in master area. Aka: nbstack (dwm)
- nv-stack: v-stack allowing >=1 windows in master area. Aka: ntile (dwm)
- mirror-h: nh-stack with stacks above and below the master area
- mirror-v: nv-stack with stacks to the left and right of the master area
- h-tab: one window shown fullscreen with all window titles shown horizontally (like browser tabs)
- v-tab: one window shown fullscreen with all window titles shown vertically. Aka: stack (wmii).
- h-split: a keybinding splits the current window horizontally creating space for another
- v-split: a keybinding splits the current window vertically creating space for another
- columns: manual layout style which treats windows as belonging to vertical columns
- rows: manual layout style which treats windows as belonging to horizontal rows
- grid: window positions and sizes based on a regular NxM grid. May be automatic (like wmfs, monsterwm) or manual (like Subtle).
Key bindings
Tiling window managers are usually designed to be used entirely with the keyboard or with keyboard & mouse. This is for speed (reaching for and moving a mouse is slow) and ease of use. Sensible key bindings are crucial to making workflow fast and efficient. Some default sets are better than others, but generally the keys can be rebound as desired by the user.
Tiling Window Manager и почему вы должны его использовать
Ваш рабочий стол — беспорядок? Есть ли окна поверх окон поверх тех, кто что знает? Может быть, вы просто всегда ищете больше места на экране. Может показаться, что эти вещи являются симптомами ключевой проблемы с тем, как компьютерные графические интерфейсы обрабатывают окна, и они есть. Большинство оконных менеджеров крайне неэффективны. Tiling Window Manager является возможным решением.
Что такое Tiling Window Manager
- Что такое Tiling Window Manager
- Менеджеры с плавающими окнами VS
- Ломать пространство
- навигация
- Менеджеры верхнего окна
- Linux
- i3wm
- BSPWM
- Xmonad
- AwesomeWM
- OSX
- ChunkWM
- Аметист
- Windows
- bug.n
- AquaSnap
- Linux
- Аксессуары и инструменты
- Polybar
- Lemonbar
- Rofi
- URxvt
- напор
- Данст
- Заключительные мысли
В оконном менеджере листов используется другой подход к расположению окон. Вместо того, чтобы просто выскакивать окна, они занимают все свободное место. Когда вы открываете больше окон, пространство экрана разбивается математически, чтобы максимально эффективно его использовать.
Например, если вы откроете программу на пустом рабочем столе, она автоматически заполнит весь экран. Затем, если вы откроете другой, он откроется рядом с предыдущим, заполнив половину экрана. Отсюда все зависит от того, какой алгоритм использует оконный менеджер. Однако в этом примере можно предположить, что он будет вести себя как оконный менеджер i3. Если это так, следующее окно откроется рядом с остальными, разделив экран на трети. Эта тенденция будет продолжаться.
Возможно, это звучит не слишком хорошо, но вы можете расположить и изменить их в любое время. Это включает в себя процент экрана, который они занимают. Вы можете разбить экран на четверти, причем каждая сторона экрана будет разделена пополам по горизонтали. На самом деле, вы можете организовать экран так, как вам нравится.
Большинство оконных менеджеров, особенно в системах Linux, также используют рабочие пространства. Рабочие пространства создают виртуальные экраны, обычно до десяти. Вы можете настроить, чтобы окна открывались на определенных рабочих пространствах, а рабочие пространства — на определенных мониторах.
С помощью оконного менеджера вы получаете полный контроль над расположением окон на ваших экранах.
Менеджеры с плавающими окнами VS
Поначалу может показаться, что оконные менеджеры листов гораздо менее удобны, чем их плавающие аналоги. Естественно перетаскивать окно по экрану, верно?
Большинство оконных менеджеров листов по умолчанию имеют мозаику, но поддерживают всплывающие окна в тех случаях, когда это нецелесообразно Вы можете переключать плавающие в любое время. Когда вы переключаете плавающее окно в плавающий режим, вы можете использовать элементы управления клавиатуры, чтобы изменить его размер и заставить его работать так, как вы ожидаете.
Одно из огромных преимуществ оконных менеджеров — это возможность их настраивать. Поскольку вы настраиваете свои собственные элементы управления, вы можете быстро адаптироваться к рабочему процессу, который вы считаете удобным.
Вы когда-нибудь пытались упорядочить окна и сохранить их с помощью плавающего оконного менеджера? Это не работает хорошо, если вообще. Таким образом, вы можете получить плавающее поведение из оконного менеджера листов, но оно не работает наоборот.
Еще одним огромным преимуществом являются клавиатура и навигация. Нет необходимости использовать мышь для навигации по оконному менеджеру. Все, что вы делаете, может быть обработано с помощью горячих клавиш. Вы даже можете назначить горячие клавиши для запуска всех ваших наиболее часто используемых приложений.
Ломать пространство
Существуют разные способы укладки плитки. Обычно тайлинг обрабатывается алгоритмом. Обычно любой алгоритм листов является только методом по умолчанию, который вы можете переопределить вручную. Таким образом, не является главным приоритетом выбор оконного менеджера, который мозаичным способом. Вы всегда можете переопределить это.
Вы уже прошли через i3 плитки. Это продолжит делить экран поровну в одном направлении. Вы можете переключаться между горизонтальной и вертикальной плиткой в любое время. Это помогает организовать ваши окна. Это, наверное, один из самых простых способов плитки.
Следующий способ, которым мозаика оконных менеджеров — через алгоритм двоичного дерева. Используется BSPWM. Алгоритм двоичного дерева автоматически переключается с одного окна на другое, разбивая сфокусированное окно пополам. Итак, первое окно займет весь экран. Второе окно появится рядом с первым, занимая половину общего пространства. Третье окно разделит пространство второго окна пополам. Четвертое окно разделит третье, и так далее.
Наконец, у вас есть ручные оконные менеджеры. Это заставляет вас указать местоположение вашего следующего окна по умолчанию.
Конечно, есть и другие алгоритмы, но это самые распространенные, с которыми вы можете столкнуться.
навигация
Навигация в оконном менеджере тайлинга зависит от оконного менеджера и от того, как вы его настроили. Однако многое зависит от вашей конфигурации. Одна вещь, которую все конфигурации имеют в общем, это клавиша «Mod». Этот ключ позволяет менеджеру вдовы знать, что вы используете команду вместо простого ключа. Обычно клавиша «Mod» является клавишей Alt или клавишей Windows.
Большинство пользователей оконного менеджера тайлинга предпочитают нам Vim в качестве основы своих конфигураций, используя клавиши h, j, k и l вместе с Mod для перемещения. Для перемещения вверх нажмите k. Для перемещения нажмите j. H слева, а L справа. Затем вы добавляете еще одну клавишу, например Shift, в микс, чтобы изменить положение этих окон.
Мод и число обычно перемещаются между рабочими пространствами. Нажатие клавиши мод и номер 1 приведут вас к рабочему пространству 1. «Мод + 8» будет рабочим пространством 8. Вы поняли идею.
Существует гораздо больше настроек, которые вы можете сделать. Имейте в виду, что в большинстве оконных менеджеров нет ничего запредельного. Вы можете создавать свои собственные комбинации горячих клавиш для чего угодно.
Менеджеры верхнего окна
Есть безумное количество оконных менеджеров. Они довольно легкие и простые, поэтому их делают многие люди. Лучше всего выбрать тот, который популярен и хорошо документирован. Таким образом, вы можете быть уверены, что он все еще разрабатывается и поддерживается. Кроме того, вам будет легче найти помощь, если она вам понадобится.
Linux
В Linux самый широкий набор оконных менеджеров. Они более популярны в Linux и их легче создавать для Linux с помощью доступного набора инструментов с открытым исходным кодом. Это очень небольшая выборка, поэтому, если у вас есть избранное, которого нет в списке, это просто потому, что цель здесь — сделать его как можно более простым, а не подавлять новых пользователей.
Если вы работаете в Linux и никогда раньше не использовали менеджер окон, выберите i3. Он очень популярен, прост в использовании и отличная документация. Вы не будете разочарованы.
i3 хорошо работает с множеством внешних программ и аксессуаров. Он также использует простой текстовый файл конфигурации, который легко читать новым пользователям и людям, не имеющим опыта программирования.
BSPWM
BSPWM — это сверхлегкий сверхтонкий оконный менеджер, который по умолчанию использует разбиение экрана двоичного дерева. Это не идет с целым рядом из коробки, ожидая, что вы настроите все по своему вкусу.
BSPWM также использует конфигурацию сценариев оболочки, которую довольно легко понять пользователям Linux, но она не самая лучшая для новичков.
Также важно отметить, что BSPWM ожидает от вас появления собственных приложений поддержки, таких как строка состояния и панель запуска. Есть много отличных вариантов, но вам нужно найти их самостоятельно.
Xmonad
Xmonad немного отличается. Весь менеджер окон написан на Haskell, как и конфигурация. Это означает, что вам нужно знать хотя бы немного о Haskell для настройки Xmonad.
Это не очень хороший вариант для новых пользователей, но если вы программист и ищете вариант, позволяющий настроить ваш рабочий стол с использованием реального кода, Xmonad — хороший выбор.
AwesomeWM
Если вы искали что-то, что поставляется с «батарейками в комплекте», например, i3 и использует программирование для конфигурации, например, Xmonad, AwesomeWM может быть тем, что вы ищете.
AwesomeWM поставляется с собственной строкой состояния и по умолчанию может обрабатывать множество вещей. Он использует язык сценариев Lua для своей конфигурации. Это более простой язык программирования, но он по-прежнему предоставляет множество опций для настройки AwesomeWM.
OSX — это Unix-подобная система, и она любима разработчиками. Не так уж и сложно понять, почему люди захотят размещать там оконные менеджеры. Хотя у него не так много вариантов, как у Linux, есть еще несколько надежных оконных менеджеров для OSX.
ChunkWM
ChunkWM — довольно новый проект. Это новое имя старого фаворита, KWM. ChunkWM по умолчанию использует схему двоичного разбиения и использует простые текстовые конфигурации.
Вы можете установить ChunkWM на OSX, используя homebrew, и настроить его оттуда. Сам ChunkWM написан в основном на C ++ и Objective -C ++, так что он работает так же быстро и быстро, как и вы.
Аметист
Аметист — еще один отличный вариант для OSX. Он больше похож на Xmonad, но написан в основном на Swift, поэтому хорошо вписывается в экосистему Apple.
Не беспокойтесь о настройке Аметиста. Это идет из коробки с интеллектуальными средствами управления, которые сделают навигацию и использование этого легким.
Windows
Windows — не лучшее место для таких вещей, как мозаичные оконные менеджеры. Он построен так, чтобы работать так, как он был спроектирован, и не требует особых настроек. Тем не менее, есть несколько хороших опций, которые могут дать вам некоторые преимущества тайлинга WM на Windows.
Bug.n — это оконный менеджер в традиционном стиле для Windows. Это скрипт, который вы можете добавить, чтобы ваш рабочий стол по умолчанию вел себя как оконный менеджер. Этот скрипт добавляет макеты листов, а также горячие клавиши для навигации.
Bug.n поддерживает мозаику так же, как и плавающие окна, как в оконных менеджерах Linux. Он также копирует функциональность рабочей области оконных менеджеров плиточного Linux.
Так как он в значительной степени управляется с помощью клавиатуры, bug.n — лучший вариант для тех, кто знаком с чистой навигацией с помощью клавиатуры, в противном случае он будет немного подавляющим.
AquaSnap
AquaSnap является отличным промежуточным звеном для пользователей Windows, которые ищут большинство функций оконного менеджера листов без необходимости полностью его выполнять.
Как следует из названия, это позволяет вам защелкивать окна в углах и легко размещать макет. Это не полнофункциональный оконный менеджер, и он не распределяется автоматически. Это позволяет вам щелкать и перетаскивать окна, чтобы изменять их размер, сохраняя при этом макет в виде мозаики.
Аксессуары и инструменты
Есть несколько дополнительных программ, которые очень хорошо сочетаются с оконными менеджерами. Они помогают расширить функциональность оконного менеджера и помогут настроить вещи по своему вкусу.
Polybar
Polybar — это строка состояния, которая была разработана для работы с i3 и BSPWM, но ее, безусловно, можно применить к другим. Эта строка состояния поставляется с базовым минимальным функционалом, встроенным для многих вещей. Это облегчает начало работы. К счастью, он также позволяет вам настраивать и переопределять любые функции, которые вы хотите. Polybar полностью поддерживает сценарии, поэтому, если вы знакомы с сценариями Bash, вы можете по-настоящему повеселиться с ним.
Lemonbar
Lemonbar — это другая строка состояния, похожая на Polybar. Этот еще более минималистичен, чем Polybar, и у него не так много всего для начала. Вы должны создать функциональность самостоятельно. Он также полностью поддерживает сценарии, поэтому, опять же, у вас нет никаких ограничений.
Rofi — минимальная программа запуска приложений. Вы можете сопоставить его с горячей клавишей и использовать для запуска любой программы, которую вы вводите. Rofi запоминает программы, которые вы ищете, и выводит их в список недавно / наиболее часто используемых.
Вы также можете настроить внешний вид Rofi, чтобы он соответствовал вашему рабочему столу. Это не так сложно с помощью файла Xresources в Linux.
URxvt
URxvt, или Rxvt-Unicode, является эмулятором терминала. Вам не обязательно использовать тот или иной эмулятор терминала с оконным менеджером листов, но лучше использовать более минимальный, не привязанный к какой-либо конкретной графической среде. URxvt соответствует этому описанию.
В качестве дополнительного бонуса, URxvt является супер конфигурируемым. Вы можете настроить его практически на любой внешний вид. Это включает в себя цвет, текст и фон.
напор
Vim не имеет большого отношения к оконным менеджерам листов, но когда вы обнаружите, что используете их, вам захочется делать все больше и больше из командной строки. Для этого Вим твой друг.
Vim — очень мощный текстовый редактор. Это, наверное, лучший текстовый редактор в мире. Он имеет и абсолютно безумное количество доступных плагинов, которые делают его способным к еще большему.
Данст
Если вы достигли минимального уровня с помощью оконного менеджера, вам все еще, вероятно, нужны уведомления на рабочем столе. Если вам нужны уведомления, которые вы можете настроить в соответствии с нашим рабочим столом, вы можете использовать Dunst. Dunst — это легкая система уведомлений, которую вы можете легко настроить с помощью простой текстовой конфигурации. Измените размер, цвет и текст уведомлений, которые вы получаете.
Заключительные мысли
Tiling Window Manager не для всех. Требуется приличное количество терпения и настройки, чтобы привыкнуть к навигации, используя только клавиатуру. Сначала это будет неуклюже и неловко, но если вы продолжите движение, вы, возможно, просто поймете, что это намного быстрее и эффективнее.
Также важно помнить, что оконные менеджеры листов лучше в Linux, чем OSX и Windows, а OSX намного лучше, чем Windows. Это связано с их происхождением Unix. Если вы решите использовать оконный менеджер листов, ожидайте, что большинство поддержки и дополнительных приложений сосредоточатся на Linux.
Если все это вас еще не напугало, вы можете просто изменить свой взгляд на использование компьютера и полюбить его гораздо больше.