Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions .github/workflows/updates/Mullvad.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
#!/bin/bash


webVer="$(wget -qO- https://sourceforge.net/projects/tor-browser-ports/rss?path=/ | grep mullvad-browser-linux -m1 | sed 's/.*\[\/mullvad-//g ; s/\/mullvad-browser-linux.*//g')"
armhf_url="https://sourceforge.net/projects/tor-browser-ports/files/mullvad-${webVer}/mullvad-browser-linux-armhf-${webVer}.tar.xz/download"
arm64_url="https://sourceforge.net/projects/tor-browser-ports/files/mullvad-${webVer}/mullvad-browser-linux-arm64-${webVer}.tar.xz/download"
webVer="$(get_release ooovlad/tor-mullvad-aarch64)"
arm64_url="https://github.com/ooovlad/tor-mullvad-aarch64/releases/download/${webVer}/mullvad-browser-linux-aarch64-${webVer}.tar.xz"

source $GITHUB_WORKSPACE/.github/workflows/update_github_script.sh
75 changes: 2 additions & 73 deletions .github/workflows/updates/Tor.sh
Original file line number Diff line number Diff line change
@@ -1,77 +1,6 @@
#!/bin/bash

# Extract versions from the specific structure:
# Lines look like:
# <img ...> <a href="tbb-nightly.2025.09.24/">tbb-nightly.2025.09.24/</a> 2025-09-24 14:28 -
# Then sort by YYYYMMDD numerically to be portable (no reliance on sort -V).
# Then retrieve current pi-apps version and compare those to be 5 days off each other.
get_latest_nightly_version() {
wget -qO- "https://nightlies.tbb.torproject.org/nightly-builds/tor-browser-builds" 2>/dev/null \
| sed -nE 's@.*href="tbb-nightly\.([0-9]{4}\.[0-9]{2}\.[0-9]{2})/".*@\1@p' \
| sort \
| tail -n 1
}

get_installed_version() {
# Expect a line like: version=2025.09.24
if [[ -f install-64 ]]; then
sed -nE 's/^version=([0-9]{4}\.[0-9]{2}\.[0-9]{2})\s*$/\1/p' install-64 | head -n1
fi
}

days_between() {
# Args: date1 date2 (YYYY.MM.DD)
local d1="$1" d2="$2"
local e1 e2
e1=$(date -d "${d1//./-}" +%s) || return 1
e2=$(date -d "${d2//./-}" +%s) || return 1
local diff=$(( e1 - e2 ))
echo $(( diff / 86400 ))
}

choose_version() {
local remote installed
remote=$(get_latest_nightly_version || true)
installed=$(get_installed_version || true)

# If no remote, nothing to do
if [[ -z $remote ]]; then
echo ""
return
fi

# If no installed version, just use remote
if [[ -z $installed ]]; then
echo "$remote"
return
fi

# Validate formats
if [[ ! $remote =~ ^[0-9]{4}\.[0-9]{2}\.[0-9]{2}$ ]] || \
[[ ! $installed =~ ^[0-9]{4}\.[0-9]{2}\.[0-9]{2}$ ]]; then
echo "$remote" # fall back to let update script call an error
return
fi

local delta
delta=$(days_between "$remote" "$installed")

if (( delta >= 5 )); then
echo "$remote"
else
echo "$installed"
fi
}

# update arm64 version
version="$(choose_version)"
arm64_url="https://nightlies.tbb.torproject.org/nightly-builds/tor-browser-builds/tbb-nightly.${version}/nightly-linux-aarch64/tor-browser-linux-aarch64-tbb-nightly.${version}.tar.xz"

source $GITHUB_WORKSPACE/.github/workflows/update_github_script.sh

# update armhf version
# Older unofficial build
version="$(wget -qO- https://sourceforge.net/projects/tor-browser-ports/files | grep -F 'Download Latest Version' --after 1 | tail -n -1 | tr '<>\-_' '\n' | sed -n 8p | sed 's/\.tar\.xz.*//g')"
armhf_url="https://sourceforge.net/projects/tor-browser-ports/files/${version}/tor-browser-linux-armhf-${version}.tar.xz/download"
webVer="$(get_release ooovlad/tor-mullvad-aarch64)"
arm64_url="https://github.com/ooovlad/tor-mullvad-aarch64/releases/download/${webVer}/tor-browser-linux-aarch64-${webVer}.tar.xz"

source $GITHUB_WORKSPACE/.github/workflows/update_github_script.sh
4 changes: 3 additions & 1 deletion apps/Mullvad/description
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@ Default settings will block trackers, browser fingerprinting, ads, insecure HTTP
Mullvad Browser is a fork of the Tor browser, and includes uBlock Origin and the Mullvad extensions preinstalled.

