快速隐藏和呼出终端
下拉式终端(drop-down terminal emulator)有好几个,常见的有 Yakuake、Guake、Tilda 等,有一个很明显的好处,在用时可以热键(多数默认是按 F12)呼出窗口,不需要时可将窗口隐藏。
如果是初次接触,估计内心还会有点震惊,仿佛终端界的一股清流。其实这里的核心就是招之能来,来之能战,战完归营,我党就是这么指挥军队的,平时喝酒划水吃饭问题不大,大场面来的时候,要光速铁锤出击。
查找网上的资料,这种快速呼出界面的灵感来自 QUAKE 游戏,打游戏时按热键弹出配置界面,所以很多时候又名为 quake-style、quake-mode、quake-like,quake 没玩过,cs 等游戏应该玩过,我想差不多就是那个意思。
题外话说了很多,如今使用 alacrity 终端,想要在 labwc 窗口环境下,或者说在 Wayland 合成器(compositor),该如何实现类似功能呢?
下面就是我的折腾之路:
1. 快捷隐藏
大部门窗口管理器都是可以隐藏/最小化窗口的,比如 Gnome 的 Super+H
,因为以前使用 Gnome 环境偏多,我在 labwc 窗口管理器下也是同样的设置(按键盘上面的 Win 键 + h
)。
1<keybind key="W-h">
2 <action name="Iconify" />
3</keybind>
labwc -r
重新读取配置后,便可以随时隐藏活动窗口,自然终端软件也不例外。
2. 快速呼出
快速呼出,功效上相当于下拉出来,反正就是弹出界面给人用。可能下拉的方式更加亮眼,逼格略高一丢丢。作为一个实用主义者,并不是很在乎。
快速呼出对窗口管理器来说,就是重新前台聚焦。在 wayland 环境下,找到了一个命令行工具 wlrctl,它实现了 wlr-foreign-toplevel-management 协议,还挺有意思是的。
- 能调用软键盘打字
1➜ ~ wlrctl keyboard type 'Hello, world!'
2➜ ~ Hello, world!
- 控制光标移动
例如连续控制光标向右 50、向上 70 像素移动
1➜ ~ wlrctl pointer move 50 -70
2➜ ~ wlrctl pointer move 50 -70
3➜ ~ wlrctl pointer move 50 -70
4➜ ~
- 聚焦软件
这个才是我们本次重点关心的,且看 labwc 配置:
1<keybind key="W-Return">
2<action>
3 <name>Execute</name>
4 <command>sh -c 'wlrctl window focus Alacritty || alacritty'</command>
5</action>
6</keybind>
关键点是这个 wlrctl window focus Alacritty || alacritty
,意思是 Alcaritty 在运行的话,直接 focus 切换到前台(聚焦),如果没有在运行,直接启动。
这样不论 Alacritty 是否在运行,都可以通过 Win + Return
快捷键呼出终端。
有读者可能会有疑问,为什么 Alacritty 一会首字母是大写,一会又是小写。
这个要看 wlrctl 的 manual:
focus [matches...]
Instruct the compositor to focus matching windows.
A match is a colon separated attribute/value pair. e.g. To match a firefox window, a suitable match value is app_id:firefox. You may give any number of match specifiers, and a window must match all of them to be considered. If the app_id or title keys are specified more than once, a window may match any of the given values. Otherwise later key value pairs override previous ones. A match without a key is assumed to be an app_id, so just firefox works in the example above.
Currently supported attributes are: app_id, title, and state.
因为终端在运行的时候 app_id 被识别为 Alacritty
:
1➜ ~ ps -ef |grep -i alacritty
2mephisto 35359 1 0 11:32 ? 00:00:00 sh -c wlrctl window focus Alacritty || alacritty
3mephisto 35361 35359 0 11:32 ? 00:00:50 alacritty
4mephisto 58501 23717 0 15:20 pts/7 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox -i alacritty
5➜ ~ wlrctl window focus Alacritty
6➜ ~ echo $?
70
8➜ ~ wlrctl window focus alacritty
9➜ ~ echo $?
101
11➜ ~
首字母大写的时候才能匹配到,返回 0,如果真实终端程序未运行,||
前面返回假,直接运行 alacritty
启动终端。
这样一番操作后,即可以快速隐藏/呼出终端(分别对应win + h
/win + return
),如下面动图所示:
录屏制作 gif 的工具不给力,图片有点模糊,原谅下,但能看清在不断切换。
可能有读者习惯于用一个按键 F12
来隐藏/呼出,那得自己想办法用一个中间变量把状态保存起来,每次按键触发一次反转,布尔值切换。
个人认为没必要,win + h
可隐藏任意窗口,约定俗成,差不多肌肉记忆了。
win + return
呼出是窗口管理器 labwc 的默认行为。
要用时呼出,不用时隐藏,收缩到状态栏,更改下匹配软件,理论上可以自由切换任意软件,终端属于高频软件,这样配置我很满意 😄。
版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。
相关文章:
- greetd和regreet使用教程
- Wayland环境自动切换壁纸
- Wayland 环境下gif录屏
- 应用启动器yofi使用配置
- Ubuntu设置alacritty为默认终端
- alacritty无法输入中文以及标题栏问题
- alacritty 终端使用
- 网站添加回到顶部功能
- Hysteria科学上网简要
- 我的工具箱