How do I make terminator emulator appear and disappear like guake?
Solution 1:
I was trying do the same thing (being a fan of both guake and terminator). Here's what I came up with (a customized version of desqua's answer to this question):
To launch an application or to show its window if already launched or to minimize if it is focused
1) Install wmctrl & xdotool, or in a terminal: sudo apt-get install wmctrl xdotool
2) Make a script:
- Make a file gedit ~/bin/launch_focus_min.sh
And paste this:
#!/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
- Make it executable:
chmod +x ~/bin/launch_focus_min.sh
3) Make your keyboard shortcut:
Open your keyboard settings and create a custom shorcut with the command:
/home/<user>/bin/launch_focus_min.sh terminator
(~/bin won't work)assign this command to Shift+Escape (or whatever keyboard shortcut you used for guake).
Solution 2:
The easiest way to do this would be use xdotool
, and use the windowunmap/windowmap
command to hide/unhide the desired class of windows. (This approach was not mentioned in the other answers that mention xdotool
.) The solution will work well across all desktops, whatever window manager they are using. As the manpage notes,
In X11 terminology, mapping a window means making it visible on the screen.
So, unmapping a window will do the opposite and hide the window. Unfortunately, there is no toggle available to use with xdotool
to switch between map/unmap states, but the two commands you need are below. The first hides the window:
xdotool search --class terminator windowunmap %@
and the second reverses the effect:
xdotool search --class terminator windowmap %@
Please note that if the window is already minimised, the windowunmap
command will be unsuccessful.
For more information see man xdotool
, the Ubuntu manpages online, and my answer to this related question.