To run: Menu -> Internet -> Mullvad Browser
To run in a terminal: ~/mullvad-browser/Browser/start-mullvad-browser
To run in a terminal: `~/.local/share/mullvad-browser/start-mullvad-browser.desktop`

To remove user-data after uninstall use `rm -rf ~/.local/share/mullvad-browser`
Binary file modified apps/Mullvad/icon-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/Mullvad/icon-64.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 18 additions & 16 deletions apps/Mullvad/install-32
Original file line number Diff line number Diff line change
@@ -1,39 +1,41 @@
#!/bin/bash

version=13.0.9

#if ~/mullvad-browser_en-US folder exists, prepare to import its user-data
if [ -d ~/mullvad-browser_en-US/Browser/MullvadBrowser/Data/Browser ];then
mv -f ~/mullvad-browser_en-US ~/mullvad-browser.temp
fi
INSTALL_DIR="$HOME/.local/share"

#if ~/mullvad-browser folder exists, prepare to import its user-data
if [ -d ~/mullvad-browser/Browser/MullvadBrowser/Data/Browser ];then
mv -f ~/mullvad-browser ~/mullvad-browser.temp
mv -f ~/mullvad-browser "$INSTALL_DIR"/mullvad-browser.temp
fi

#if "$INSTALL_DIR"/mullvad-browser folder exists, prepare to import its user-data
if [ -d "$INSTALL_DIR"/mullvad-browser/Browser/MullvadBrowser/Data/Browser ];then
mv -f "$INSTALL_DIR"/mullvad-browser "$INSTALL_DIR"/mullvad-browser.temp
fi

rm -f ~/mullvad.tar.xz
wget -O ~/mullvad.tar.xz https://sourceforge.net/projects/tor-browser-ports/files/mullvad-${version}/mullvad-browser-linux-armhf-${version}.tar.xz/download || error "Failed to download!"
tar -xf ~/mullvad.tar.xz || error "Failed to extract!"
rm -f ~/mullvad.tar.xz
rm -f /tmp/mullvad.tar.xz
wget -O /tmp/mullvad.tar.xz https://sourceforge.net/projects/tor-browser-ports/files/mullvad-${version}/mullvad-browser-linux-armhf-${version}.tar.xz/download || error "Failed to download!"
mkdir -p "$INSTALL_DIR"/mullvad-browser
tar -xf /tmp/mullvad.tar.xz -C "$INSTALL_DIR"/mullvad-browser --strip-components=1 || error "Failed to extract!"
rm -f /tmp/mullvad.tar.xz

#if ~/mullvad-browser.temp folder exists, import its user-data
if [ -d ~/mullvad-browser.temp ];then
rm -rf ~/mullvad-browser/Browser/MullvadBrowser/Data/Browser
mv -f ~/mullvad-browser.temp/Browser/MullvadBrowser/Data/Browser ~/mullvad-browser/Browser/MullvadBrowser/Data && rm -rf ~/mullvad-browser.temp
#if "$INSTALL_DIR"/mullvad-browser.temp folder exists, import its user-data
if [ -d "$INSTALL_DIR"/mullvad-browser.temp ];then
rm -rf "$INSTALL_DIR"/mullvad-browser/Browser/MullvadBrowser/Data/Browser
mv -f "$INSTALL_DIR"/mullvad-browser.temp/Browser/MullvadBrowser/Data/Browser "$INSTALL_DIR"/mullvad-browser/Browser/MullvadBrowser/Data && rm -rf "$INSTALL_DIR"/mullvad-browser.temp
fi

#copy icon for wayfire
mkdir -p ~/.local/share/icons
cp -f $HOME/mullvad-browser/Browser/browser/chrome/icons/default/default128.png ~/.local/share/icons/mullvad-browser.png
cp -f "$INSTALL_DIR"/mullvad-browser/Browser/browser/chrome/icons/default/default128.png ~/.local/share/icons/mullvad-browser.png

echo "[Desktop Entry]
Type=Application
Name=Mullvad Browser
GenericName=Web Browser
Comment=Mullvad Browser is +1 for privacy and −1 for mass surveillance
Categories=Network;WebBrowser;Security;
Exec=$HOME/mullvad-browser/Browser/start-mullvad-browser --class 'mullvad-browser' --name 'mullvad-browser'
Exec=$INSTALL_DIR/mullvad-browser/Browser/start-mullvad-browser --class 'mullvad-browser' --name 'mullvad-browser'
X-MullvadBrowser-ExecShell=./Browser/start-mullvad-browser --detach
Icon=mullvad-browser
StartupWMClass=mullvad-browser" > ~/.local/share/applications/mullvad.desktop
59 changes: 29 additions & 30 deletions apps/Mullvad/install-64
Original file line number Diff line number Diff line change
@@ -1,40 +1,39 @@
#!/bin/bash

