blob: a8ce7b679b6a9600beecfa5a1a96a8eaf31dcffe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
#!/bin/sh
help() {
echo webtrayctl - install and remove webtray applications
echo
echo " install <url> <name> [--open-at-startup] [--icon <icon-file>]"
echo " uninstall <name>"
echo
exit
}
install_webapp() {
mkdir -p ~/.local/share/webtray/icons
mkdir -p ~/.local/share/webtray/applications/
url="$1"
name="$2"
open_at_startup="$3"
iconfile="$4"
full_url=$(curl -Ls -o /dev/null -w%{url_effective} $url)
if [ -z "$iconfile" ]; then
full_url_cancled=$(echo $full_url | sed 's/\//\\\//g')
# get the linkt to the icon by first searching for every <link> tag, containing a icon link
# then getting the string of the first href in the first link, and then appending the extended url to the beginning, if it is not a relative path (only works for http and https protocols)
iconfile=$(curl -Ls "$url" | grep -o "<link[^>]*rel=[\"']\\(shortcut \\)\\?icon[\"'][^>]*>" | head -n 1 | sed "s/.*href=[\"']\\([^\"]*\\)[\"'].*/\\1/g" | sed "/^http/!s/.*/$full_url_cancled\\/&/")
file_extension=$(echo "$iconfile" | grep -o '\.[^.]*$')
tmp_icon_name="$name$file_extension"
if [ -n "$iconfile" ]; then
curl -s "$iconfile" --output "/tmp/${tmp_icon_name}"
magick "/tmp/${tmp_icon_name}[0]" "$HOME/.local/share/webtray/icons/$name.png"
rm "/tmp/$tmp_icon_name"
iconfile="$HOME/.local/share/webtray/icons/$name.png"
else
echo "the website does not seem to have a favicon"
echo "consider adding the path to a favicon on your computer with the --icon argument"
fi
fi
echo "[Desktop Entry]
Type=Application
Name=$name
Exec=$(which webtray) '$full_url' "$open_at_startup" "$iconfile"
Icon="$iconfile"
Terminal=false
Categories=WebApp
" > "$HOME/.local/share/webtray/applications/webtray-$name.desktop"
xdg-desktop-menu install "$HOME/.local/share/webtray/applications/webtray-$name.desktop"
exit
}
remove_webapp() {
name="$1"
xdg-desktop-menu uninstall "$HOME/.local/share/webtray/applications/webtray-$name.desktop"
rm "$HOME/.local/share/webtray/applications/webtray-$name.desktop" "$HOME/.local/share/webtray/icons/$name.png"
exit
}
while true
do
case "$1" in
install)
action="install"
shift
url="$1"
name="$2"
shift 2
;;
uninstall)
action="uninstall"
shift
toRemove="$1"
shift
;;
"--open-at-startup")
open_at_startup="--open-at-startup"
shift
;;
"--icon")
shift
icon="$1"
[ -z "$1" ] && help
shift
;;
*)help;;
esac
if [ -z "$1" ]; then
break
fi
#shift 1 || break
done
case "$action" in
install)
[ -z "$url" -o -z "$name" ] && help
install_webapp "$url" "$name" "$open_at_startup" "$icon"
;;
uninstall)
[ -z "$toRemove" ] && help
remove_webapp "$toRemove"
;;
*)help;;
esac
|