# 231104 --google-translate --knn


=====================

перевод отрывка из:


The anatomy of the modern window manager

A case study in developing a novel top-level reparenting list-based

tiling window manager for X in an Agile manner


Author: Max van Deurzen

s4581903

2019

=========================


2.2.3


Tiling ( en. - укладка плитки )


Most contemporary window managers employ multiple overlapping windows, and leave the spatial arrangement of the individual windows to the user.


Большинство современных оконных менеджеров используют несколько перекрывающихся окон и оставляют пользователю возможность пространственного расположения отдельных окон.


As a consequence, important information may be hidden in occluded windows, and users spend a significant amount of time switching between windows to reveal obscured content [16,17] .

Как следствие, важная информация может быть скрыта в закрытых окнах, и пользователи тратят значительное количество времени на переключение между окнами, чтобы выявить скрытое содержимое [16,17].

An alternative approach to a stacking window manager and its overlapping windows is the tiling window manager that tiles windows beside each other, in a grid-like format.


Альтернативным подходом к составному оконному менеджеру и его перекрывающимся окнам является мозаичный оконный менеджер, который размещает окна рядом друг с другом в формате сетки.



In a tiled window arrangement, the screen is often partitioned to be

filled completely by windows.


При тайлинге часто экран разделяется так, чтобы быть полностью заполным окнами.




Usually, depending on the tiling scheme, no two windows will overlap each other.


Обычно, в зависимости от схемы листов, никакие два окна не перекрывают друг друга.


In certain workflows, tiling window management has proved to be superior [18,19,20] .

В некоторых рабочих процессах управление окнами мозаики оказалось более эффективным [18,19,20].

Whenever there are more than a few windows on the screen, managing them for effective viewing can be an annoyance to the user [21] .


Если на экране несколько окон, управление ими для эффективного просмотра может раздражать пользователя [21].


Users end up spending much of their time manipulating window position and structure, rather than working with the content of the windows, and on the problems at hand [21] .


В конечном итоге пользователи тратят большую часть своего времени на манипулирование положением и структурой окон, вместо того, чтобы работать с содержимым окон и решать текущие проблемы [21].



Tiling offers the option of automatic control of windows, benefiting users who do not want or need to arrange and rearrange windows [21] .


Тайлинг предлагает возможность автоматического управления окнами, что приносит пользу пользователям, которые не хотят или не должны упорядочивать и переставлять окна [21] .


The desktop metaphor inherently explains the problem with a stacking approach.


Метафора рабочего стола по своей сути объясняет проблему стекового подхода.


It is all too familiar, the problem of locating a piece of paper that is not immediately visible on a messy desk.


Это слишком знакомо: проблема найти лист бумаги, который не сразу видно на грязном столе.


The same situation arises when windows are hidden behind others [21] . In a tiled environment, all windows are visible and readily accessible at all times [21] .


Такая же ситуация возникает, когда окна скрыты за другими [21] . В мозаичной среде все окна всегда видимы и легко доступны [21].


Partially overlaid windows are often simply wasting space, causing unnecessary distraction [21] . In tiled window arrangements, screen space is always going to be allocated to some useful purpose [21] .


Частично перекрытые окна часто просто тратят пространство, вызывая ненужное отвлечение внимания [21] . При расположении окон плиткой пространство экрана всегда будет отведено для какой-то полезной цели [21] .


Certain types of windows, such as pop-up windows, dropdown menus, and fixed-size windows, are not suited for tiling. These often require a predefined position on screen, and mostly have a static application interface. Good tiling window managers will detect such windows, and have them operate in a floating state instead. If these windows were to be sent to the background, they would be fully covered by the windows in tiling mode. As such, windows in the floating state should always be rendered in front of those in tiled mode.


Определенные типы окон, такие как всплывающие окна, раскрывающиеся меню и окна фиксированного размера, не подходят для мозаики. Они часто требуют заранее определенного положения на экране и в большинстве случаев имеют статический интерфейс приложения. Хорошие оконные менеджеры мозаичных окон обнаруживают такие окна и вместо этого заставляют их работать в плавающем состоянии. Если бы эти окна нужно было отправить на задний план, они были бы полностью закрыты окнами в режиме мозаики. Таким образом, окна в плавающем состоянии всегда должны отображаться перед окнами в мозаичном режиме.



There are many different ways to categorize tiling window managers. Some incorporate techniques that are comparable, while others have little to nothing in common. Amongst contemporary tiling window management, two tiling techniques are generally employed: list-based and tree-based tiling [22] . The names of these techniques refer to the underlying data structures used to store and manipulate windows. It is worth noting that there are also tiling window managers that integrate both of these techniques, and there are tiling window managers that do neither.