version=13.0.9
version=15.0
INSTALL_DIR="$HOME/.local/share"

#if ~/mullvad-browser_en-US folder exists, prepare to import its user-data
if [ -d ~/mullvad-browser_en-US/Browser/MullvadBrowser/Data/Browser ];then
mv -f ~/mullvad-browser_en-US ~/mullvad-browser.temp
fi
status 'Looking for previous installations and remaining user data…'

#if ~/mullvad-browser folder exists, prepare to import its user-data
#[OLD] if ~/mullvad-browser folder exists (old installdir), prepare to import its user-data
if [ -d ~/mullvad-browser/Browser/MullvadBrowser/Data/Browser ];then
mv -f ~/mullvad-browser ~/mullvad-browser.temp
mv -f ~/mullvad-browser "$INSTALL_DIR"/mullvad-browser.temp
status_green 'Found user data in ~/mullvad-browser '
fi

rm -f ~/mullvad.tar.xz
wget -O ~/mullvad.tar.xz https://sourceforge.net/projects/tor-browser-ports/files/mullvad-${version}/mullvad-browser-linux-arm64-${version}.tar.xz/download || error "Failed to download!"
tar -xf ~/mullvad.tar.xz || error "Failed to extract!"
rm -f ~/mullvad.tar.xz

#if ~/mullvad-browser.temp folder exists, import its user-data
if [ -d ~/mullvad-browser.temp ];then
rm -rf ~/mullvad-browser/Browser/MullvadBrowser/Data/Browser
mv -f ~/mullvad-browser.temp/Browser/MullvadBrowser/Data/Browser ~/mullvad-browser/Browser/MullvadBrowser/Data && rm -rf ~/mullvad-browser.temp
#if "$INSTALL_DIR"/mullvad-browser folder exists, prepare to import its user-data
if [ -d "$INSTALL_DIR"/mullvad-browser/Browser/MullvadBrowser/Data/Browser ];then
mv -f "$INSTALL_DIR"/mullvad-browser "$INSTALL_DIR"/mullvad-browser.temp
status_green "Found user data in $INSTALL_DIR/mullvad-browser"
fi

#copy icon for wayfire
mkdir -p ~/.local/share/icons
cp -f $HOME/mullvad-browser/Browser/browser/chrome/icons/default/default128.png ~/.local/share/icons/mullvad-browser.png

echo "[Desktop Entry]
Type=Application
Name=Mullvad Browser
GenericName=Web Browser
Comment=Mullvad Browser is +1 for privacy and −1 for mass surveillance
Categories=Network;WebBrowser;Security;
Exec=$HOME/mullvad-browser/Browser/start-mullvad-browser --class 'mullvad-browser' --name 'mullvad-browser'
X-MullvadBrowser-ExecShell=./Browser/start-mullvad-browser --detach
Icon=mullvad-browser
StartupWMClass=mullvad-browser" > ~/.local/share/applications/mullvad.desktop
status 'Downloading and extracting Mullvad Browser archive…'
rm -f /tmp/mullvad-browser-aarch64.tar.xz
wget -O /tmp/mullvad-browser-aarch64.tar.xz "https://github.com/ooovlad/tor-mullvad-aarch64/releases/download/${version}/mullvad-browser-linux-aarch64-${version}.tar.xz" || error "Failed to download!"
mkdir -p "$INSTALL_DIR"/mullvad-browser
tar -xpJf /tmp/mullvad-browser-aarch64.tar.xz -C "$INSTALL_DIR"/mullvad-browser --strip-components=1 || error "Failed to extract!"
rm -f /tmp/mullvad-browser-aarch64.tar.xz
status_green 'Done'

#if "$INSTALL_DIR"/mullvad-browser.temp folder exists, import its user-data
if [ -d "$INSTALL_DIR"/mullvad-browser.temp ];then
status -n 'Importing user-data… '
rm -rf "$INSTALL_DIR"/mullvad-browser/Browser/MullvadBrowser/Data/Browser
mv -f "$INSTALL_DIR"/mullvad-browser.temp/Browser/MullvadBrowser/Data/Browser "$INSTALL_DIR"/mullvad-browser/Browser/MullvadBrowser/Data && rm -rf "$INSTALL_DIR"/mullvad-browser.temp
status_green 'Done'
fi

