我使用终结者0.96作为终端仿真器。我如何使其在后台运行并使其像guake终端一样显示/消失(即使用快捷键)。
我使用终结者0.96作为终端仿真器。我如何使其在后台运行并使其像guake终端一样显示/消失(即使用快捷键)。
Answers:
我正在尝试做同样的事情(既是guake也是终结者的粉丝)。这是我想出的(desqua对这个问题的答案的定制版本):
启动应用程序或显示其窗口(如果已启动)或最小化(如果已聚焦)
1)安装wmctrl和xdotool或在终端中:sudo apt-get install wmctrl xdotool
2)编写一个脚本:
并粘贴:
#!/bin/bash
#
# This script does this:
# launch an app if it isn't launched yet,
# focus the app if it is launched but not focused,
# minimize the app if it is focused.
#
# by desgua - 2012/04/29
# modified by olds22 - 2012/09/16
# - customized to accept a parameter
# - made special exception to get it working with terminator
# First let's check if the needed tools are installed:
tool1=$(which xdotool)
tool2=$(which wmctrl)
if [ -z $tool1 ]; then
echo "Xdotool is needed, do you want to install it now? [Y/n]"
read a
if [[ $a == "Y" || $a == "y" || $a = "" ]]; then
sudo apt-get install xdotool
else
echo "Exiting then..."
exit 1
fi
fi
if [ -z $tool2 ]; then
echo "Wmctrl is needed, do you want to install it now? [Y/n]"
read a
if [[ $a == "Y" || $a == "y" || $a = "" ]]; then
sudo apt-get install wmctrl
else
echo "Exiting then..."
exit 1
fi
fi
# check if we're trying to use an app that needs a special process name
# (because it runs multiple processes and/or under a different name)
app=$1
if [[ $app == terminator ]]; then
process_name=usr/bin/terminator
else
process_name=$app
fi
# Check if the app is running (in this case $process_name)
#pid=$(pidof $process_name) # pidof didn't work for terminator
pid=$(pgrep -f $process_name)
# If it isn't launched, then launch
if [ -z $pid ]; then
$app
else
# If it is launched then check if it is focused
foc=$(xdotool getactivewindow getwindowpid)
if [[ $pid == $foc ]]; then
# if it is focused, then minimize
xdotool getactivewindow windowminimize
else
# if it isn't focused then get focus
wmctrl -x -R $app
fi
fi
exit 0
chmod +x ~/bin/launch_focus_min.sh
3)设置键盘快捷键:
打开键盘设置,并使用以下命令创建自定义快捷方式:/home/<user>/bin/launch_focus_min.sh terminator
(〜/ bin不起作用)
将此命令分配给Shift + Escape(或用于guake的任何键盘快捷键)。
#!/bin/bash
最简单的方法是使用xdotool
,并使用windowunmap/windowmap
命令隐藏/取消隐藏所需的Windows类。(在提及的其他答案中未提及该方法xdotool
。)该解决方案将在所有台式机上正常运行,无论它们使用的是哪种窗口管理器。如联机帮助页所述,
在X11术语中,映射窗口意味着使其在屏幕上可见。
因此,取消映射窗口将执行相反的操作并隐藏该窗口。不幸的是,没有切换可用于xdotool
在地图/非地图状态之间进行切换,但是下面需要您使用的两个命令。第一个隐藏窗口:
xdotool search --class terminator windowunmap %@
第二个效果相反:
xdotool search --class terminator windowmap %@
请注意,如果窗口已最小化,则该windowunmap
命令将失败。
欲了解更多信息,请参见man xdotool
中,Ubuntu的联机帮助页在线和我的回答此相关的问题。
通过在Terminator中选择一组首选项,您可以使其工作几乎与Guake相似。
请参阅下面的文章以获取详细说明。
http://www.webupd8.org/2011/07/install-terminator-with-built-in-quake.html
我建议您按照本文中的所有步骤进行操作以获得所需的结果。我跳过了几步,认为它们不是必需的,但实际上是克服一些错误所必需的。
我建议您简单地使用yakuake
,与kde桌面的guake样式相同的终端。
您可以通过运行安装它sudo apt-get install yakuake
。
我写了一个脚本,使用linux mint中的byobu来提高和最小化gnome终端,因为guake的控制台输出有些混乱。然后,将其添加到管理员键盘->快捷方式部分的快捷方式中。
名为guake-toggling-for-gnome-terminal.sh的脚本:
#!/usr/bin/env bash
if ! pgrep -x "gnome-terminal" > /dev/null
then
gnome-terminal --app-id us.kirkland.terminals.byobu -e byobu
fi
byobuVisible=$(xdotool search --onlyvisible byobu)
byobuNotVisible=$(xdotool search byobu)
xdotool windowminimize ${byobuVisible}
xdotool windowraise ${byobuNotVisible}
Byobu只是这里的窗口名称。