Yakuake

出自 ArchWiki

Yakuake 是一个为 KDE 设计的下拉式终端模拟器,风格类似于为 GNOME 设计的 GuakeTilda 或 Quake 中使用的终端。

安装

安装 yakuake 软件包。

用法

安装完成后,你可以从终端启动 Yakuake,命令如下:

$ yakuake

Yakuake 启动后,你可以点击打开菜单按钮(界面右下角的中间按钮),然后选择配置快捷键来配置 Yakuake。你可以更改用于自动下拉/收起终端的热键,默认设置为 F12

配置

Plasma 上的背景透明和模糊

虽然大多数配置选项都可以通过 Yakuake GUI 进行更改,但有些选项只能通过修改配置文件来访问,例如在 Plasma 下使用模糊背景的选项。

注意: 在 Yakuake 的 Konsole 配置文件中启用模糊背景选项将为 Yakuake 窗口启用模糊效果,但会显示警告 Konsole was started before desktop effects were enabled. You need to restart Konsole to see transparent background.。 上游关于此警告有一些 错误报告。 该警告有些误导,因为 Yakuake 使用 KonsolePart,它不支持模糊/透明效果,但 Yakuake 本身可以将其效果应用于其窗口。

为了为 Yakuake 应用模糊背景,请编辑以下文件

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

然后重启 Yakuake 以应用更改。

Yakuake 脚本

Guake 类似,Yakuake 允许通过发送 D-Bus 消息在运行时控制自身。 因此,它可以用于在用户定义的会话中启动 Yakuake。 你可以创建选项卡,为它们分配名称,并要求在任何打开的选项卡中运行任何特定命令,或者只是手动在终端中或通过为其创建自定义脚本来显示/隐藏 Yakuake 窗口。

下面给出了这样一个脚本的示例。 这包括打开选项卡、重命名选项卡、拆分 shell 和运行命令。

#!/bin/bash
# Starting Yakuake based on user preferences. Information based on https://forums.gentoo.org/viewtopic-t-873915-start-0.html
# Adding sessions from previous website is broken, use this: https://koston.pl/blog/sublime-text-3-cheatsheet-modules-web-develpment/

# This line is needed in case Yakuake does not accept fcitx inputs.
/usr/bin/yakuake --im /usr/bin/fcitx --inputstyle onthespot &

# gives Yakuake a couple seconds before sending dbus commands
sleep 2      
                                                 
# Start htop in tab and split to user terminal and run 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"

# Start split root sessions (password prompt) top and bottom                                                                                
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" 

# Start irssi in its own tab.                                                                                          
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'" 

# Start split ssh shells in own tab.                                                                                   
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

技巧和窍门

在 sudo 请求密码时显示通知

当你执行需要最后输入 sudo 密码的漫长过程时(例如,从 AUR 构建软件包时),你通常希望隐藏 yakuake 窗口并执行其他操作。 但是,当你返回检查状态时,你会看到 sudo 因超时而退出。

为了避免这种情况,你可以配置 yakuake 在非活动会话中在响铃时发送系统通知。 非活动会话是指另一个选项卡上的会话,或当前选项卡上的会话,但在 yakuake 未处于焦点时。

在 Yakuake 的菜单(汉堡按钮)> 配置通知中。 在该窗口中,选择非可见会话中的响铃并启用在弹出窗口中显示消息。 此外,你可以设置声音(通常为 /usr/share/sounds/freedesktop/stereo/bell.oga/usr/share/sounds/Oxygen-Sys-Warning.ogg)。

然后,你需要配置 sudo 提示符以使用响铃符号。 请参阅 Sudo#向密码提示添加终端响铃

故障排除

真彩色程序显示不正确

请参阅 Konsole#真彩色程序显示不正确

参见