├── .github
└── workflows
│ └── pre-deploy.yml
├── CNAME
├── README.md
├── appimage.sh
├── favicon.svg
├── install-twilight.sh
├── install.sh
├── robots.txt
├── scripts
└── write_redirects.py
└── updates
└── browser
├── Darwin_aarch64-gcc3
├── release
│ └── update.xml
└── twilight
│ └── update.xml
├── Darwin_x86-gcc3-u-i386-x86_64
├── release
│ └── update.xml
└── twilight
│ └── update.xml
├── Darwin_x86-gcc3
├── release
│ └── update.xml
└── twilight
│ └── update.xml
├── Darwin_x86_64-gcc3-u-i386-x86_64
├── release
│ └── update.xml
└── twilight
│ └── update.xml
├── Darwin_x86_64-gcc3
├── release
│ └── update.xml
└── twilight
│ └── update.xml
├── Linux_aarch64-gcc3
├── release
│ └── update.xml
└── twilight
│ └── update.xml
├── Linux_x86_64-gcc3
├── release
│ └── update.xml
└── twilight
│ └── update.xml
├── WINNT_aarch64-msvc-aarch64
├── release
│ └── update.xml
└── twilight
│ └── update.xml
├── WINNT_x86_64-msvc-x64
├── release
│ └── update.xml
└── twilight
│ └── update.xml
└── WINNT_x86_64-msvc
├── release
└── update.xml
└── twilight
└── update.xml
/.github/workflows/pre-deploy.yml:
--------------------------------------------------------------------------------
1 | name: Pre-Deploy Updates Server
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 |
8 | jobs:
9 | build:
10 | runs-on: ubuntu-latest
11 |
12 | steps:
13 | - name: Checkout repository
14 | uses: actions/checkout@v4
15 | with:
16 | token: ${{ secrets.DEPLOY_KEY }}
17 |
18 | - name: Setup Python
19 | uses: actions/setup-python@v5
20 | with:
21 | python-version: '3.x'
22 |
23 | - name: Fetch and override deploy branch
24 | run: |
25 | git checkout main
26 | git pull
27 |
28 | git branch -D deploy || true
29 | git checkout -b deploy
30 |
31 | - name: Write redirects
32 | run: |
33 | python scripts/write_redirects.py
34 |
35 | - name: Add confirm message
36 | run: |
37 | echo "Ready to deploy!"
38 |
39 | - name: Commit
40 | uses: stefanzweifel/git-auto-commit-action@v5
41 | with:
42 | commit_message: 🔖 Updated update server
43 | commit_user_name: Zen Browser Robot
44 | commit_user_email: zen-browser-auto@users.noreply.github.com
45 | branch: deploy
46 | push_options: '--force'
47 |
--------------------------------------------------------------------------------
/CNAME:
--------------------------------------------------------------------------------
1 | updates.zen-browser.app
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ### `Zen Browser Update Server`
4 |
5 | Resource server used for automatic updates system in Zen
6 |
--------------------------------------------------------------------------------
/appimage.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # LICENSE:
4 | # Done by: https://github.com/Muko-Tabi
5 | # Twilight support added by: https://github.com/LeMoonStar
6 | # This script is licensed under the MIT License.
7 |
8 | set -euo pipefail
9 | function log() {
10 | local RED='\033[0;31m'
11 | local YELLOW='\033[1;33m'
12 | local GREEN='\033[0;32m'
13 | local YELLOW_BG='\033[43m'
14 | local BLACK_FG='\033[30m'
15 | NC='\033[0m'
16 | if [[ "${1}" == "info" ]]; then
17 | printf "${GREEN}[i] ${2}${NC}\n"
18 | elif [[ "${1}" == "warn" ]]; then
19 | printf "${YELLOW}[w] ${2}${NC}\n"
20 | elif [[ "${1}" == "err" ]]; then
21 | printf "${RED}[e] ${2}${NC}\n"
22 | elif [[ "${1}" == "highlight" ]]; then
23 | printf "${YELLOW_BG}[h] ${BLACK_FG}${2}${NC}\n"
24 | else
25 | echo "WRONG SEVERITY : $1"
26 | exit 1
27 | fi
28 | }
29 |
30 | function log_info() { log "info" "$1"; }
31 | function log_warn() { log "warn" "$1"; }
32 | function log_err() { log "err" "$1"; }
33 | function log_highlight() { log "highlight" "$1"; }
34 |
35 | # Download URL globals
36 | # Zen Stable
37 | ZEN_STABLE="https://github.com/zen-browser/desktop/releases/latest/download/zen-x86_64.AppImage"
38 | # Zen Twilight
39 | ZEN_TWILIGHT="https://github.com/zen-browser/desktop/releases/download/twilight/zen-x86_64.AppImage"
40 |
41 | # Filename base globals
42 | ZEN_STABLE_NAME_BASE="ZenBrowser"
43 | ZEN_TWILIGHT_NAME_BASE="ZenTwilight"
44 |
45 | # Function to check if AVX2 is supported
46 | check_avx2_support() {
47 | if grep -q avx2 /proc/cpuinfo; then
48 | return 0 # AVX2 supported
49 | else
50 | return 1 # AVX2 not supported
51 | fi
52 | }
53 |
54 | # Function to check if Zen Browser is installed
55 | check_installation_status() {
56 | local app_name="$1"
57 | if [ -f ~/.local/share/AppImage/$app_name.AppImage ]; then
58 | return 0 # Zen Browser installed
59 | else
60 | return 1 # Zen Browser not installed
61 | fi
62 | }
63 |
64 | # Function to check if zsync is installed
65 | check_zsync_installed() {
66 | if command -v zsync &> /dev/null; then
67 | return 0 # zsync is installed
68 | else
69 | return 1 # zsync is not installed
70 | fi
71 | }
72 |
73 | # Kawaii ASCII Art for the script
74 | kawaii_art() {
75 | local is_twilight="$1"
76 | local file_base
77 |
78 | if [[ "$is_twilight" == "1" ]]; then
79 | file_base="$ZEN_TWILIGHT_NAME_BASE"
80 | else
81 | file_base="$ZEN_STABLE_NAME_BASE"
82 | fi
83 |
84 | log_info "╔════════════════════════════════════════════════════╗"
85 | log_info "║ ║"
86 | log_info "║ (ノ◕ヮ◕)ノ*:・゚✧ Zen Browser Installer ║"
87 | log_info "║ ║"
88 |
89 | if check_installation_status "$file_base"; then
90 | log_info "║ Status: Zen Browser Installed ║"
91 | else
92 | log_info "║ Status: Zen Browser Not Installed ║"
93 | fi
94 |
95 | if check_zsync_installed; then
96 | log_info "║ zsync: Installed (Needed for Updates) ║"
97 | else
98 | log_info "║ zsync: Not Installed (Needed for Updates) ║"
99 | fi
100 |
101 | log_info "║ ║"
102 | log_info "╚════════════════════════════════════════════════════╝"
103 | log_info ""
104 | }
105 |
106 | # Function to download a file with unlimited retries
107 | download_until_success() {
108 | local url="$1"
109 | local output_path="$2"
110 | local mode="$3" # New parameter to indicate the mode
111 |
112 | while true; do
113 | case "$mode" in
114 | "zsync")
115 | log_info "Checking for Update..."
116 | ;;
117 | "update")
118 | log_info "Updating Zen Browser..."
119 | ;;
120 | "install")
121 | log_info "Installing Zen Browser..."
122 | ;;
123 | esac
124 | if curl -# -L --connect-timeout 30 --max-time 600 "$url" -o "$output_path"; then
125 | case "$mode" in
126 | "zsync")
127 | log_info "Checking for Update successfully!"
128 | ;;
129 | "update")
130 | log_info "Update completed successfully!"
131 | ;;
132 | "install")
133 | log_info "Install completed successfully!"
134 | ;;
135 | esac
136 | break
137 | else
138 | case "$mode" in
139 | "zsync")
140 | log_err "(⌣_⌣” ) Checking for Update failed, retrying..."
141 | ;;
142 | "update")
143 | log_err "(⌣_⌣” ) Update failed, retrying..."
144 | ;;
145 | "install")
146 | log_err "(⌣_⌣” ) Install failed, retrying..."
147 | ;;
148 | esac
149 | sleep 5 # Optional: wait a bit before retrying
150 | fi
151 | done
152 | }
153 |
154 | process_appimage() {
155 | local appimage_path="$1"
156 | local app_name="$2"
157 |
158 | # Make AppImage executable
159 | chmod +x "${appimage_path}"
160 |
161 | # Extract all files from AppImage
162 | "${appimage_path}" --appimage-extract
163 |
164 | # Move .desktop file (from /squashfs-root only)
165 | desktop_file=$(find -L squashfs-root -maxdepth 1 -name "*.desktop" | head -n 1)
166 | mv "${desktop_file}" ~/.local/share/applications/${app_name}.desktop
167 |
168 | # Find PNG icon (from /squashfs-root only)
169 | icon_file=$(find -L squashfs-root -maxdepth 1 -name "*.png" | head -n 1)
170 |
171 | # Resolve symlink if the icon is a symlink
172 | if [ -L "${icon_file}" ]; then
173 | icon_file=$(readlink -f "${icon_file}")
174 | fi
175 |
176 | # Copy the icon to the icons directory
177 | cp "${icon_file}" ~/.local/share/icons/${app_name}.png
178 |
179 | # Move AppImage to final location, only if it's not already there
180 | if [ "${appimage_path}" != "$HOME/.local/share/AppImage/${app_name}.AppImage" ]; then
181 | mv "${appimage_path}" ~/.local/share/AppImage/
182 | fi
183 |
184 | # Edit .desktop file to update paths
185 | desktop_file=~/.local/share/applications/${app_name}.desktop
186 | awk -v home="$HOME" -v app_name="$app_name" '
187 | BEGIN { in_action = 0 }
188 | /^\[Desktop Action/ { in_action = 1 }
189 | /^Exec=/ {
190 | if (in_action) {
191 | split($0, parts, "=")
192 | sub(/^[^ ]+/, "", parts[2]) # Remove the first word (original command)
193 | print "Exec=" home "/.local/share/AppImage/" app_name ".AppImage" parts[2]
194 | } else {
195 | print "Exec=" home "/.local/share/AppImage/" app_name ".AppImage %u"
196 | }
197 | next
198 | }
199 | /^Icon=/ { print "Icon=" home "/.local/share/icons/" app_name ".png"; next }
200 | { print }
201 | ' "${desktop_file}" > "${desktop_file}.tmp" && mv "${desktop_file}.tmp" "${desktop_file}"
202 |
203 | # Clean up extracted files
204 | rm -rf squashfs-root AppDir
205 | }
206 |
207 | uninstall_appimage() {
208 | local app_name="$1"
209 | log_info ""
210 | # Remove AppImage
211 | log_warn "Removing Zen Browser AppImage..."
212 | rm -f ~/.local/share/AppImage/${app_name}.AppImage
213 |
214 | # Remove .desktop file
215 | log_warn "Removing Zen Browser .desktop file..."
216 | rm -f ~/.local/share/applications/${app_name}.desktop
217 |
218 | # Remove icon
219 | log_warn "Removing Zen Browser icon..."
220 | rm -f ~/.local/share/icons/${app_name}.png
221 |
222 | log_info ""
223 | log_info "(︶︹︺) Uninstalled ${app_name}"
224 | }
225 |
226 | check_for_updates() {
227 | local is_twilight="$1"
228 | local zsync_url
229 | local zsync_file
230 | local appimage_url
231 | local file_base
232 |
233 | if [[ "$is_twilight" == 1 ]]; then
234 | file_base="$ZEN_TWILIGHT_NAME_BASE"
235 | else
236 | file_base="$ZEN_STABLE_NAME_BASE"
237 | fi
238 |
239 | log_info ""
240 |
241 |
242 | if [[ "$is_twilight" == 1 ]]; then
243 | zsync_url="$ZEN_TWILIGHT.zsync"
244 | appimage_url="$ZEN_TWILIGHT"
245 | else
246 | zsync_url="$ZEN_STABLE.zsync"
247 | appimage_url="$ZEN_STABLE"
248 | fi
249 |
250 | # Get the download directory using xdg-user-dir, using Downloads as default value
251 | DOWNLOAD_DIR=$(xdg-user-dir DOWNLOAD || echo "${HOME}/Downloads")
252 |
253 | # Set zsync file path
254 | zsync_file="${DOWNLOAD_DIR}/${file_base}.AppImage.zsync"
255 |
256 | if check_installation_status "$file_base"; then
257 | log_info "Checking for updates..."
258 | if ! check_zsync_installed; then
259 | log_err "Zsync is not installed. Please install zsync to enable update functionality."
260 | return 1
261 | fi
262 | download_until_success "$zsync_url" "$zsync_file" "zsync"
263 | update_output=$(zsync -i ~/.local/share/AppImage/$file_base.AppImage -o ~/.local/share/AppImage/$file_base.AppImage "$zsync_file" 2>&1)
264 | if echo "$update_output" | grep -q "verifying download...checksum matches OK"; then
265 | log_info "(。♥‿♥。) Congrats! Zen Browser is up-to-date!"
266 | else
267 | echo "Updating Zen Browser..."
268 | download_until_success "$appimage_url" ~/.local/share/AppImage/$file_base.AppImage "update"
269 | process_appimage ~/.local/share/AppImage/$file_base.AppImage $file_base
270 | log_info "(。♥‿♥。) Zen Browser updated to the latest!"
271 | fi
272 | rm -f "$zsync_file"
273 | else
274 | log_err "Zen Browser is not installed!"
275 | main_menu
276 | fi
277 | }
278 |
279 | install_zen_browser() {
280 | local is_twilight="$1"
281 | local appimage_url
282 | local file_base
283 |
284 | if [[ "$is_twilight" == 1 ]]; then
285 | file_base="$ZEN_TWILIGHT_NAME_BASE"
286 | else
287 | file_base="$ZEN_STABLE_NAME_BASE"
288 | fi
289 |
290 | log_info ""
291 |
292 | if [[ "$is_twilight" == 1 ]]; then
293 | appimage_url="$ZEN_TWILIGHT"
294 | else
295 | appimage_url="$ZEN_STABLE"
296 | fi
297 |
298 | log_warn "Downloading Zen from $appimage_url"
299 | log_info ""
300 | temp_file="/tmp/$file_base.AppImage"
301 | download_until_success "$appimage_url" "$temp_file" "install"
302 | process_appimage "$temp_file" $file_base
303 | log_info ""
304 | log_info "(。♥‿♥。) Zen Browser installed successfully!"
305 | rm -f "$temp_file"
306 | }
307 |
308 | main_menu() {
309 | # Check if the script is in twilight mode.
310 | local is_twilight
311 | if [[ "$1" == "twilight" ]]; then
312 | is_twilight=1
313 | log_warn "The installer is in Twilight mode!"
314 | else
315 | is_twilight=0
316 | fi
317 |
318 | # Show kawaii ASCII art
319 | kawaii_art $is_twilight
320 |
321 | log_info "(★^O^★) What would you like to do?"
322 | log_info " 1) Install"
323 | log_info " 2) Uninstall"
324 | if check_zsync_installed; then
325 | log_info " 3) Check for Updates"
326 | fi
327 | log_info " 0) Exit"
328 | if check_zsync_installed; then
329 | read -p "Enter your choice (0-3): " main_choice
330 | else
331 | read -p "Enter your choice (0-2): " main_choice
332 | fi
333 |
334 | case $main_choice in
335 | 1)
336 | install_zen_browser $is_twilight
337 | ;;
338 | 2)
339 | if [[ "$is_twilight" == 1 ]]; then
340 | uninstall_appimage "$ZEN_TWILIGHT_NAME_BASE"
341 | else
342 | uninstall_appimage "$ZEN_STABLE_NAME_BASE"
343 | fi
344 | ;;
345 | 3)
346 | if check_zsync_installed; then
347 | check_for_updates $is_twilight
348 | else
349 | log_err "(•ˋ _ ˊ•) Invalid choice. Exiting..."
350 | exit 1
351 | fi
352 | ;;
353 | 0)
354 | log_info "(⌒‿⌒) Exiting..."
355 | exit 0
356 | ;;
357 | *)
358 | log_err "(•ˋ _ ˊ•) Invalid choice. Exiting..."
359 | exit 1
360 | ;;
361 | esac
362 | }
363 |
364 | # Create necessary directories
365 | mkdir -p ~/.local/share/applications
366 | mkdir -p ~/.local/share/icons
367 | mkdir -p ~/.local/share/AppImage
368 |
369 | # Execute the main menu
370 | main_menu "${1:-stable}"
371 |
372 | # End of script
373 | log_info ""
374 | log_info "Thank you for using Zen Browser Installer!"
375 |
--------------------------------------------------------------------------------
/favicon.svg:
--------------------------------------------------------------------------------
1 |
28 |
--------------------------------------------------------------------------------
/install-twilight.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -euo pipefail
4 |
5 | app_name=zen-twilight
6 | literal_name_of_installation_directory=".tarball-installations"
7 | universal_path_for_installation_directory="$HOME/$literal_name_of_installation_directory"
8 | app_installation_directory="$universal_path_for_installation_directory/zen-twilight"
9 | official_package_location="https://github.com/zen-browser/desktop/releases/download/twilight/zen.linux-x86_64.tar.xz"
10 | tar_location=$(mktemp /tmp/zen.XXXXXX.tar.xz)
11 | open_tar_application_data_location="zen"
12 | local_bin_path="$HOME/.local/bin"
13 | local_application_path="$HOME/.local/share/applications"
14 | app_bin_in_local_bin="$local_bin_path/$app_name"
15 | desktop_in_local_applications="$local_application_path/$app_name.desktop"
16 | icon_path="$app_installation_directory/browser/chrome/icons/default/default128.png"
17 | executable_path=$app_installation_directory/zen
18 |
19 | echo "Welcome to Zen Twilight tarball installer, just chill and wait for the installation to complete!"
20 |
21 | sleep 1
22 |
23 | echo "Downloading the latest package"
24 | curl -L -o $tar_location $official_package_location
25 | if [ $? -eq 0 ]; then
26 | echo OK
27 | else
28 | echo "Download failed. Curl not found or not installed"
29 | exit
30 | fi
31 |
32 | echo "Extracting Zen Twilight..."
33 | tar -xvJf $tar_location
34 |
35 | echo "Untarred successfully!"
36 |
37 | echo "Checking to see if an older installation exists"
38 | if [ -f "$app_bin_in_local_bin" ]; then
39 | echo "Old bin file detected, removing..."
40 | rm "$app_bin_in_local_bin"
41 | fi
42 |
43 | if [ -d "$app_installation_directory" ]; then
44 | echo "Old app files are found, removing..."
45 | rm -rf "$app_installation_directory"
46 | fi
47 |
48 | if [ -f "$desktop_in_local_applications" ]; then
49 | echo "Old app files are found, removing..."
50 | rm "$desktop_in_local_applications"
51 | fi
52 |
53 | if [ ! -d $universal_path_for_installation_directory ]; then
54 | echo "Creating the $universal_path_for_installation_directory directory for installation"
55 | mkdir $universal_path_for_installation_directory
56 | fi
57 |
58 | mv $open_tar_application_data_location $app_installation_directory
59 |
60 | echo "Zen Twilight successfully moved to your safe place!"
61 |
62 | rm $tar_location
63 |
64 | if [ ! -d $local_bin_path ]; then
65 | echo "$local_bin_path not found, creating it for you"
66 | mkdir $local_bin_path
67 | fi
68 |
69 | touch $app_bin_in_local_bin
70 | chmod u+x $app_bin_in_local_bin
71 | echo "#!/bin/bash
72 | $executable_path" >> $app_bin_in_local_bin
73 |
74 | echo "Created executable for your \$PATH if you ever need"
75 |
76 | if [ ! -d $local_application_path ]; then
77 | echo "Creating the $local_application_path directory for desktop file"
78 | mkdir $local_application_path
79 | fi
80 |
81 |
82 | touch $desktop_in_local_applications
83 | echo "
84 | [Desktop Entry]
85 | Name=Zen Twilight
86 | Comment=Development build of Zen Browser with latest experimental features and updates
87 | Keywords=web;browser;internet
88 | Exec=$executable_path %u
89 | Icon=$icon_path
90 | Terminal=false
91 | StartupNotify=true
92 | StartupWMClass=zen
93 | NoDisplay=false
94 | Type=Application
95 | MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
96 | Categories=Network;WebBrowser;
97 | Actions=new-window;new-private-window;profile-manager-window;
98 | [Desktop Action new-window]
99 | Name=Open a New Window
100 | Exec=$executable_path --new-window %u
101 | [Desktop Action new-private-window]
102 | Name=Open a New Private Window
103 | Exec=$executable_path --private-window %u
104 | [Desktop Action profile-manager-window]
105 | Name=Open the Profile Manager
106 | Exec=$executable_path --ProfileManager
107 | " >> $desktop_in_local_applications
108 |
109 | echo "Created desktop entry successfully"
110 | echo "Installation is successful"
111 | echo "Done, and done, have fun! 🐷"
112 |
113 | exit 0
114 |
--------------------------------------------------------------------------------
/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -euo pipefail
4 |
5 | app_name=zen
6 | literal_name_of_installation_directory=".tarball-installations"
7 | universal_path_for_installation_directory="$HOME/$literal_name_of_installation_directory"
8 | app_installation_directory="$universal_path_for_installation_directory/zen"
9 | official_package_location="https://github.com/zen-browser/desktop/releases/latest/download/zen.linux-x86_64.tar.xz"
10 | tar_location=$(mktemp /tmp/zen.XXXXXX.tar.xz)
11 | open_tar_application_data_location="zen"
12 | local_bin_path="$HOME/.local/bin"
13 | local_application_path="$HOME/.local/share/applications"
14 | app_bin_in_local_bin="$local_bin_path/$app_name"
15 | desktop_in_local_applications="$local_application_path/$app_name.desktop"
16 | icon_path="$app_installation_directory/browser/chrome/icons/default/default128.png"
17 | executable_path=$app_installation_directory/zen
18 |
19 | echo "Welcome to Zen tarball installer, just chill and wait for the installation to complete!"
20 |
21 | sleep 1
22 |
23 | echo "Downloading the latest package"
24 | curl -L -o $tar_location $official_package_location
25 | if [ $? -eq 0 ]; then
26 | echo OK
27 | else
28 | echo "Download failed. Curl not found or not installed"
29 | exit
30 | fi
31 |
32 | echo "Extracting Zen Browser..."
33 | tar -xvJf $tar_location
34 |
35 | echo "Untarred successfully!"
36 |
37 | echo "Checking to see if an older installation exists"
38 | if [ -f "$app_bin_in_local_bin" ]; then
39 | echo "Old bin file detected, removing..."
40 | rm "$app_bin_in_local_bin"
41 | fi
42 |
43 | if [ -d "$app_installation_directory" ]; then
44 | echo "Old app files are found, removing..."
45 | rm -rf "$app_installation_directory"
46 | fi
47 |
48 | if [ -f "$desktop_in_local_applications" ]; then
49 | echo "Old app files are found, removing..."
50 | rm "$desktop_in_local_applications"
51 | fi
52 |
53 | if [ ! -d $universal_path_for_installation_directory ]; then
54 | echo "Creating the $universal_path_for_installation_directory directory for installation"
55 | mkdir $universal_path_for_installation_directory
56 | fi
57 |
58 | mv $open_tar_application_data_location $app_installation_directory
59 |
60 | echo "Zen successfully moved to your safe place!"
61 |
62 | rm $tar_location
63 |
64 | if [ ! -d $local_bin_path ]; then
65 | echo "$local_bin_path not found, creating it for you"
66 | mkdir $local_bin_path
67 | fi
68 |
69 | touch $app_bin_in_local_bin
70 | chmod u+x $app_bin_in_local_bin
71 | echo "#!/bin/bash
72 | $executable_path" >> $app_bin_in_local_bin
73 |
74 | echo "Created executable for your \$PATH if you ever need"
75 |
76 | if [ ! -d $local_application_path ]; then
77 | echo "Creating the $local_application_path directory for desktop file"
78 | mkdir $local_application_path
79 | fi
80 |
81 |
82 | touch $desktop_in_local_applications
83 | echo "
84 | [Desktop Entry]
85 | Name=Zen Browser
86 | Comment=Experience tranquillity while browsing the web without people tracking you!
87 | Keywords=web;browser;internet
88 | Exec=$executable_path %u
89 | Icon=$icon_path
90 | Terminal=false
91 | StartupNotify=true
92 | StartupWMClass=zen
93 | NoDisplay=false
94 | Type=Application
95 | MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
96 | Categories=Network;WebBrowser;
97 | Actions=new-window;new-private-window;profile-manager-window;
98 | [Desktop Action new-window]
99 | Name=Open a New Window
100 | Exec=$executable_path --new-window %u
101 | [Desktop Action new-private-window]
102 | Name=Open a New Private Window
103 | Exec=$executable_path --private-window %u
104 | [Desktop Action profile-manager-window]
105 | Name=Open the Profile Manager
106 | Exec=$executable_path --ProfileManager
107 | " >> $desktop_in_local_applications
108 |
109 | echo "Created desktop entry successfully"
110 | echo "Installation is successful"
111 | echo "Done, and done, have fun! 🐷"
112 |
113 | exit 0
114 |
--------------------------------------------------------------------------------
/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /
3 |
--------------------------------------------------------------------------------
/scripts/write_redirects.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | # For branch redirects. E.g. if we want to convert 'alpha' -> 'beta' in all URLs,
4 | # but still maintain the old URLs just in case someone has not updated
5 | # broken branch -> fixed branch
6 | REDIRECTS = {
7 | "twilightundefined": "twilight", # A bug there was with previous twilight updates
8 | "alpha": "release", # Alpha -> Beta
9 | "alpha-generic": "release", # Alpha -> Beta
10 | "beta-generic": "release", # Beta (Generic) -> Beta
11 | "twilight-generic": "twilight", # Twilight (Generic) -> Twilight
12 | "beta": "release", # Beta -> Release
13 | "release-generic": "release", # Generic release -> release
14 | }
15 |
16 | UPDATES_ROOT = "updates/browser"
17 |
18 | for new, old in REDIRECTS.items():
19 | print(f"Redirecting {old} -> {new}")
20 | # just create and copy the content of the old file to the new file
21 | # the structure of the updates server is updates/browser///update.xml
22 | # we want to replace the branch with the new branch
23 | for target in os.listdir(UPDATES_ROOT):
24 | target_path = os.path.join(UPDATES_ROOT, target)
25 | for branch in os.listdir(target_path):
26 | if branch == old:
27 | # The directory doesnt exist, so we create a new one
28 | new_branch_path = os.path.join(target_path, new)
29 | old_branch_path = os.path.join(target_path, old)
30 | os.makedirs(new_branch_path)
31 | for update in os.listdir(old_branch_path):
32 | update_path = os.path.join(old_branch_path, update)
33 | with open(update_path, "r") as f:
34 | content = f.read()
35 | new_update_path = os.path.join(new_branch_path, update)
36 | with open(new_update_path, "w") as nf:
37 | nf.write(content)
38 | print(f"Redirected {old} -> {new} in {target}/{branch}")
39 |
40 | print("Done! Let's build the site next!")
41 |
42 |
--------------------------------------------------------------------------------
/updates/browser/Darwin_aarch64-gcc3/release/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Darwin_aarch64-gcc3/twilight/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Darwin_x86-gcc3-u-i386-x86_64/release/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Darwin_x86-gcc3-u-i386-x86_64/twilight/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Darwin_x86-gcc3/release/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Darwin_x86-gcc3/twilight/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Darwin_x86_64-gcc3-u-i386-x86_64/release/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Darwin_x86_64-gcc3-u-i386-x86_64/twilight/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Darwin_x86_64-gcc3/release/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Darwin_x86_64-gcc3/twilight/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Linux_aarch64-gcc3/release/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Linux_aarch64-gcc3/twilight/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Linux_x86_64-gcc3/release/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/Linux_x86_64-gcc3/twilight/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/WINNT_aarch64-msvc-aarch64/release/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/WINNT_aarch64-msvc-aarch64/twilight/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/WINNT_x86_64-msvc-x64/release/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/WINNT_x86_64-msvc-x64/twilight/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/WINNT_x86_64-msvc/release/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/updates/browser/WINNT_x86_64-msvc/twilight/update.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------