[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor-browser-bundle/master] Bug 13375: Allow Linux users to launch TBB from either GUI or shell
commit 3244969e9a513fb6bc2aeb34b220ba7b9a679586
Author: Mike Perry <mikeperry-git@xxxxxxxxxxxxxx>
Date: Tue Mar 17 15:15:07 2015 -0700
Bug 13375: Allow Linux users to launch TBB from either GUI or shell
Create a .desktop file that can handle relative launch, can be invoked from
the shell, and can be relocated to the dock/launcher/desktop after first
invocation.
This is some black magic right here. Screw the FreeDesktop.org people for
making this so difficult.
---
RelativeLink/execdesktop | 14 +++++++++++++
RelativeLink/start-tor-browser | 7 +++++++
RelativeLink/start-tor-browser.desktop | 30 ++++++++++++++++++++++++++++
gitian/descriptors/linux/gitian-bundle.yml | 2 +-
4 files changed, 52 insertions(+), 1 deletion(-)
diff --git a/RelativeLink/execdesktop b/RelativeLink/execdesktop
new file mode 100755
index 0000000..0dc7a42
--- /dev/null
+++ b/RelativeLink/execdesktop
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+TBB_START_PROG="$(grep '^X-TorBrowser-ExecShell' $1 | tail -1 | sed 's/^X-TorBrowser-ExecShell=//' | sed 's/%.//')"
+
+shift
+
+if [ "$#" -ge 1 ]
+then
+ echo "Launching '${TBB_START_PROG} $@'..."
+else
+ echo "Launching '${TBB_START_PROG}'..."
+fi
+
+eval "${TBB_START_PROG} $@"
diff --git a/RelativeLink/start-tor-browser b/RelativeLink/start-tor-browser
index 8c51f47..071c80d 100755
--- a/RelativeLink/start-tor-browser
+++ b/RelativeLink/start-tor-browser
@@ -215,6 +215,13 @@ else
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
+
SYSARCHITECTURE=$(getconf LONG_BIT)
TORARCHITECTURE=$(expr "$(file TorBrowser/Tor/tor)" : '.*ELF \([[:digit:]]*\)')
diff --git a/RelativeLink/start-tor-browser.desktop b/RelativeLink/start-tor-browser.desktop
new file mode 100755
index 0000000..c8be973
--- /dev/null
+++ b/RelativeLink/start-tor-browser.desktop
@@ -0,0 +1,30 @@
+#!/usr/bin/env ./Browser/execdesktop
+#
+# This file is a self-modifying .desktop file that can be run from the shell.
+# It preserves arguments and environment for the start-tor-browser script.
+#
+# When run, it will update itself with the absolute path to the current TBB
+# location. It is therefore possible to install/relocate this file after first
+# run (for example, by copying it to ~/.local/share/applications/ so that Tor
+# Browser will appear in your desktop applications menu).
+#
+# This file will also still function if the path changes when TBB is used as a
+# portable app, so long as it is run directly from that new directory, either
+# via the shell or via the file manager.
+#
+# If you installed this file to ~/.local/share/applications/ and then relocate
+# your TBB directory, Tor Browser will no longer launch from your desktop's
+# app launcher/dock. However, if you re-run this file from inside that new
+# directory, it will correct the absolute paths, and you can then copy it back
+# into ~/.local/share/applications/ again to restore desktop launch
+# functionality.
+
+[Desktop Entry]
+Type=Application
+Name=Tor Browser Setup
+GenericName=Web Browser
+Comment=Tor Browser is +1 for privacy and -1 for mass surveillance
+Categories=Network;WebBrowser;Security;
+Exec=sh -c '"$(dirname "$*")"/Browser/start-tor-browser || ([ ! -x "$(dirname "$*")"/Browser/start-tor-browser ] && "$(dirname "$*")"/start-tor-browser)' dummy %k
+X-TorBrowser-ExecShell=./Browser/start-tor-browser
+Icon=web-browser
diff --git a/gitian/descriptors/linux/gitian-bundle.yml b/gitian/descriptors/linux/gitian-bundle.yml
index 9290b91..b6a4a26 100644
--- a/gitian/descriptors/linux/gitian-bundle.yml
+++ b/gitian/descriptors/linux/gitian-bundle.yml
@@ -119,7 +119,7 @@ script: |
cp RelativeLink/* tor-browser/Browser/
#
cd tor-browser
- ln -s Browser/start-tor-browser
+ cp Browser/start-tor-browser.desktop ./
unzip ~/build/tor-browser-linux$GBUILD_BITS-gbuilt.zip
cd Browser/TorBrowser
unzip ~/build/tor-linux$GBUILD_BITS-gbuilt.zip
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits