Skip to content

Instantly share code, notes, and snippets.

@rcmorano
Last active December 20, 2015 23:28
Show Gist options
  • Save rcmorano/6212313 to your computer and use it in GitHub Desktop.
Save rcmorano/6212313 to your computer and use it in GitHub Desktop.
get focus on a window that matches the process name pattern defined by $WINDOW_PROCESS_PATTERN and if it's already focused, minimizes it## IT DEPENDS ON 'wmctrl' and 'xdotool' packages ##
#!/bin/bash
#
# Copyright (C) 2013, Roberto C. Morano <rcmova@gmail.com>
#
# This software is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This software is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
# As a special exception, if you link this library with other files to
# produce an executable, this library does not by itself cause the
# resulting executable to be covered by the GNU General Public License.
# This exception does not however invalidate any other reasons why the
# executable file might be covered by the GNU General Public License.
WINDOW_PROCESS_PATTERN="terminator.*-l.*floating"
WINDOW_PID=$(ps ax|grep $WINDOW_PROCESS_PATTERN|grep -v grep|awk '{print $1}')
WMCTRL_ID=$(wmctrl -lp | grep $WINDOW_PID|awk '{print $1}')
XDOTOOL_ID=$(xdotool search --pid $WINDOW_PID|tail -n1)
XDOTOOL_CURRENT_WINDOW_ID=$(xdotool getwindowfocus)
if [ $XDOTOOL_ID -eq $XDOTOOL_CURRENT_WINDOW_ID ]
then
xdotool windowminimize $XDOTOOL_ID
else
wmctrl -iR $WMCTRL_ID
#xdotool windowactivate $TERMINATOR_XDOTOOL_ID
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment