Skip to content

Commit 13fb8dd

Browse files
committed
Add launcherctl (#795)
* Add launcherctl and oxide configuration * Install launcherctl by default * Format fix * Add remux, koreader, xochitl, and draft to launcherctl * Format fix * Format fix * Fix up install/uninstall * Format fixes * More format fixes * More format fixes * Fix up draft handling * Fix switch-launcher without --start * Fix install paths * Update package * Bump koreader rel * Bump remux rel * Bump toltec-base rel * Bump toltec-completion rel * Add missing SKIP from merge
1 parent 56e0d15 commit 13fb8dd

File tree

15 files changed

+735
-27
lines changed

15 files changed

+735
-27
lines changed

package/draft/launcherctl-draft

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#!/bin/bash
2+
set -e
3+
draft_pid() {
4+
systemctl show --no-pager --property MainPID draft.service | sed 's|MainPID=||'
5+
}
6+
kill_pid() {
7+
pid="$1"
8+
if [[ "$(awk '{print $3}' "/proc/${pid}/stat")" == "T" ]]; then
9+
kill -CONT "$pid"
10+
fi
11+
kill -TERM "$pid"
12+
# Wait 5s for process to exit
13+
start="$(date +'%s')"
14+
while kill -0 "$pid" 2> /dev/null; do
15+
sleep 0.5
16+
if [ "$(date +'%s')" -gt $((start + 5)) ]; then
17+
break
18+
fi
19+
done
20+
if kill -0 "$pid" 2> /dev/null; then
21+
# If process is still running, force kill it
22+
kill -KILL "$pid"
23+
fi
24+
}
25+
case "$1" in
26+
is-active)
27+
systemctl is-active --quiet draft.service
28+
;;
29+
is-enabled)
30+
systemctl is-enabled --quiet draft.service
31+
;;
32+
logs)
33+
if [ $# -eq 2 ] && [[ "$2" == "-f" ]] || [[ "$2" == "--follow" ]]; then
34+
journalctl --follow --all --unit draft.service
35+
else
36+
journalctl --no-pager --all --unit draft.service
37+
fi
38+
;;
39+
start)
40+
systemctl start draft.service
41+
;;
42+
stop)
43+
systemctl stop draft.service
44+
;;
45+
enable)
46+
systemctl enable draft.service
47+
;;
48+
disable)
49+
systemctl disable draft.service
50+
;;
51+
apps)
52+
find {/opt,}/etc/draft -maxdepth 1 -type f | while read -r file; do
53+
grep 'name=' "$file" | sed 's|^name=||'
54+
done
55+
;;
56+
close)
57+
find {/opt,}/etc/draft -maxdepth 1 -type f | while read -r file; do
58+
if [[ "$(grep 'name=' "$file" | sed 's|^name=||')" == "$2" ]]; then
59+
term="$(grep 'term=' "$file" | sed 's|^term=||')"
60+
if [ -z "$term" ]; then
61+
echo "No term= configuration specified for ${2}"
62+
exit 1
63+
fi
64+
$term
65+
call="$(grep 'call=' "$file" | sed 's|^call=||')"
66+
name="$(grep 'name=' "$file" | sed 's|^name=||')"
67+
/opt/libexec/ps-procps-ng --ppid "$(draft_pid)" -o pid | tail -n +2 | while read -r pid; do
68+
if [[ "$(tr -d '\0' < "/proc/${pid}/cmdline")" == "$call" ]]; then
69+
kill_pid "$pid"
70+
break
71+
fi
72+
done
73+
fi
74+
done
75+
;;
76+
running)
77+
pid=$(draft_pid)
78+
find {/opt,}/etc/draft -maxdepth 1 -type f | while read -r file; do
79+
call="$(grep 'call=' "$file" | sed 's|^call=||')"
80+
name="$(grep 'name=' "$file" | sed 's|^name=||')"
81+
/opt/libexec/ps-procps-ng --ppid "$(draft_pid)" -o pid | tail -n +2 | while read -r pid; do
82+
if [[ "$(tr -d '\0' < "/proc/${pid}/cmdline")" == "$call" ]]; then
83+
echo "$name"
84+
break
85+
fi
86+
done
87+
done
88+
;;
89+
*)
90+
echo "Draft does not support this method"
91+
exit 1
92+
;;
93+
esac

package/draft/package

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,24 @@
55
pkgnames=(draft)
66
pkgdesc="Launcher which wraps around the standard interface"
77
url=https://github.com/dixonary/draft-reMarkable
8-
pkgver=0.2.0-22
8+
pkgver=0.2.0-23
99
timestamp=2020-07-20T10:23Z
1010
section="launchers"
1111
maintainer="Mattéo Delabre <[email protected]>"
1212
license=Apache-2.0
13-
installdepends=(xochitl display)
13+
installdepends=(xochitl display procps-ng-ps)
1414
flags=(patch_rm2fb)
1515

