{"id":14235960,"url":"https://github.com/gcarq/inox-patchset","last_synced_at":"2025-10-03T20:31:40.557Z","repository":{"id":148726646,"uuid":"39903898","full_name":"gcarq/inox-patchset","owner":"gcarq","description":"Inox patchset tries to provide a minimal Chromium based browser with focus on privacy by disabling data transmission to Google.","archived":true,"fork":false,"pushed_at":"2019-03-20T12:52:29.000Z","size":763,"stargazers_count":364,"open_issues_count":19,"forks_count":26,"subscribers_count":23,"default_branch":"master","last_synced_at":"2024-09-29T17:41:18.112Z","etag":null,"topics":["browser","chromium","patchset","privacy","security"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gcarq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2015-07-29T16:24:43.000Z","updated_at":"2024-08-19T08:17:37.000Z","dependencies_parsed_at":"2023-05-28T18:45:06.665Z","dependency_job_id":null,"html_url":"https://github.com/gcarq/inox-patchset","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gcarq%2Finox-patchset","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gcarq%2Finox-patchset/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gcarq%2Finox-patchset/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gcarq%2Finox-patchset/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gcarq","download_url":"https://codeload.github.com/gcarq/inox-patchset/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235184400,"owners_count":18949253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["browser","chromium","patchset","privacy","security"],"created_at":"2024-08-20T21:02:34.160Z","updated_at":"2025-10-03T20:31:40.202Z","avatar_url":"https://github.com/gcarq.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# Inox Browser (inox-patchset)\n\n## NOTE: This repository is no longer maintained. Please see [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium).\n\nInox patchset is applied on the chromium source code and tries to prevent data transmission to Google to get a minimal Chromium based browser. The patches are split up based on features, so it's easy to patch only a subset of them.\n\nTable of Contents\n* [Foreword](#foreword)\n* [Download](#download)\n* [Building](#building)\n    * [Patches](#patches)\n    * [Build flags](#build-flags)\n* [Frequently-asked questions](#frequently-asked-questions)\n    * [Install extensions from Google WebStore](#install-extensions-from-google-webstore)\n    * [Use widevine](#use-widevine)\n    * [Use a proxy](#use-a-proxy)\n    * [Use firejail](#use-firejail)\n    * [Reduce memory footprint](#reduce-memory-footprint)\n* [Screenshots](#screenshots)\n* [Contributing](#contributing)\n* [Credits](#credits)\n* [License](#license)\n* [Donations](#donations)\n\n\n## Foreword\nIt is possible that some data is still transmitted (but down to a minimum) this is because Chromium is a quite large and complex codebase which changes each day.\n\n## Download\n* **Arch Linux**:\nPre-built binaries are hosted in the AUR: [inox-bin](https://aur.archlinux.org/packages/inox-bin/)\n\n* **Ubuntu, Debian, OSX, Windows**: See [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium), it offers pre-built binaries with inox-patchset and various other patches.\n\n## Building\nThese patches are tested and functional on Arch Linux x86_64, but should run on any Linux/BSD distribution.\n\n*The build process takes about 3 hours on a i5-3550 CPU @ 3.90GHz and 16GB ram. (without ccache)*\n\n* **Arch Linux**:\nIf you are running Arch Linux you can download and build the source from AUR: [inox](https://aur.archlinux.org/packages/inox/)\n\n* **Ubuntu, Debian, OSX, Windows**: See [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium), it offers build scripts to compile Chromium with inox-patchset and various other patches.\n\n* **Build manually:** If you want to build it yourself check out the Chromium [Build Instructions](https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md) or view the [PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=inox) to get an idea how chromium is built.\n\n\n### Patches\n\n##### restore-classic-ntp.patch\nRestores old NTP (New Tab Page).\nThe default NTP loads data from a web server to modify the appearance and inject a Google Search bar with a unique identifier.\n\n\n##### add-duckduckgo-search-engine.patch\nAdds DuckDuckGo as default search engine, it's still changeable in settings.\n\n\n##### disable-default-extensions.patch\nEnabled user-modification for all extensions.\nDisabled extensions:\n* Hotword (incl. Shared Module)\n* Google Now\n* Google Feedback\n* Cloud Print\n* Google Webstore\n* Network Speech synthesis\n* Google Hangout\n\n\n##### disable-autofill-download-manager.patch\nDisables HTML-Form AutoFill data transmission. I don't know exactly when this is triggered, but it synchronizes the saved Form data with Google.\n\n\n##### disable-google-url-tracker.patch\nDisables URLTracker, which checks in which country you are to provide the closest google server for search lookups.\nI know this class has a bad naming, but nevertheless it connects to Google.\n\n\n##### disable-google-ipv6-probes.patch\nDisables ipv6 probes to Google servers.\nGoogle pings its own DNS server to check if ipv6 is available. Changed this to RIPE NCC k.root-servers.net. 2001:7fd::1 (anycasted).\n\n\n##### disable-gcm-status-check.patch\nDisables Google Cloud-Messaging status probes. GCM provides an interface to send messages directly to single devices, groups of devices, or devices subscribed to topics.\n\n\n##### disable-missing-key-warning.patch\nDisables warning dialog about missing Google API key.\nThis key is usually set on compile time and unique per distribution.\nSee [ArchLinux chromium PKGBUILD](https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/chromium#n37) on how it's applied or this [HOWTO](https://www.chromium.org/developers/how-tos/api-keys) for an in-depth API key explanation.\n\nSince we don't want to use these APIs at all, the keys are not set (at least for inox package on AUR).\n\n\n##### disable-translation-lang-fetch.patch\n* Disables language fetching when settings are opened for the first time\n* Disables TranslateRankerQuery and TranslateRankerEnforcement (connects to `chromium-i18n.appspot.com`)\n\n##### disable-update-pings.patch\nDisables update pings to `https://clients2.google.com/service/update2` which is used for component updates.\n\n\n##### chromium-sandbox-pie.patch\nHardening the sandbox with Position Independent Code(PIE) against ROP exploits.\nThis patch is originally from openSUSE.\n\n\n##### disable-new-avatar-menu.patch\nDisables Google's new Avatar and signin menu.\n\n\n##### disable-first-run-behaviour.patch\nModifies the first-run behaviour to prevent data leakage.\n\n\n##### disable-battery-status-service.patch\nThe W3C Battery Status API[1] has quite a laughable statement:\n\n\"The information disclosed has minimal impact on privacy or\nfingerprinting, and therefore is exposed without permission grants\".\n\nAlong comes a paper \"The leaking battery, A privacy analysis of the\nHTML5 Battery Status API.\"\n\nClean up after the W3C and disable the battery status updater which\ncould be used to identity users[2].\n\n* [1] http://www.w3.org/TR/battery-status/\n* [2] https://eprint.iacr.org/2015/616.pdf\n\nReferences: https://github.com/iridium-browser/iridium-browser/issues/40\n\n\n##### modify-default-prefs.patch\n\nModifies following default settings (can be changed anytime):\n\nUser setting | new value\n--- | ---\nDefaultCookiesSettings     | `CONTENT_SETTING_DEFAULT`\nEnableHyperLinkAuditing    | `false`\nCloudPrintSubmitEnabled    | `false`\nNetworkPredictionEnabled   | `false`\nBackgroundModeEnabled      | `false`\nBlockThirdPartyCookies     | `true`\nAlternateErrorPagesEnabled | `false`\nSearchSuggestEnabled       | `false`\nAutofillEnabled            | `false`\nSend feedback to Google if preferences are reset | `false`\nBuiltInDnsClientEnabled    | `false`\nSignInPromoUserSkipped     | `true`\nSignInPromoShowOnFirstRunAllowed | `false`\nShowAppsShortcutInBookmarkBar | `false`\nShowBookmarkBar | `true`\nPromptForDownload | `true`\nSafeBrowsingEnabled | `false`\nEnableTranslate | `false`\nLocalDiscoveryNotificationsEnabled | `false`\n\n\n##### branding.patch\n`s/Chromium/Inox/g`\n\n\n### Build flags\nThe PKGBUILD uses chromium [GN build system](https://chromium.googlesource.com/chromium/src/tools/gn/).\nThe following config flags are applied:\n\nFeature | Build config\n--- | ---\nDisable google now |                `enable_google_now=false`\nDisable WebRTC |                    `enable_webrtc=false`\nDisable Remote service |          `enable_remoting=false`\nDisable safe browsing |             `safe_browsing_mode=0*`\nDisable RLZ Identifier |              `enable_rlz=false`, `enable_rlz_support=false`\nDisable google hangouts |         `enable_hangout_services_extension=false`\nDisable print preview |                `enable_print_preview=false`\n\n\\* Builds only with `fix-building-without-safebrowsing.patch`.\n\n\n## Frequently-asked questions\n\n### Install extensions from Google WebStore\n\n\nSince there is no WebStore plugin, you cannot install extensions directly from the store, but there are two options to install an extension.\n\n**Keep in mind extensions are not updated automatically, so make sure you update them on a regular base.**\n\n* **Extension downloader**\n\n   The most convenient way is via the extension downloader [inoxunpack](https://github.com/gcarq/inoxunpack), it's a small python script to download and unpack extensions from Google WebStore.\n\n   Example usages:\n   ```\n   $ inoxunpack ublock-origin\n   $ inoxunpack cjpalhdlnbpafiamejdnhcphjbkeiagm\n   ```\n   Both of the commands will download but not install ublock origin. After executing you will se an instruction how to install the extension in developer mode. See inoxunpack for more details.\n\n* **Download manually**\n\n  `https://clients2.google.com/service/update2/crx?response=redirect\u0026os=linux\u0026prodversion=55.0.2883.87\u0026x=id%3D[EXTENSION_ID]%26installsource%3Dondemand%26uc`\n\n   To download a extension just replace `[EXTENSION_ID]` with the extension-id from the WebStore (For example `cjpalhdlnbpafiamejdnhcphjbkeiagm` is the extension id of uBlock Origin).\n\n   **Drag and Drop**\n\n   Open `chrome://extensions` and drop the file from the download bar into the extensions tab. **Note:** Under some circumstances this method does not work on KDE Plasma.\n\n   **Preferences File**\n\n   Alternatively you can also install the extension via a preferences file.\n\n   For example to install the extension cjpalhdlnbpafiamejdnhcphjbkeiagm create a file called: `/usr/share/inox/extensions/cjpalhdlnbpafiamejdnhcphjbkeagm.json` with following content:\n   ```json\n   {\n       \"external_crx\": \"/path/to/extension/extension_1_0_0.crx\",\n       \"external_version\": \"1.0.0\"\n   }\n   ```\n   If you restart Inox the extension should be loaded automatically. For more details go [here](https://developer.chrome.com/extensions/external_extensions#preferences).\n\n### Use widevine\nThough it might not be ideal to use DRM technologies, Inox supports widevine if you provide `libwidevinecdm.so`.\nTo activate it, create a symlink from a chromium setup.\n\n`# ln -s /usr/lib/chromium/libwidevinecdm.so /usr/lib/inox/libwidevinecdm.so`\n\n### Use a proxy\nAs mentioned in [Foreword](#foreword) it is still possible that some data is leaked to Google, so use if want to use a proxy to achieve a high level of anonymity it would be better to use TorBrowser.\n\nThe `--proxy-server` flag supports `HTTP`, `HTTPS` and `SOCKS` proxies.\nThe `--host-resolver-rules` flag forces DNS requests through the proxy (prevents DNS leakage), the `EXCLUDE` option lets Inox resolve the domain name.\n\n#### Examples\n\n###### Tor\n`inox --proxy-server=\"socks5://localhost:9050\" --host-resolver-rules=\"MAP * 0.0.0.0, EXCLUDE localhost, EXCLUDE *.local\"`\n\n###### I2P\n`inox --proxy-server=\"http://127.0.0.1:4444\" --host-resolver-rules=\"MAP * 0.0.0.0, EXCLUDE localhost, EXCLUDE *.local\"`\n\n### Use firejail\n[Firejail](https://github.com/netblue30/firejail) is a SUID program that reduces the risk of security breaches by restricting the running environment of untrusted applications using Linux namespaces and seccomp-bpf.\nIt supports Inox out of the box, you just need to run inox with firejail: `firejail inox`.\n\n### Reduce memory footprint\n#### Enabling process per site\nBy default Chrom* heavily isolates each tab regardless of it's domain. While doing this arguably improves security by some extent, downside is that as number of tabs increase, the RAM bloat due to duplication reaches absurd levels. This can end up with Chrom* using \u003e4.5GB of RAM on a machine with 8GB thus preventing other heavy programs from running at the same time. This can be fixed by making Chrom* use one process per site/domain and not per tab. This greatly reduces RAM bloat while (probably) not sacrificing much from security. Use the following command-line argument:\n`inox --process-per-site`\n\nFor more details go [here](https://www.chromium.org/developers/design-documents/process-models).\n\n## Screenshots\n![Inox Browser](http://i.imgur.com/eNiCycy.png \"Inox Browser\")\n\n[Here](http://imgur.com/a/IUfqm) you can find more screenshots.\n\n\n## Contributing\nUse the Issue Tracker for problems, suggestions, and questions, or visit the [Inox Browser thread](https://bbs.archlinux.org/viewtopic.php?id=198763) in the Arch forums.\n\nYou may also contribute by submitting pull requests.\n\n\n## Credits\n* [Chromium](https://www.chromium.org/)\n* [Iridium Browser](https://iridiumbrowser.de/)\n* [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium)\n\n\n## License\nGPLv3. See [LICENSE](LICENSE)\n\n## Donations\nDonations are welcome and keep me motivated :-)\n* ETH: `0x00bE42851D8F4dE8DEAAbF91a4D93dD4b44Dcf8E`\n* BTC: `1EsahKzwNgZF56gmZZz8NVQJ4SWdGnshv4`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgcarq%2Finox-patchset","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgcarq%2Finox-patchset","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgcarq%2Finox-patchset/lists"}