Thorium Archive at 2023.12.15. With releases, pull requests and issues at the date
Find a file
2021-11-21 00:58:01 -06:00
build/config/compiler Update BUILD.gn 2021-11-18 13:18:54 -06:00
chrome Update to reflect Thorium 2021-11-18 13:09:03 -06:00
chrome-devtools Add files via upload 2021-10-26 05:16:41 -05:00
components/search_engines Update kCurrentDataVersion and zero-suggest cache 2021-11-21 00:36:23 -06:00
content/gpu Update BUILD.gn 2021-11-11 11:14:06 -06:00
content_shell Add experimental canvas2d 2021-11-12 12:29:57 -06:00
logos Add files via upload 2021-10-26 05:16:41 -05:00
media/gpu Update vaapi_wrapper.cc 2021-11-21 00:58:01 -06:00
net Update url_request_http_job.cc 2021-11-18 13:17:16 -06:00
sandbox/policy/linux Add audio sandbox patch for pulseaudio 2021-11-11 19:57:18 -06:00
ui/base/x Update x11_util.cc 2021-11-18 13:17:44 -06:00
v8/src/objects Add files via upload 2021-10-26 05:16:41 -05:00
.gclient Add files via upload 2021-10-19 04:31:13 -05:00
args.gn Update args.gn 2021-11-13 19:17:54 -06:00
args.list Update args.list 2021-11-13 19:19:33 -06:00
BRANDING First source upload 2021-10-18 01:52:25 -05:00
clean.sh Rename clean to clean.sh 2021-10-28 08:50:43 -05:00
libpepflashplayer.so Add files via upload 2021-10-22 12:09:16 -05:00
LICENSE Initial commit 2021-10-18 01:46:35 -05:00
PATCHES.md Update PATCHES.md 2021-11-12 17:50:09 -06:00
README.md Add badges and clean up/fix minor stuff. 2021-11-21 00:08:03 -06:00
setup.sh Update for audio sandbox patch 2021-11-11 19:58:30 -06:00
thorium_strings.grd Update thorium_strings.grd 2021-11-13 19:20:41 -06:00
trunk.sh Add flags to gclient sync 2021-11-13 19:15:39 -06:00
VERSION Update VERSION 2021-11-18 15:30:50 -06:00

GitHub tag (latest SemVer)  GitHub  GitHub commit activity

Thorium

Chromium fork for linux named after radioactive element No. 90

  – Includes Widevine, FFmpeg, Chrome Plugins, as well as thinLTO, CFlag, and PGO compiler optimizations. It is built with SSE4 and AVX, so it won't launch on CPU's below 2nd gen Core or AMD FX, but benefits from Advanced Vector EXtensions. You can disable this and use regular SSE3 like Chromium and Chrome. (See below.)

EXPERIMENTAL FEATURES/DIFFERENCES BETWEEN CHROMIUM AND THORIUM

  • Various compiler flags that improve performance and target AVX CPU's (read patches.md)
  • Experimental MPEG-DASH.
  • Experimental PDF annotation support (called "Ink" on ChromiumOS).
  • Patches from Debian including font rendering patch, VAAPI Patch, native notifications patch, title bar patch, and... the VDPAU Patch!! (Rejoice Nvidia users)
  • Audio Sandbox patch.
  • DoH (DNS over HTTPS) patches from Bromite.
  • Enable Do Not Track by default patch from Vanadium.
  • Disable Google API Key warning (you can still use API Keys to enable sync) from Ungoogled Chromium.
  • Adds DuckDuckGo, Ecosia, and Ask.com in US and other locales, along with the normal search engines.
  • Logo and Branding/Naming changed to the Thorium logo, Thorium name, and "Alex313031" being appended to "The Chromium Authors" in credits, etc.
  • .desktop file includes useful cmdline flags that enable experimental or useful features. (read PATCHES.md)
  • Includes installer patches and files to include ChromeDriver and content_shell, with a .desktop file being provided for content_shell (named thorium-shell.desktop and shows in desktop environments as Thorium Content Shell). You can also run content_shell with the command thorium-shell (custom wrapper for it, located in /usr/bin/). You can run ChromeDriver at /usr/bin/chromedriver.
  • For more info, read the PATCHES.md file.

  – args.gn exclude API Keys (you can get them yourself) and the pgo profile path is different for each chromium version (only needed when building). (See below.)

  In general follow build instructions at https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/linux/build_instructions.md and API Keys (if desired) at https://www.chromium.org/developers/how-tos/api-keys

Building

The scripts assume the Chromium source is at $HOME/chromiums/src/. You may have to 'sudo chmod +x' the scripts to make them executable.

  • After initial download of Chromium source code, run (from where you cloned this repo) ./trunk.sh. This will update and sync the sources and at the end it will download the PGO profile for chromium. The file will be downloaded to //chromium/src/chrome/build/pgo_profiles/*.profdata with the actual file name looking something like 'chrome-linux-main-1632505958-ddbb37bcdfa7dbd7b10cf3a9b6a5bc45e7a958a6.profdata', which should be added to the end of args.gn as per below.
  • Then (from where you cloned this repo) run ./setup.sh. This will copy all the files and patches to the needed locations and drop you to //chromium/src.
  • Run export EDITOR=nano & export VISUAL=nano # You can substitute a cmdline editor like vim here, but many GUI editors cause it to try and parse the args.gn file before it is even saved.
  • Run gn args out/thorium and the contents of 'args.gn' in this repo should be copy/pasted into the editor. --Include your api keys here at the top or leave blank, and edit the last line to point to the actual path and file name of '*.profdata'
  • 'args.list' contains an alphabetical list with descriptions of all possible build arguments.
  • To build, run autoninja -j8 -C out/thorium chrome chrome_sandbox content_shell -d stats The -j# can be changed to limit or increase the number of jobs (generally should be the number of CPU cores on your machine), and the -d stats at the end just shows better verbose stats during compiling. You could also append chromedriver (the releases have chromedriver) after content_shell to build chromedriver, the selenium compatible browser fuzzing library.
  • To install, copy/paste the contents of your out/thorium dir to a good location i.e. $HOME/bin/thorium. RECOMMENDED - Copy and run clean.sh within this dir to clean up build artifacts. Then you can just run the browser with ~/bin/thorium/chrome, the content_shell with ~/bin/thorium/content_shell, or chromedriver with ~/bin/thorium/chromedriver.
  • Proper Install: To install with a .deb, dont copy the contents of out/thorium; instead run
    autoninja -C out/thorium/ "chrome/installer/linux:unstable_deb" A nice .deb file will now be in out/thorium and you can install it with sudo dpkg -i *.deb It will be called 'thorium-browser-unstable_$VERSIONNUMBER_amd64.deb', and will be installed to /opt/chromium.org/chromium/.
       NOTE: To get back to "Trunk", i.e. to revert all changes in order to build vanilla chromium, just run ./trunk.sh again.
       NOTE: To compile without AVX, simply go to //chromium/src/build/config/compiler/BUILD.gn, search for mavx (there's only two
       lines), and replace mavx with msse3, then remove the lines right under both of those that contain "-ffp-contract=fast",

Thanks to https://github.com/robrich999/ for some info that went into this project.
Also thanks to https://github.com/bromite/bromite, https://github.com/saiarcot895/chromium-ubuntu-build, https://github.com/Eloston/ungoogled-chromium, and https://github.com/GrapheneOS/Vanadium for patch code.

   NOTE: libpepflashplayer.so is included for posterity and can be used to enable Adobe Flash on older Chromium releases. ʘ‿ʘ