Yakuake (简体中文)

From ArchWiki
翻译状态:本文是 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.

参见