在概念窗口管理器中拆分工作空间

时间:2014-06-30 16:26:49

标签: linux lua window-managers

我一直在使用Notion Window Manager(http://notion.sourceforge.net/)几周。我想知道是否有可能创建一个按照META + S和META + K S水平和垂直分割帧的方式分割工作空间的键绑定。

所以,如果我在这样的工作空间中有两个垂直框架:

-----
|1|2|
| | |
| | |
| | |
-----

水平分割的键绑定应添加一个横向跨越工作区的新帧:

-----
|1|2|
| | |
-----
| 3 |
-----

目前,META + S仅水平拆分所选框架:

-----
|1|2|
| | |
|-| |
|3| |
-----

有没有办法在Notion中水平或垂直分割整个工作区?

2 个答案:

答案 0 :(得分:1)

我想出的解决方案是在cfg_tiling.lua中为split_top函数添加一个键绑定。为了横向拆分,我添加了:

kpress(META.."Z", "WTiling.split_top(_, 'bottom')")

到WTiling defbindings函数。我还添加了

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到框架来操作它。

这是一个开始,但是全面的解决方案将检查已经拆分工作区的帧并将其拆分并将焦点更改为新帧。

答案 1 :(得分:0)

是的,你可以。

您需要将绑定放在工作空间上下文中,或者从frame / mplex上下文中查找管理工作区,然后再调用split。

(我会发布代码和更具体的术语,但我现在不在概念机器前面,不想使用错误的东西来混淆。)