1616
image=qt:v2.1
1717
source=(
1818
https://github.com/dixonary/draft-reMarkable/archive/5bd660a2fd07eba166c6110d2b48cfc58ee67e58.zip
1919
draft.service
20+
launcherctl-draft
2021
)
2122
sha256sums=(
2223
c41d7a4fd537c54d787018fd764421dbf7dd64306ca800875283e05eef99173e
2324
SKIP
25+
SKIP
2426
)
2527

2628
build() {
@@ -46,21 +48,25 @@ package() {
4648
mv "$pkgdir"/opt/etc/draft/{99-,}shutdown
4749

4850
install -D -m 644 -t "$pkgdir"/lib/systemd/system "$srcdir"/draft.service
51+
install -D -m 755 -t "$pkgdir"/opt/share/launcherctl/"$pkgname" "$srcdir"/launcherctl-draft
4952
}
5053

5154
configure() {
5255
systemctl daemon-reload
5356

54-
if ! is-enabled "$pkgname.service"; then
57+
if ! launcherctl is-current-launcher "$pkgname"; then
5558
echo ""
5659
echo "Run the following command(s) to use $pkgname as your launcher"
57-
how-to-enable "$pkgname.service"
60+
echo "launcherctl switch-launcher --start $pkgname"
5861
echo ""
5962
fi
6063
}
6164

6265
preremove() {
63-
disable-unit "$pkgname.service"
66+
# Just in case more than one launcher is active, do individual checks
67+
if launcherctl is-active-launcher "$pkgname" || launcherctl is-enabled-launcher "$pkgname"; then
68+
launcherctl switch-launcher --start xochitl
69+
fi
6470
}
6571

6672
postremove() {
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/bin/bash
2+
set -e
3+
case "$1" in
4+
is-active)
5+
systemctl is-active --quiet koreader.service
6+
;;
7+
is-enabled)
8+
systemctl is-enabled --quiet koreader.service
9+
;;
10+
logs)
11+
if [ $# -eq 2 ] && [[ "$2" == "-f" ]] || [[ "$2" == "--follow" ]]; then
12+
journalctl --follow --all --unit koreader.service
13+
else
14+
journalctl --no-pager --all --unit koreader.service
15+
fi
16+
;;
17+
start | launch)
18+
systemctl start koreader.service
19+
;;
20+
stop | close)
21+
systemctl stop koreader.service
22+
;;
23+
enable)
24+
systemctl enable koreader.service
25+
;;
26+
disable)
27+
systemctl disable koreader.service
28+
;;
29+
apps)
30+
echo "koreader"
31+
;;
32+
running)
33+
if "$0" is-active; then
34+
echo "koreader"
35+
fi
36+
;;
37+
*)
38+
echo "KOReader does not support this method"
39+
exit 1
40+
;;
41+
esac

package/koreader/package

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
pkgnames=(koreader)
66
pkgdesc="Ebook reader supporting PDF, DjVu, EPUB, FB2 and many more formats"
77
url=https://github.com/koreader/koreader
8-
pkgver=2024.04-1
8+
pkgver=2024.04-2
99
timestamp=2024-04-29T19:56:05Z
1010
section="readers"
1111
maintainer="raisjn <[email protected]>"
@@ -19,13 +19,15 @@ source=(
1919
KOReader.oxide
2020
koreader-toltec.service
2121
koreader
22+
launcherctl-koreader
2223
)
2324
sha256sums=(
2425
e6b3a5a2c8cde8ca0c469fe542d6e170502fcf39b9a55e4447a7acd02b4a12c0
2526
SKIP
2627
SKIP
2728
SKIP
2829
SKIP
30+
SKIP
2931
)
3032

3133
package() {
@@ -41,6 +43,7 @@ package() {
4143
install -D -m 644 "$srcdir"/koreader-toltec.service "$pkgdir"/lib/systemd/system/koreader.service
4244
install -D -m 644 -t "$pkgdir"/opt/etc/draft/icons/ "$srcdir"/resources/koreader.png
4345
install -D -m 755 -t "$pkgdir"/opt/bin/ "$srcdir"/koreader
46+
install -D -m 755 -t "$pkgdir"/opt/share/launcherctl/"$pkgname" "$srcdir"/launcherctl-koreader
4447
}
4548

4649
configure() {
@@ -51,18 +54,19 @@ configure() {
5154

5255
systemctl daemon-reload
5356

54-
if ! is-enabled "$pkgname.service"; then
55-
cat << MSG
56-
57-
Run the following command(s) to use $pkgname as your launcher
58-
$(how-to-enable "$pkgname.service")
59-
60-
MSG
57+
if ! launcherctl is-current-launcher "$pkgname"; then
58+
echo ""
59+
echo "Run the following command(s) to use $pkgname as your launcher"
60+
echo "launcherctl switch-launcher --start $pkgname"
61+
echo ""
6162
fi
6263
}
6364

6465
preremove() {
65-
disable-unit "$pkgname.service"
66+
# Just in case more than one launcher is active, do individual checks
67+
if launcherctl is-active-launcher "$pkgname" || launcherctl is-enabled-launcher "$pkgname"; then
68+
launcherctl switch-launcher --start xochitl
69+
fi
6670
}
6771

6872
postremove() {

0 commit comments

Comments
 (0)