status -n 'Registering Mullvad Browser as a desktop app for this user… '
cd "$INSTALL_DIR"/mullvad-browser || error 'Fatal error! Cannot cd to app!'
"$INSTALL_DIR"/mullvad-browser/start-mullvad-browser.desktop --register-app || error 'Failed to register a desktop app'
status_green 'Done'
56 changes: 45 additions & 11 deletions apps/Mullvad/uninstall
Original file line number Diff line number Diff line change
@@ -1,27 +1,61 @@
#!/bin/bash

#remove the menu launcher
rm -f ~/.local/share/applications/mullvad.desktop
# Command blocks that are left for backwards-compatibility of this uninstall script are marked as:
# [OLD] for installations from https://sourceforge.net/projects/tor-browser-ports/files/

INSTALL_DIR="$HOME/.local/share"

status 'Unregistering Mullvad Browser desktop app… '
if [ -d "$INSTALL_DIR"/mullvad-browser ]; then
cd "$INSTALL_DIR"/mullvad-browser || error 'Fatal error! Cannot cd to app!'
"$INSTALL_DIR"/mullvad-browser/start-mullvad-browser.desktop --unregister-app || error 'Failed to unregister a desktop app'
status_green 'Removed from applications menu'
elif [ -d ~/mullvad-browser ]; then
warning 'You either use old installation path (~/mullvad-browser) or deprecated arm32 app version that uses this old installation path.\nThis uninstall script can handle that anyways.'
else
error "Installation path not found neither in $INSTALL_DIR/mullvad-browser nor in ~/mullvad-browser\nAre you sure the app is installed?"
fi

status 'Looking for previous installations and remaining user data… '

#[OLD] check old installation path for remaining user-data
if [ -d ~/mullvad-browser/Browser/MullvadBrowser/Data/Browser ]; then
mkdir -p "$INSTALL_DIR"/mullvad-browser.temp/Browser/MullvadBrowser/Data
mv -n ~/mullvad-browser/Browser/MullvadBrowser/Data/Browser "$INSTALL_DIR"/mullvad-browser.temp/Browser/MullvadBrowser/Data
status_green 'User-data found in ~/mullvad-browser. Copied to temporary folder.'
fi

#before removing the mullvad-browser folder, move the browser configuration like bookmarks, etc
if [ -d ~/mullvad-browser ];then
mkdir -p ~/mullvad-browser.temp/Browser/MullvadBrowser/Data
mv -n ~/mullvad-browser/Browser/MullvadBrowser/Data/Browser ~/mullvad-browser.temp/Browser/MullvadBrowser/Data
if [ -d "$INSTALL_DIR"/mullvad-browser/Browser/MullvadBrowser/Data/Browser ];then
mkdir -p "$INSTALL_DIR"/mullvad-browser.temp/Browser/MullvadBrowser/Data
mv -n "$INSTALL_DIR"/mullvad-browser/Browser/MullvadBrowser/Data/Browser "$INSTALL_DIR"/mullvad-browser.temp/Browser/MullvadBrowser/Data
status_green "User-data found in $INSTALL_DIR/mullvad-browser. Copied to temporary folder."
fi

status -n 'Removing all browser internals… '

#[OLD] remove all browser internals from old installation path
[ -d ~/mullvad-browser ] && rm -rf ~/mullvad-browser

#remove all browser internals (except for user-data which we moved already)
rm -rf ~/mullvad-browser
rm -rf "$INSTALL_DIR"/mullvad-browser

#remove icon
rm -f ~/.local/share/icons/mullvad-browser.png
status_green 'Done'

#move back the temporary folder containing user-data
if [ -d ~/mullvad-browser.temp ];then
mv ~/mullvad-browser.temp ~/mullvad-browser
if [ -d "$INSTALL_DIR"/mullvad-browser.temp ];then
status -n 'Moving user data files back… '
mv "$INSTALL_DIR"/mullvad-browser.temp "$INSTALL_DIR"/mullvad-browser
status_green 'Done'

#let the user know where configuration is
echo "Mullvad Browser has been uninstalled, but user-data like settings and bookmarks remain intact.
To remove these files, run this command:
rm -rf ~/mullvad-browser"
rm -rf ${INSTALL_DIR}/mullvad-browser"

fi

#[OLD] remove the menu launcher
rm -f ~/.local/share/applications/mullvad.desktop
#[OLD] remove icon
rm -f ~/.local/share/icons/mullvad-browser.png
2 changes: 1 addition & 1 deletion apps/Mullvad/website
Original file line number Diff line number Diff line change
@@ -1 +1 @@
https://sourceforge.net/projects/tor-browser-ports/files/
https://github.com/ooovlad/tor-mullvad-aarch64
4 changes: 2 additions & 2 deletions apps/Tor/credits
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Tor Browser is developed by The Tor Project, Inc.
https://www.torproject.org/about/people/