Существует много разных способов классификации тайловых оконных менеджеров. Некоторые используют сопоставимые методы, тогда как другие практически не имеют ничего общего. В современном управлении окнами с использованием мозаики обычно используются два метода: списковый и древовидный [22]. Названия этих методов относятся к базовым структурам данных, используемым для хранения окон и управления ими. Стоит отметить, что существуют также тайловые оконные менеджеры, которые объединяют оба этих метода, а есть тайловые оконные менеджеры, которые не делают ни того, ни другого.



#################################################


List-based tiling


A list-based tiling window manager uses an ordered list to keep track of its windows.


Списковый тайловый менеджер окон использует упорядоченный список для отслеживания своих окон.



Windows are all assigned a unique number based on their position in the ordered list.

Всем окнам присвоен уникальный номер в зависимости от их положения в упорядоченном списке.


The number associated with each window determines where it is to be tiled on screen.

Номер, присвоенный каждому окну, определяет, где оно должно располагаться на экране.


The list-based tiling window manager will have several predefined layouts that regulate the size and position of each window in the ordered list.


Списковый тайловый менеджер окон будет иметь несколько предопределенных макетов, которые регулируют размер и положение каждого окна в упорядоченном списке.


Layouts do not stipulate a specific number of windows to control, and are, in that sense, dynamic.

Макеты не предусматривают определенное количество окон для управления и в этом смысле являются динамическими.

That is, adding a new window to the list will usually—depending on the layout and its policy—cause all windows to be rearranged.

То есть добавление нового окна в список обычно (в зависимости от макета и его политики) приводит к перестановке всех окон.

This is a direct consequence of the tiling philosophy: the screen is to be fully filled with windows, and no window is to be covered by any other window.

Это прямое следствие философии мозаики: экран должен быть полностью заполнен окнами, и ни одно окно не должно быть закрыто другим окном.

List-based tiling window managers offer users the functionality to change the currently active layout on the fly.


Списковые тайловые оконные менеджеры предлагают пользователям возможность изменять текущий активный макет на лету.


This allows for highly efficient workflows, in which the user continually switches to the layout that best suits their latest needs.

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

Users are also able to change the order of the windows in the list, therein directly manipulating their placement on screen.

Пользователи также могут изменять порядок окон в списке, тем самым напрямую управляя их расположением на экране.

Layout nomenclature is not standardized; each window manager will have their own naming scheme.


Номенклатура компоновки не стандартизирована; каждый оконный менеджер будет иметь свою собственную схему именования.


The underlying concepts, however, are mostly the

same.


Однако основополагающие концепции в основном

одинаковы.



The most common layout found in list-based tiling window managers today is stack mode, sometimes called master-stack mode, master mode, or tile mode.


Наиболее распространенной компоновкой, встречающейся сегодня в мозаичных оконных менеджерах на основе списков, является режим стека, который иногда называют режимом главного стека, основным режимом или режимом плитки.


In it, one window—the first window in the ordered list—is appointed to be the master window.

В нем одно окно — первое окно в упорядоченном списке — назначается главным окном.

The master window is considered to be the most important window, in that it gets assigned the largest partition of the screen.


Главное окно считается самым важным окном, поскольку ему назначается самый большой раздел экрана.


All other windows in the ordered list—those deemed non-master windows—are

part of the so-called stack.


Все остальные окна в упорядоченном списке, считающиеся неглавными,

часть так называемого стека.




Ordered list containing 5 windows


Упорядоченный список, содержащий 5 окон




Window arrangement on screen


Расположение окон на экране




Master windows fill the left half of the screen, while windows in the stack are stacked on top of each other on the right. Non-master windows all take up an equal part of the portion of the screen devoted to the stack.


Главные окна заполняют левую половину экрана, а окна в стопке располагаются друг над другом справа. Все неглавные окна занимают равную часть экрана, отведенную под стек.


A variant of the stack mode layout is n-master mode. Window managers employing this layout will often provide the ability to dynamically change the number of master windows in stack mode. For example, if n = 2:


Вариантом схемы режима стека является режим n-master. Оконные менеджеры, использующие этот макет, часто предоставляют возможность динамически изменять количество главных окон в режиме стека. Например, если n = 2:




Just as in stack mode, non-master windows all have the same size. When there are multiple master windows, those too take up equal parts of their dedicated portion of the screen. If ever there are no master windows, or no windows in the stack, all windows in the ordered list are stretched along the entire width of the screen.


