Last active 1729621737

Simple bash script to launch or raise Logseq and position it on the right side of the screen

Revision 31377eee867b2d0f4f8a53c049eee64669063ef2

logseq-up.sh Raw
1#!/bin/bash
2# Launch Logseq and/or raise it.
3#
4# In all cases, it raises it on the current workspace, and positions it on the
5# right half of the screen. Change the logic in get_width(), get_height(), and
6# get_geometry() to change positioning and size.
7#
8# I bind this to <Super><Ctrl>-l, which allows me to launch it at any time.
9
10get_width() {
11 local full_width
12 local half_width
13 full_width="$(wmctrl -d | grep "\*" | cut -d' ' -f 5 | cut -d'x' -f1)"
14
15 half_width=$((full_width/2))
16 echo $half_width
17}
18
19get_height() {
20 wmctrl -d | grep "\*" | cut -d' ' -f 5 | cut -d'x' -f2
21}
22
23get_geometry() {
24 local width
25 local height
26
27 width=$(get_width)
28 height=$(get_height)
29
30 # 100 puts it at a higher z-axis plane, which should put it above other windows
31 echo "100,${width},0,${width},${height}"
32}
33
34is_logseq_running() {
35 echo "Checking if logseq is running"
36 if ! flatpak ps | grep -q "com.logseq.Logseq"; then
37 echo "Logseq IS NOT running"
38 return 1
39 fi
40
41 echo "Logseq IS running"
42 return 0
43}
44
45if ! is_logseq_running; then
46 echo "Starting Logseq"
47 # This launches logseq, and detaches it from this script's process
48 flatpak run com.logseq.Logseq & disown
49
50 # The wm_class is not set immediately on launch, so we need to sleep for a
51 # moment before positioning. 2 seconds seems to be the sweet spot
52 echo "Sleeping"
53 sleep 2
54fi
55
56echo "Raising logseq and positioning"
57wmctrl -x -r "logseq.Logseq" -e "$(get_geometry)"
58wmctrl -x -R "logseq.Logseq"