logseq-up.sh
· 1.5 KiB · Bash
Raw
#!/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 <Super><Ctrl>-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"
| 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 | |
| 10 | get_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 | |
| 19 | get_height() { |
| 20 | wmctrl -d | grep "\*" | cut -d' ' -f 5 | cut -d'x' -f2 |
| 21 | } |
| 22 | |
| 23 | get_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 | |
| 34 | is_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 | |
| 45 | if ! 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 |
| 54 | fi |
| 55 | |
| 56 | echo "Raising logseq and positioning" |
| 57 | wmctrl -x -r "logseq.Logseq" -e "$(get_geometry)" |
| 58 | wmctrl -x -R "logseq.Logseq" |