如何使终结者模拟器像guake一样出现和消失?


Answers:


17

我正在尝试做同样的事情(既是guake也是终结者的粉丝)。这是我想出的(desqua这个问题的答案的定制版本):

启动应用程序或显示其窗口(如果已启动)或最小化(如果已聚焦)

1)安装wmctrlxdotool或在终端中:sudo apt-get install wmctrl xdotool

2)编写一个脚本:

  • 制作一个文件gedit〜/ bin / launch_focus_min.sh

并粘贴:

#!/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的任何键盘快捷键)。


我尝试了此操作,但它似乎对我不起作用。
Chirag 2012年

这是一个完美的解决方案,最好的Guake和最好的终结者,谢谢。
wranvaud,2015年

必须将“〜/ bin / launch_focus_min.sh终结器”更改为“ /home/<user>/bin/launch_focus_min.sh终结器”才能对我起作用
Vituel 2015年

我必须在文件的开头添加一个bash shebang才能使其在zsh下正常运行:#!/bin/bash
sean_j_roberts

4

最简单的方法是使用xdotool,并使用windowunmap/windowmap命令隐藏/取消隐藏所需的Windows类。(在提及的其他答案中未提及该方法xdotool。)该解决方案将在所有台式机上正常运行,无论它们使用的是哪种窗口管理器。如联机帮助页所述

在X11术语中,映射窗口意味着使其在屏幕上可见。

因此,取消映射窗口将执行相反的操作并隐藏该窗口。不幸的是,没有切换可用于xdotool在地图/非地图状态之间进行切换,但是下面需要您使用的两个命令。第一个隐藏窗口:

xdotool search --class terminator windowunmap %@

第二个效果相反:

xdotool search --class terminator windowmap %@

请注意,如果窗口已最小化,则该windowunmap命令将失败。

欲了解更多信息,请参见man xdotool中,Ubuntu的联机帮助页在线我的回答此相关的问题



0

我建议您简单地使用yakuake,与kde桌面的guake样式相同的终端。

您可以通过运行安装它sudo apt-get install yakuake


无法离开终结者。从最近两年开始,我一直在使用它。现在几乎沉迷于此。:)
Chirag 2012年

0

那么,最简​​单的解决方案就是将Terminator锁定在启动器上,并使用Ubuntu提供的快捷方式

您可以使用启动器快捷方式启动任何已锁定到启动器的应用程序:

超级+1至9

有关可用快捷键的完整列表,请按住超级键。


0

我写了一个脚本,使用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只是这里的窗口名称。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.