Как и в режиме стека, все неглавные окна имеют одинаковый размер. Если имеется несколько главных окон, они тоже занимают равные части выделенной части экрана. Если когда-либо главных окон или окон в стеке нет, все окна в упорядоченном списке растягиваются по всей ширине экрана.





A third common layout is aptly named monocle mode, fullscreen mode, or sometimes max mode, in which all windows in the ordered list fill the entire screen. Of course, technically, this does not comply with our definition of tiling, for all windows overlap each other. Notwithstanding, this layout can prove tremendously useful, especially in situations where every program that is being worked with has a more involved application interface.


Третий распространенный макет удачно назван режимом монокля, полноэкранным режимом или иногда максимальным режимом, в котором все окна в упорядоченном списке заполняют весь экран. Конечно, технически это не соответствует нашему определению тайлинга, поскольку все окна перекрывают друг друга. Тем не менее, такая схема может оказаться чрезвычайно полезной, особенно в ситуациях, когда каждая программа, с которой работаете, имеет более сложный интерфейс приложения.


Some window managers allow its users to define their own layouts. Usually, this type of customization is more geared towards developers, as adding layouts mostly involves altering source code. Most layouts will revolve around the master-stack disposition, allowing users to dynamically change the number of master windows, like in n-master mode, and updating the geometry of the windows on screen accordingly. An example of such a custom layout, spiral mode, with two master clients:


Некоторые оконные менеджеры позволяют пользователям определять свои собственные макеты. Обычно этот тип настройки больше ориентирован на разработчиков, поскольку добавление макетов чаще всего предполагает изменение исходного кода. Большинство макетов основаны на расположении главного стека, позволяя пользователям динамически изменять количество главных окон, как в режиме n-master, и соответствующим образом обновлять геометрию окон на экране. Пример такого пользовательского макета, спиральный режим, с двумя главными клиентами:





There are many more layouts employed amongst the vast choice of list-based tiling window managers.


Среди огромного выбора оконных менеджеров листов на основе списков используется гораздо больше макетов.



It is common for list-based tiling window managers to offer the ability to dynamically change the so-called master factor, or, the factor of master portion width to screen width. In the examples presented above, in which there are both master clients and non-master clients, the master factor is 50%.


Оконные менеджеры листов на основе списков обычно предлагают возможность динамического изменения так называемого главного коэффициента или коэффициента ширины основной части по ширине экрана. В представленных выше примерах, в которых есть как главные, так и неглавные клиенты, главный коэффициент равен 50%.






Master factor of 70% (рис)

главный коэффициент равен 70%.



When a new window is added to the environment, most list-based tiling window managers will prepend it to the ordered list. Some are implemented to insert the new window behind the window that currently has input focus, and others will append it to the list.


Когда в среду добавляется новое окно, большинство тайловых списковых оконных менеджеров добавляют его в начало упорядоченного списка. Некоторые реализуют вставку нового окна за окном, которое в данный момент имеет фокус ввода, а другие добавляют его в список.



List-based tiling can be extremely useful if the available layouts tailor exactly to the user’s every whim. If they do not, it can become a frustration, and even a deterioration of productivity. This inflexibility has prevented mainstream adoption, as listbased tiling has only seen popularity amongst developers and hobbyists.


Мозаика на основе списков может быть чрезвычайно полезной, если доступные макеты точно соответствуют любым прихотям пользователя. Если они этого не сделают, это может привести к разочарованию и даже к снижению производительности. Эта негибкость помешала массовому внедрению, поскольку тайлинг на основе списков стал популярен только среди разработчиков и любителей.


Refer to Appendix A for a discussion on and comparison between contemporary list-based tiling window managers.



#############################################################


Tree-based tiling


Tree-based (or manual) tiling window managers internally represent windows as leaves of a tree. Internal nodes and the root of the tree are dividers (sometimes called split containers or splits).


Древовидные (или ручные) тайловые оконные менеджеры представляют окна как листья дерева. Внутренние узлы и корень дерева являются разделителями (иногда называемыми разделенными контейнерами или разделениями).


Dividers recursively split up the set of windows and dividers passed along by its parent into constituents.


Разделители рекурсивно разделяют набор окон и разделителей, переданных его родительским элементом, на составляющие.


For this reason, the tree can be seen as a nested container. Dividers lay out their direct children into either a horizontal local arrangement, or a vertical one. Consider the following tree.Р


По этой причине дерево можно рассматривать как вложенный контейнер. Разделители размещают свои прямые дочерние элементы либо в горизонтальном локальном расположении, либо в вертикальном. Рассмотрим следующее дерево.




It corresponds to the following window arrangement on screen.


