|
|
@@ -25,20 +25,20 @@ clear_desktop () |
|
|
|
{ |
|
|
|
last=`cat $LASTDESK` |
|
|
|
namelast=$last |
|
|
|
namecurrent=`bspc query -d focused -D --names` |
|
|
|
wincurrent=`bspc query -d focused -N` |
|
|
|
namecurrent=`bspc query --desktops --desktop focused --names` |
|
|
|
wincurrent=`bspc query --nodes --desktop focused` |
|
|
|
|
|
|
|
if [[ "$last" -gt "1" ]]; then |
|
|
|
del_desks=0 |
|
|
|
|
|
|
|
# Delete any empty desk and re-numerate |
|
|
|
for desk in `seq 1 $last`; do |
|
|
|
if [[ -z `bspc query -N -d "$desk"` ]]; then |
|
|
|
if [[ -z `bspc query --nodes --desktop "$desk"` ]]; then |
|
|
|
let "del_desks += 1" |
|
|
|
bspc desktop "$desk" -r |
|
|
|
bspc desktop "$desk" --remove |
|
|
|
else |
|
|
|
let "newname = desk - del_desks" |
|
|
|
bspc desktop "$desk" -n "$newname" |
|
|
|
bspc desktop "$desk" --rename "$newname" |
|
|
|
fi |
|
|
|
done |
|
|
|
|
|
|
@@ -47,13 +47,13 @@ clear_desktop () |
|
|
|
# Always keep desktop 1 existing, even if empty |
|
|
|
# and allow for an additional empty desktop |
|
|
|
if [[ "$last" -eq "0" ]]; then |
|
|
|
bspc monitor -a 1 |
|
|
|
bspc desktop -f 1 |
|
|
|
bspc monitor --add-desktops 1 |
|
|
|
bspc desktop --focus 1 |
|
|
|
last=1 |
|
|
|
elif [[ "$namecurrent" -eq "$namelast" && -z "$wincurrent" ]]; then |
|
|
|
let "last=$last + 1" |
|
|
|
bspc monitor -a "$last" |
|
|
|
bspc desktop -f "$last" |
|
|
|
bspc monitor --add-desktops "$last" |
|
|
|
bspc desktop --focus "$last" |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
@@ -71,12 +71,12 @@ popup () |
|
|
|
|
|
|
|
# If the program is not yet running, launch it and monitor the node creation |
|
|
|
if [ -z `xdotool search --classname $name` ];then |
|
|
|
bspc subscribe node_add -c 1 | cut -d ' ' -f 5 > /tmp/win_${name} & |
|
|
|
bspc subscribe node_add --count 1 | cut -d ' ' -f 5 > /tmp/win_${name} & |
|
|
|
kitty --name $name $* |
|
|
|
sleep .5 |
|
|
|
else |
|
|
|
win=`cat /tmp/win_${name}` |
|
|
|
bspc node ${win} -g hidden -f |
|
|
|
bspc node ${win} --flag hidden --focus |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
@@ -84,10 +84,10 @@ peek () |
|
|
|
{ |
|
|
|
case $1 in |
|
|
|
left|right) |
|
|
|
if [ `bspc config -d focused $1_padding` -gt 0 ]; then |
|
|
|
bspc config -d focused $1_padding 0 |
|
|
|
if [ `bspc config --desktop focused $1_padding` -gt 0 ]; then |
|
|
|
bspc config --desktop focused $1_padding 0 |
|
|
|
else |
|
|
|
bspc config -d focused $1_padding 500 |
|
|
|
bspc config --desktop focused $1_padding 500 |
|
|
|
fi |
|
|
|
;; |
|
|
|
*) usage;; |
|
|
@@ -96,53 +96,47 @@ peek () |
|
|
|
|
|
|
|
discard () |
|
|
|
{ |
|
|
|
# Save current desktop in case we --follow |
|
|
|
# echo `bspc query -D -d focused --names` > /tmp/desk |
|
|
|
|
|
|
|
# Create a new desktop at the end |
|
|
|
last=`cat $LASTDESK` |
|
|
|
let "last += 1" |
|
|
|
echo $last > $LASTDESK |
|
|
|
bspc monitor -a $last |
|
|
|
bspc monitor --add-desktops $last |
|
|
|
|
|
|
|
# Move the node and optionally --follow it |
|
|
|
bspc node -d "$last" $1 |
|
|
|
bspc node --to-desktop "$last" $1 |
|
|
|
|
|
|
|
clear_desktop |
|
|
|
} |
|
|
|
|
|
|
|
goto () |
|
|
|
{ |
|
|
|
current=`bspc query -D -d focused --names` |
|
|
|
current=`bspc query --desktops --desktop focused --names` |
|
|
|
last=`cat $LASTDESK` |
|
|
|
|
|
|
|
case $1 in |
|
|
|
next) # Create a new desktop if needed |
|
|
|
last=`cat $LASTDESK` |
|
|
|
if [ `bspc query -D -d focused --names` -eq "$last" ]; then |
|
|
|
next) |
|
|
|
# Create a new desktop if needed |
|
|
|
if [ "$current" -eq "$last" ]; then |
|
|
|
let "last += 1" |
|
|
|
echo $last > $LASTDESK |
|
|
|
bspc monitor -a $last |
|
|
|
bspc monitor --add-desktops $last |
|
|
|
fi |
|
|
|
togo=$1 |
|
|
|
target="next" |
|
|
|
;; |
|
|
|
last) togo=`cat $LASTDESK` ;; |
|
|
|
prev| | | |1|2|3|4|5|6|7) togo=$1 ;; |
|
|
|
last) target=$last;; |
|
|
|
prev| | | |1|2|3|4|5|6|7) target=$1 ;; |
|
|
|
*) usage ;; |
|
|
|
esac |
|
|
|
|
|
|
|
# Go back to previous desktop if destination is the current desktop |
|
|
|
if [[ "$togo" == "$current" ]]; then |
|
|
|
# target=`cat /tmp/desk` |
|
|
|
if [[ "$target" == "$current" ]]; then |
|
|
|
target="last" |
|
|
|
else |
|
|
|
target="$togo" |
|
|
|
# echo $current > /tmp/desk |
|
|
|
fi |
|
|
|
|
|
|
|
# Carry a node or just focus desktop |
|
|
|
case $2 in |
|
|
|
--carry) bspc node -d "$target" --follow ;; |
|
|
|
*) bspc desktop -f "$target" ;; |
|
|
|
--carry) bspc node --to-desktop "$target" --follow ;; |
|
|
|
*) bspc desktop --focus "$target" ;; |
|
|
|
esac |
|
|
|
|
|
|
|
clear_desktop |
|
|
@@ -150,7 +144,7 @@ goto () |
|
|
|
|
|
|
|
unhide () |
|
|
|
{ |
|
|
|
bspc node any.hidden -g hidden=off |
|
|
|
bspc node any.hidden --flag hidden=off |
|
|
|
} |
|
|
|
|
|
|
|
fix_popup () |
|
|
|