我想在我的电脑上使用类似 node-WebKit 的东西制作某种状态窗口/系统监视器,这很简单。问题是,我希望能够在 i3 中使用键盘命令将其切换为全屏,无论我在 i3 中的哪个工作区中。我该怎么做?
答案1
你可以将以下两行放入你的i3配置:
for_window [title="^WINDOW_TITLE$"] mark "STATWIN", move scratchpad
bindsym Mod4+s [con_mark="^STATWIN$"] fullscreen enable, scratchpad show
WINDOW__TITLE
您的状态窗口的确切标题在哪里,以及Mod4+s
(Win+ s)预期的快捷方式是什么。如果按Win+ ,s它将在当前工作区全屏显示窗口,或者如果窗口已经存在,则将其隐藏。
解释:
初始化:
for_window [title="^WINDOW_TITLE$"] mark "STATWIN", move scratchpad
for_window
可用于title="^WINDOWS_TITLE$"
在创建窗口时运行符合给定条件(此处 )的特定命令。这意味着标题必须与窗口的初始标题相匹配。还有其他条件,如class
或instance
。根据您的程序,您可能需要使用除 之外的其他条件,title
甚至是条件组合(请参阅i3 用户指南中的标准部分了解更多信息)mark
将一个唯一的标签放在窗口上,稍后可以使用该标签与con_mark
标准一起引用该窗口。这里的标签是STATWIN
,
:需要注意的是,,
用于链接命令,而不是;
。窗口标准([...]
)仅适用于下一个;
(当然,也是行尾)。move scratchpad
将窗口移至 Scratchpad,可用于存放您想要轻松访问的窗口。(请参阅用户指南中有关 Scratchpad 的部分)
访问窗口
bindsym Mod4+s [con_mark="^STATWIN$"] fullscreen enable, scratchpad show
bindsym
将命令绑定到快捷方式(此处Mod4+s
)- 标准清单——
[con_mark="^STATWIN$"]
告诉i3针对所有符合所有条件的窗口(而不是当前聚焦的窗口)运行以下命令。条件以正则表达式的形式进行匹配,因此您可以/应该使用^
和$
分别表示字符串的开始和结束。这里唯一的条件是con_mark="^STATWIN$"
,匹配标记为(精确)的窗口(只能有一个)STATWIN
,这是在初始化中完成的。 fullscreen enable
每次都需要执行此操作,因为 Scratchpad 中的窗口通常显示为浮动窗口。(确切地说:虽然可以随时在 Scratchpad 窗口上设置全屏状态(可见或不可见),但当窗口被 隐藏时,该状态将被删除。scratchpad show
如果窗口在设置全屏时不可见,它将保持不可见,但会在 上全屏显示scratchpad show
)- 再次
,
需要用来分隔命令,因为该标准应该适用于两个命令 scratchpad show
如果窗口之前不在当前工作区中,则使窗口在当前工作区中可见。如果窗口已经在当前工作区中,则窗口将被隐藏。