Это соответствует следующему расположению окон на экране.



Here, the red lines represent the horizontal divider specified by the root of the tree. It has three children, two of which are themselves dividers. It divides the screen into three equally sized partitions that are evenly distributed amongst its children. The blue lines represent the two vertical dividers; both have two children, all of them being windows. These two dividers hence each divide their assigned portion of the screen into two. Windows fill the portion of the screen allocated to them by their parent (which is always a divider).


Здесь красные линии представляют собой горизонтальный разделитель, заданный корнем дерева. У него трое дочерних элементов, двое из которых сами являются разделителями. Он делит экран на три раздела одинакового размера, которые равномерно распределяются между его дочерними элементами. Синие линии представляют собой два вертикальных разделителя; у обоих двое детей, и все они — окна. Таким образом, каждый из этих двух разделителей делит назначенную ему часть экрана на две части. Окна заполняют часть экрана, выделенную им их родителем (который всегда является разделителем).



Whereas with list-based tiling, the user has little to no control over where a new window is placed, with tree-based tiling, a user can specify the exact position and local tiling arrangement. Say we wanted to add a window to the arrangement shown above, between windows 1 and 2. The user would direct input focus to window 1, and spawn the new window. The resulting arrangement is the following.


В то время как при разбиении на основе списка пользователь практически не имеет контроля над тем, где размещается новое окно, при разбиении на основе дерева пользователь может указать точное положение и локальное расположение плиток. Допустим, мы хотим добавить окно в расположение, показанное выше, между окнами 1 и 2. Пользователь направит фокус ввода на окно 1 и создаст новое окно. В результате получается следующее.





Because the local arrangement was vertical (win dow inherits this, and is tiled along with its siblings in a vertical layout. The user may want to tile windows horizontally, while the local arrangement is vertical. Tree-based tiling window managers allow users to specify this, internally calling for a new divider to be created. If we wanted to add a new window to the right of window 4, we would navigate to window 4, instruct the window manager that upon adding a new window, we want a horizontal divider to be created, and we would get the following.


Поскольку локальное расположение было вертикальным (окно наследует это и размещается вместе со своими братьями и сестрами в вертикальном расположении. Пользователь может захотеть расположить окна плиткой горизонтально, в то время как локальное расположение является вертикальным. Древовидные оконные менеджеры мозаики позволяют пользователям указывать этот внутренний вызов создания нового разделителя. Если бы мы хотели добавить новое окно справа от окна 4, мы бы перешли к окну 4, проинструктировали оконный менеджер, что при добавлении нового окна нам нужен горизонтальный разделитель. нужно создать, и мы получим следующее.



Often, such window managers will also allow the user to adjust the width and height of a window within its local arrangement. And, as with list-based tiling, the user can swap the positioning of two windows within the tree (and hence, on screen).


Часто такие оконные менеджеры также позволяют пользователю регулировать ширину и высоту окна в пределах его локального расположения. И, как и в случае с мозаикой на основе списка, пользователь может поменять расположение двух окон в дереве (и, следовательно, на экране).


Just as list-based tiling, tree-based tiling is deterministic, in that the representation is never ambiguous with regard to the corresponding window arrangement.


Так же, как и тайлирование на основе списков, тайлирование на основе дерева является детерминированным, поскольку представление никогда не бывает двусмысленным в отношении соответствующего расположения окон.



Tree-based tiling offers the user the ability to fine-tune the arrangement, essentially allowing for custom layouts to be constructed as the user sees fit. For this reason, tree-based tiling window managers tend to garner more widespread popularity than their list-based counterparts, though still not nearly as much as traditional stacking window managers do.


Древовидная плитка дает пользователю возможность точно настроить расположение, по сути позволяя создавать собственные макеты по своему усмотрению. По этой причине древовидные мозаичные оконные менеджеры, как правило, приобретают более широкую популярность, чем их коллеги на основе списков, хотя все же не так сильно, как традиционные многоуровневые оконные менеджеры.



Refer to Appendix B for a discussion on and comparison between contemporary tree-based tiling window managers.



////////////////////////////////////////////////////////////////////////



A List-based Tiling Window Managers 71

A.1 wmii . . . . . . . . . . . . . . 71

A.2 dwm . . . .. . . . . . . . . . . 72

A.3 awesome . . . . . . . . . . . . .73

A.4 xmonad . . . . . . . .. . .. . . 73


B Tree-based Tiling Window Managers 75

B.1 i3 . . . . . . . . . .. . .. . . .75

B.2 bspwm . . . . . . . . . .. .. . . 76

B.3 herbstluftwm . . . . . .. . . . . .77