#!/bin/sh # depends on: xprop # prevent certain window classes from being fullscreen in bspwm. # define WM_CLASS blockers here: blockers='chromium libreoffice firefox Firefox firefox-developer-edition MozillaWindowClass' bspc subscribe node_state | while read msg monitorId desktopId nodeId state value; do # only care about fullscreens [ "$state $value" = "fullscreen on" ] || continue # only act if the lock is off, also remove the lock if it exists. if [ -f /tmp/bspcblock ]; then rm /tmp/bspcblock continue fi # get info class=$(xprop -id $nodeId | grep "WM_CLASS" | sed 's/^[^=]*=//g') # check all the blockers, toggle last state if encountered anywhere in WM_CLASS line. IFS=' ' for check in $blockers; do echo $class | grep -q "\"$check\"" && bspc node $nodeId -t ~fullscreen & done done