Tor Browser ARM64 Nightly was put to Pi-Apps by oovlad
https://github.com/ooovlad
Tor Browser ARM64 was built and put to Pi-Apps by oovlad
https://github.com/ooovlad
9 changes: 4 additions & 5 deletions apps/Tor/description
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
The Tor Browser is a free web browser built on Firefox that helps you surf the web anonymously by routing your connection through a secure, global network of volunteer servers known as Tor network. Your data is encrypted, and your IP address is hidden by onion routing, protecting you from trackers, advertisers, and prying eyes. With built-in features like tracker blocking and script protection, Tor Browser ensures a safer online experience. Perfect for private browsing, accessing restricted sites, or exploring the web without leaving a trace.

Native aarch64 builds are coming! This is an official nightly aarch64 Linux build.
Note: if you use armhf system (32-bit OS), it will install older (2024-02-12) stable community build (updates for armhf are abandoned by mainainer). Aarch64 nightly version for 64-bit OS is updated in pi-apps every 5 days.
Community ARM builds for Tor Browser.
Note: arm64 (aarch64) version is up-to-date but arm32 (armhf) version is deprecated since 2024-02-12 and unsafe.
Note: arm64 models are Raspberry Pi 3/4/400/5/500 and newer.

WARNING! This is a build that is currently in development. It is mainly for testing purposes, you should expect bugs. However, this is the only up-to-date Tor Browser package that is available for arm64 at this moment. Once a stable version is released, it will replace the nightly build in one of the next app updates.

To run: Menu -> Internet -> Tor Browser Nightly
To run: Menu -> Internet -> Tor Browser
To run from terminal: `~/.local/share/tor-browser/start-tor-browser.desktop`

To remove user-data after uninstall use `rm -rf ~/.local/share/tor-browser`
Binary file modified apps/Tor/icon-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/Tor/icon-64.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 5 additions & 5 deletions apps/Tor/install-64
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#!/bin/bash

version=2025.10.30
version=15.0
INSTALL_DIR="$HOME/.local/share"

rm -f /tmp/tbb-nightly.tar.xz
wget -O /tmp/tbb-nightly.tar.xz "https://nightlies.tbb.torproject.org/nightly-builds/tor-browser-builds/tbb-nightly.$version/nightly-linux-aarch64/tor-browser-linux-aarch64-tbb-nightly.$version.tar.xz" || error "Failed to download Tor Browser Nightly ver. $version"
rm -f /tmp/tor-browser-aarch64.tar.xz
wget -O /tmp/tor-browser-aarch64.tar.xz "https://github.com/ooovlad/tor-mullvad-aarch64/releases/download/${version}/tor-browser-linux-aarch64-${version}.tar.xz" || error "Failed to download Tor Browser ver. $version"

status -n 'Looking for previous installations and remaining user data… '
if [ -d "$INSTALL_DIR"/tor-browser ]; then
Expand All @@ -19,8 +19,8 @@ fi
status_green 'Done'

status -n "Extracting Tor Browser to $INSTALL_DIR/tor-browser … "
tar -xpJf /tmp/tbb-nightly.tar.xz -C "$INSTALL_DIR"/tor-browser --strip-components=1 || error 'Failed to extract Tor Browser'
rm -f /tmp/tbb-nightly.tar.xz
tar -xpJf /tmp/tor-browser-aarch64.tar.xz -C "$INSTALL_DIR"/tor-browser --strip-components=1 || error 'Failed to extract Tor Browser'
rm -f /tmp/tor-browser-aarch64.tar.xz
status_green 'Done'

#if tor-browser.temp folder exists, import its user-data
Expand Down
2 changes: 1 addition & 1 deletion apps/Tor/uninstall
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ fi
status_green 'Done'

status -n 'Removing all browser internals… '
rm -rfv "$INSTALL_DIR"/tor-browser || error "Cannot remove $INSTALL_DIR/tor-browser directory"
rm -rf "$INSTALL_DIR"/tor-browser || error "Cannot remove $INSTALL_DIR/tor-browser directory"
status_green 'Done'

#move back the temporary folder containing user-data
Expand Down
2 changes: 1 addition & 1 deletion apps/Tor/website
Original file line number Diff line number Diff line change
@@ -1 +1 @@
https://nightlies.tbb.torproject.org/nightly-builds/tor-browser-builds/
https://github.com/ooovlad/tor-mullvad-aarch64