#! /bin/bash # # launch.sh # A Polybar launch script with a heck of a lot of compat # Copyright (C) 2019 Vintage Salt # # Distributed under terms of the MIT license. # log() { [ -z "$1" ] && return 1 printf "$1\\n" } # Trap our exit die() { kill $(jobs -p) } trap die EXIT # Steps step_fallback() { if ! command -v polybar > /dev/null 2>&1; then if command -v tint2 > /dev/null 2>&1; then log "Executing fallback" exec tint2 fi log "No valid bars found" exit 51 fi } step_configure() { # Restack compatibility if pgrep -U "$UID" bspwm > /dev/null 2>&1; then export PB_WM_RESTACK="bspwm" elif pgrep -U "$UID" i3 > /dev/null 2>&1; then export PB_WM_RESTACK="i3" fi # Light theme if [ "$THEME" == "light" ]; then export PB_COLOR_BG="#fbf1c7" export PB_COLOR_FG="#3c3836" export PB_COLOR_BORDER="#f2e5bc" fi } step_spawn_primary() { # Spawn bars on the primary monitor log "Spawning primary bars" export PB_MONITOR=$(xrandr -q | awk '/primary/{print $1}') polybar -r primary & polybar -r primary-2 & } step_spawn_secondary() { # Spawn more for each secondary log "Spawning secondary bars" export secondary_monitors=$(xrandr -q | grep ' connected' | grep -v 'primary' | awk '{print $1}') if [ "$secondary_monitors" == "" ]; then return 0 fi for monitor in $secondary_monitors; do PB_MONITOR=$monitor polybar -r secondary & polybar -r secondary-2 & done } step_wait() { # And wait log "Waiting" wait } # Main main() { step_fallback step_configure step_spawn_primary step_spawn_secondary step_wait } main "$@"