[openbox] switch to a window and then switch back
Łukasz Grabowski
graboluk at gmail.com
Mon Sep 26 07:12:07 EDT 2016
TT wrote:
> also it would be nice to see how you achieve what you have atm!
I paste my toggle-main-iceweasel script which I have under C-A-s
below. Presumably a lot of it can be done directly in openbox 3.6
using "If" action, but I'm on 3.5.
> Lukasz: I am pretty sure that your particular scenario would require
> a script, in other words openbox cannot do it as such.
The problem I have to script it is that it requires remembering the state: i.e.
the second C-A-s should switch back only if it really is the second one.
Mikael Magnusson wrote:
> As long as you're only switching between two desktops, you can use go
> to last desktop in both directions.
I think it's unrealistic and inconvenient to have a desktop _only_
for firefox. Sooner or later something is bound to appear there, a pdf
viewer, terminal etc., so the solution should not assume that one is
on a desktop which is different than firefox's desktop.
btw, don't treat it to seriously, but if I was willing to bend my
workflow to a window manager I'd be using apple or gnome or whatever
:-). The whole point of using openbox for me is that it's so flexible
in adjusting to whatever I see as the best workflow of the month.
Best,
Ł
----toggle-main-iceweasel----
#!/bin/bash
CLASS="Navigator.main-iceweasel"
FIREFOX_CLASS="Navigator.Firefox"
ACTIVE_WIN_ID_UNNORMALIZED=$(printf '%x\n' $(xdotool getactivewindow))
ACTIVE_WIN_ID=`wmctrl -lx | grep $ACTIVE_WIN_ID_UNNORMALIZED | awk
'{print $1}' | awk '{$1=$1}1'`
ACTIVE_WIN_CLASS=`wmctrl -lx | awk -v winid="$ACTIVE_WIN_ID" '{if
($1==winid) print $3}'`
FIREFOX_WINDOWS=`wmctrl -lx | awk -v winclass="$FIREFOX_CLASS" '{if
($3==winclass) print $0}'`
MAIN_FIREFOX_WIN_ID=`wmctrl -lx |awk -v winclass="$CLASS" '{if
($3==winclass) print $1}'`
# for debugging
#~ echo "$CLASS"
#~ echo "$FIREFOX_CLASS"
#~ echo "$ACTIVE_WIN_ID_UNNORMALIZED"
#~ echo "$ACTIVE_WIN_ID"
#~ echo "$ACTIVE_WIN_CLASS"
#~ echo "${FIREFOX_WINDOWS[0]}"
#~ echo "$MAIN_FIREFOX_WIN_ID"
# if no windows with main-iceweasel class but there are firefox windows
# then call the first main-iceweasel
if [ ! ${#FIREFOX_WINDOWS} -eq 0 ] && [[ -z "$MAIN_FIREFOX_WIN_ID" ]]; then
MAIN_FIREFOX_WIN_ID=`echo "${FIREFOX_WINDOWS[0]}" | awk '{print $1}'`
xdotool set_window --class main-iceweasel "$MAIN_FIREFOX_WIN_ID"
fi
# if active window is main-iceweasel then hide it
if [[ "$ACTIVE_WIN_CLASS" == "$CLASS" ]] && [ "$ACTIVE_WIN_ID" != 0 ]; then
wmctrl -i -r $ACTIVE_WIN_ID -b add,hidden
exit
fi
# if main-iceweasel exists but it is not active then raise it
if [ ! -z "$MAIN_FIREFOX_WIN_ID" ]; then
wmctrl -i -a "$MAIN_FIREFOX_WIN_ID"
exit
fi
# otherwise start firefox
wmctrl -s0
iceweasel &
exit
More information about the openbox
mailing list