Yakuake (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 Yakuake翻译。上次翻译日期:2021-1-29。如果英文版本有所更改,则您可以帮助同步翻译。

YakuakeKDE 里的下拉式终端,与 Guake 或者 Tilda 类似。

安装

官方仓库安装 yakuake

使用

在终端用以下命令打开 Yakuake

$ yakuake

你可以点击右下角的扳手按钮,选择管理配置文件来配置你的 Yukuake,点击 Configure Shortcuts 来配置快捷键。同样的,如果你要将 Yukuake 锁定在屏幕上,你可以点击扳手右边的锁按钮。

配置

在 Plasma 桌面环境中开启模糊背景特效

通过 Yakuake 的图形界面配置窗口可以修改大部分配置选项,不过还有一部分选项只能通过编辑配置文件的方式启用,比如在 Plasma 下开启模糊背景特效。

注意: 在 Yakuake 的 Konsole 配色方案启用模糊背景选项并不能对 Yakuake 的窗口开启模糊背景,反而会显示一则提示说 Konsole 在桌面特效启用前启动。您需要重启 Konsole 来显示透明背景。 关于这则提示在 上游 bug 列表有几条 bug 汇报 。这提示本身比较误导,因为导致提示的原因是 Yakuake 使用的 KonsoleParts 不支持给嵌入它的宿主窗口添加半透明和模糊特效,但是 Yakuake 本身可以给自己的窗口添加这些特效。

要给 Yakuake 开启模糊背景特效,需手动编辑以下配置文件:

~/.config/yakuakerc
[Appearance]
Blur=true
Translucency=true

然后重启 Yakuake 应用配置修改。

脚本控制 Yakuake

Guake 一样,Yakuake 允许用户在运行期通过发送 D-Bus 消息来控制它。于是可以用这种方式在用户定义的会话中开启 yakuake。你可以创建标签页,给他们指派名字,让打开的标签页运行指定命令,或者只是显示/隐藏 Yakuake 窗口。可以通过手动发送消息或者使用一个自定义脚本:

下面是一个自定义脚本的例子,包括了开启标签页,更名标签页,分割 shell ,运行命令。

#!/bin/bash
# 根据您的喜好开启 Yakuake 。内容基于 https://forums.gentoo.org/viewtopic-t-873915-start-0.html

# 如果 Yakuake 不能接受 fcitx 输入那么需要下面这行
/usr/bin/yakuake --im /usr/bin/fcitx --inputstyle onthespot &

# 发送 dbus 命令之前留足够时间让 yakuake 启动
sleep 2      
                                                 
# 在标签页中开启 htop 然后分割标签页后运行 iotop                                                        
TERMINAL_ID_0=$(qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.terminalIdsForSessionId 0)
qdbus org.kde.yakuake /yakuake/tabs setTabTitle 0 "user"
qdbus org.kde.yakuake /yakuake/sessions runCommandInTerminal 0 "htop"
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.splitTerminalLeftRight "$TERMINAL_ID_0"
qdbus org.kde.yakuake /yakuake/sessions runCommandInTerminal 1 "iotop

# 开启上下分割页然后提示 root 权限的会话(请求密码)                                                                                
SESSION_ID_1=$(qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.addSession)
TERMINAL_ID_1=$(qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.terminalIdsForSessionId "$SESSION_ID_1")
qdbus org.kde.yakuake /yakuake/tabs setTabTitle 1 "root"
qdbus org.kde.yakuake /yakuake/sessions runCommandInTerminal 2 "su"
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.splitTerminalTopBottom "$TERMINAL_ID_1"
qdbus org.kde.yakuake /yakuake/sessions runCommandInTerminal 3 "su" 

# 在单独的标签页开启 irssi 。                                                                                        
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.addSession
qdbus org.kde.yakuake /yakuake/tabs setTabTitle 2 "irssi"
qdbus org.kde.yakuake /yakuake/sessions runCommandInTerminal 4 "ssh home -t 'tmux attach -t irssi; bash -l'" 

# 在单独的标签页开启 ssh shells                                                                               
SESSION_ID_2=$(qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.addSession)
TERMINAL_ID_2=$(qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.terminalIdsForSessionId "$SESSION_ID_2")
qdbus org.kde.yakuake /yakuake/tabs setTabTitle 3 "work server"
qdbus org.kde.yakuake /yakuake/sessions runCommandInTerminal 5 "ssh work"
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.splitTerminalLeftRight "$TERMINAL_ID_2"
qdbus org.kde.yakuake /yakuake/sessions runCommandInTerminal 6 "ssh work"

使用 dbus-send 代替 qdbus

可以用更常见的 dbus-send 命令代替 Qt 提供的 qdbus 命令。 比如要显示/隐藏 Yakuake :

$ dbus-send --type=method_call --dest=org.kde.yakuake /yakuake/window org.kde.yakuake.toggleWindowState

问题解决

True-color 程序无法正确显示

Konsole#True-color programs do not display correctly.

参见