#!/bin/bash # Launch Logseq and/or raise it. # # In all cases, it raises it on the current workspace, and positions it on the # right half of the screen. Change the logic in get_width(), get_height(), and # get_geometry() to change positioning and size. # # I bind this to -l, which allows me to launch it at any time. get_width() { local full_width local half_width full_width="$(wmctrl -d | grep "\*" | cut -d' ' -f 5 | cut -d'x' -f1)" half_width=$((full_width/2)) echo $half_width } get_height() { wmctrl -d | grep "\*" | cut -d' ' -f 5 | cut -d'x' -f2 } get_geometry() { local width local height width=$(get_width) height=$(get_height) # 100 puts it at a higher z-axis plane, which should put it above other windows echo "100,${width},0,${width},${height}" } is_logseq_running() { echo "Checking if logseq is running" if ! flatpak ps | grep -q "com.logseq.Logseq"; then echo "Logseq IS NOT running" return 1 fi echo "Logseq IS running" return 0 } if ! is_logseq_running; then echo "Starting Logseq" # This launches logseq, and detaches it from this script's process flatpak run com.logseq.Logseq & disown # The wm_class is not set immediately on launch, so we need to sleep for a # moment before positioning. 2 seconds seems to be the sweet spot echo "Sleeping" sleep 2 fi echo "Raising logseq and positioning" wmctrl -x -r "logseq.Logseq" -e "$(get_geometry)" wmctrl -x -R "logseq.Logseq"