Решение, которое я придумал, состоит в том, чтобы добавить привязку клавиш к функции split_top в cfg_tiling.lua. Чтобы разделить по горизонтали, я добавил:
kpress(META.."Z", "WTiling.split_top(_, 'bottom')")
к функции депривязки WTiling. я также добавил
kpress("Z", "Wtiling.split_top(_, 'left')")
к привязкам подкарты META.."K".
Функция split_top разбивается в корне разбиваемого дерева. Это создаст новый кадр, который разделит всю рабочую область, а не текущий кадр.
Одна проблема с размером, которую я заметил при таком подходе, заключается в том, что он попытается разделить рабочее пространство ровно пополам. Если есть горизонтальная рамка, разделяющая рабочую область, split_top изменит ее размер до наименьшего размера и добавит новую рамку под ней. Если есть вертикальная рамка, при добавлении новой рамки она станет шириной около 10 пикселей. Проблема с размером по горизонтали. Новые кадры имеют высоту 0:
Start ->Mod1+Z ->Mod1+Z
-1--2-- -1--2-- -1--2--
| | | | | | | | |
| | | | | | | | |
-3----- -3----- -3-----
| | -4----- -4-----
| | | | -5-----
| | | | | |
| | | | | |
------- ------- -------
Проблема с размером по вертикали. Новые кадры имеют ширину 0:
Start -> Mod1+K Z -> Mod1+K Z
-1----2---- -4--1-2---- -5-41-2----
| | | | || | | ||| |
| | | | || | | ||| |
| |3---| | ||3---| | |||3---|
| | | | || | | ||| |
| | | | || | | ||| |
----------- ----------- -----------
Другая проблема заключается в том, что фокус не переключается на вновь созданный кадр. Нажатие Mod1+Z создаст кадр, но пользователь должен нажать Mod1+TAB на кадр, чтобы манипулировать им.
Это только начало, но комплексное решение будет проверять кадры, которые уже разделяют рабочее пространство, и вместо этого разделять их и перемещать фокус на новый кадр.
person
John Mercier
schedule
03.07.2014