[tor-commits] [tor-browser-bundle/master] Bug #15672: Provide desktop app registration+unregistration for Linux
gk at torproject.org
gk at torproject.org
Mon Apr 20 08:47:40 UTC 2015
commit c9266daa8ce6501e6f24446dc0da05caf7fa955d
Author: Mike Perry <mikeperry-git at torproject.org>
Date: Mon Apr 13 11:27:29 2015 -0700
Bug #15672: Provide desktop app registration+unregistration for Linux
---
RelativeLink/start-tor-browser | 55 ++++++++++++++++++++++++++++++----------
1 file changed, 41 insertions(+), 14 deletions(-)
diff --git a/RelativeLink/start-tor-browser b/RelativeLink/start-tor-browser
index aac5a6e..098f506 100755
--- a/RelativeLink/start-tor-browser
+++ b/RelativeLink/start-tor-browser
@@ -100,11 +100,18 @@ fi
debug=0
show_usage=0
+register_desktop_app=0
# !!! We may have more than one argument, changed -eq to -ge in if & elif clauses below
if [ "$#" -ge 1 -a \( "x$1" = "x--debug" -o "x$1" = "x-debug" \) ]; then
debug=1
shift # pop the debug argument
printf "\nDebug enabled.\n\n"
+elif [ "$#" -ge 1 -a \( "x$1" = "x--register-app" -o "x$1" = "x-register-app" \) ]; then
+ register_desktop_app=1
+ shift # pop the register arg
+elif [ "$#" -ge 1 -a \( "x$1" = "x--unregister-app" -o "x$1" = "x-unregister-app" \) ]; then
+ register_desktop_app=-1
+ shift # pop the register arg
elif [ "$#" -ge 1 -a \( "x$1" = "x--help" -o "x$1" = "x-help" \) ]; then
show_usage=1
else
@@ -160,6 +167,13 @@ fi
mydir="`dirname "$myname"`"
test -d "$mydir" && cd "$mydir"
+# If ${PWD} results in a zero length string, we can try something else...
+if [ ! "${PWD}" ]; then
+ # "hacking around some braindamage"
+ PWD="`pwd`"
+ surveysays="This system has a messed up shell.\n"
+fi
+
# This is a fix for an ibus issue on some Linux systems. See #9353 for more
# details. The symlink needs to be created before we change HOME.
if [ ! -d ".config/ibus" ]; then
@@ -167,23 +181,34 @@ if [ ! -d ".config/ibus" ]; then
ln -nsf ~/.config/ibus/bus .config/ibus
fi
-# If ${PWD} results in a zero length HOME, we can try something else...
-if [ ! "${PWD}" ]; then
- # "hacking around some braindamage"
- HOME="`pwd`"
- export HOME
- surveysays="This system has a messed up shell.\n"
-else
- HOME="${PWD}"
- export HOME
-fi
-
# Fix up .desktop Icon and Exec Paths, and update the .desktop file from the
# canonical version if it was changed by the updater.
cp start-tor-browser.desktop ../
sed -i -e "s,^Name=.*,Name=Tor Browser,g" ../start-tor-browser.desktop
-sed -i -e "s,^Icon=.*,Icon=$HOME/browser/icons/mozicon128.png,g" ../start-tor-browser.desktop
-sed -i -e "s,^Exec=.*,Exec=sh -c '\"$HOME/start-tor-browser\" || ([ ! -x \"$HOME/start-tor-browser\" ] \&\& \"\$(dirname \"\$*\")\"/Browser/start-tor-browser)' dummy %k,g" ../start-tor-browser.desktop
+sed -i -e "s,^Icon=.*,Icon=$PWD/browser/icons/mozicon128.png,g" ../start-tor-browser.desktop
+sed -i -e "s,^Exec=.*,Exec=sh -c '\"$PWD/start-tor-browser\" || ([ ! -x \"$PWD/start-tor-browser\" ] \&\& \"\$(dirname \"\$*\")\"/Browser/start-tor-browser)' dummy %k,g" ../start-tor-browser.desktop
+
+if [ "$register_desktop_app" -eq 1 ]; then
+ mkdir -p "$HOME/.local/share/applications/"
+ cp ../start-tor-browser.desktop "$HOME/.local/share/applications/"
+ update-desktop-database "$HOME/.local/share/applications/"
+ printf "Tor Browser has been registered as a desktop app for this user in ~/.local/share/applications/\n"
+ exit 0
+fi
+
+if [ "$register_desktop_app" -eq -1 ]; then
+ if [ -e "$HOME/.local/share/applications/start-tor-browser.desktop" ]; then
+ rm -f "$HOME/.local/share/applications/start-tor-browser.desktop"
+ update-desktop-database "$HOME/.local/share/applications/"
+ printf "Tor Browser has been removed as a user desktop app (from ~/.local/share/applications/)\n"
+ else
+ printf "Tor Browser does not appear to be a desktop app (not present in ~/.local/share/applications/)\n"
+ fi
+ exit 0
+fi
+
+HOME="${PWD}"
+export HOME
SYSARCHITECTURE=$(getconf LONG_BIT)
TORARCHITECTURE=$(expr "$(file TorBrowser/Tor/tor)" : '.*ELF \([[:digit:]]*\)')
@@ -279,7 +304,9 @@ if [ "$show_usage" -eq 1 ]; then
TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD} ./firefox --class "Tor Browser" \
-profile TorBrowser/Data/Browser/profile.default "${@}" 2>/dev/null
printf "\nTor Browser Script Options\n"
- printf " --debug Display Tor and Firefox output and record in tor-browser-debug.log\n"
+ printf " --debug Display Tor and Firefox output and record in tor-browser-debug.log\n"
+ printf " --register-app Register Tor Browser as a desktop app for this user\n"
+ printf " --unregister-app Unregister Tor Browser as a desktop app for this user\n"
elif [ "$debug" -ne 1 ] ; then
TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD} ./firefox --class "Tor Browser" \
-profile TorBrowser/Data/Browser/profile.default "${@}" > /dev/null 2>&1 </dev/null &
More information about the tor-commits
mailing list