All Projects → dyne → tinfoil

dyne / tinfoil

Licence: GPL-3.0 license
A minimalist tool to manage multiple profiles for web browsers

Programming Languages

shell
77523 projects
javascript
184084 projects - #8 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to tinfoil

vip-git
💊 Automated "hey" · ·👋 · · of the day. Every day a unique historic event is generated based on the given day.
Stars: ✭ 4 (-80%)
Mutual labels:  profile
itgoyo
a beautiful template make your github profile look awesome ,give me a star , plz orz
Stars: ✭ 104 (+420%)
Mutual labels:  profile
nitter scraper
Scrape Twitter API without authentication using Nitter.
Stars: ✭ 31 (+55%)
Mutual labels:  profile
netease-music-box
🎧 将你最近一周的网易云音乐的听歌记录更新到 Gist
Stars: ✭ 57 (+185%)
Mutual labels:  profile
blockstack.js-old
The Blockstack JS library for identity and authentication
Stars: ✭ 20 (+0%)
Mutual labels:  profile
SudhanPlayz
About me for GitHub <3
Stars: ✭ 24 (+20%)
Mutual labels:  profile
torjail
🔒 download, verify & run torbrowser in a sandbox
Stars: ✭ 14 (-30%)
Mutual labels:  firejail
self
🦉 Cryptgraphic peer authentication.
Stars: ✭ 42 (+110%)
Mutual labels:  profile
secrets
Simple Secret Sharing Service for social and decentralised management of passwords
Stars: ✭ 30 (+50%)
Mutual labels:  dyne
proxifier-rules
Rules for proxifiers programs: Proxifier
Stars: ✭ 51 (+155%)
Mutual labels:  profile
notfilippo
✨ uwa, special ✨
Stars: ✭ 22 (+10%)
Mutual labels:  profile
awesome-tasker
Carefully curated list of awesome Tasker projects, tutorials and tricks
Stars: ✭ 78 (+290%)
Mutual labels:  profile
webextension-dmenu
Tab search, selection and beyond with a dmenu filter program
Stars: ✭ 17 (-15%)
Mutual labels:  dmenu
open-source-enthusiasts
[ PLEASE DON'T USE THIS REPO ] Hacktoberfest 2020 movement to list out all the open source enthusiasts in one place. Want to make your PR count for Hacktoberfest? Add yourself in the list.
Stars: ✭ 40 (+100%)
Mutual labels:  profile
CleanDmenu
🚀 Floating and enhanced dmenu build
Stars: ✭ 25 (+25%)
Mutual labels:  dmenu
TinderUserProfile
Tinder/Bumble like user image with user details scroll animation
Stars: ✭ 21 (+5%)
Mutual labels:  profile
test-data-generation
Test Data Generation
Stars: ✭ 35 (+75%)
Mutual labels:  profile
steam-box
🎮 Update profile README / pinned gist to contain your Steam playtime leaderboard. 在你的 profile README / pinned gist 上显示你的 steam 游玩时间排行榜。
Stars: ✭ 118 (+490%)
Mutual labels:  profile
github-pinner
📌 Pin and embed github repositories or profiles on your own website easily
Stars: ✭ 62 (+210%)
Mutual labels:  profile
Dotfiles
🍙 Personal dotfiles repository.
Stars: ✭ 148 (+640%)
Mutual labels:  dmenu

Tinfoil

Tinfoil logo featuring Liz Hurley, courtesy of Zapatopi

A minimalist tool to manage multiple profiles for web browsers aka The no-nonsense web wrapper

software by Dyne.org

How to install

Tinfoil requires the zsh shell to be installed.

To install tinfoil on your GNU+Linux system, launch make install as root from inside its directory: this will copy files to /usr/local/share/tinfoil and /etc/tinfoil. A different destination can be specified using the PREFIX variable:

 make install PREFIX=/usr

Tinfoil can make good use of some extra tools when installed, for instance firejail for process isolation and dmenu (from suckless-tools) for easier graphical interaction.

Web browsers must be installed separately. At the moment tinfoil supports the following browsers: firefox, chromium, iceweasel, icecat and palemoon.

How does it work?

Tinfoil commands can be launched from a terminal or from the Run command: dialog of your window manager. Tinfoil commands can also be bound to hotkeys: then it is recommended to bind a single key to launch the tinfoil-dmenu helper.

To launch the firefox browser for a new profile called luther, enter the command:

 tinfoil firefox luther

To start an iceweasel browser instance using a temporary anonymous profile which will be deleted when the browser window is closed:

 tinfoil iceweasel anon

Profiles are stored inside ~/.tinfoil/profiles, each one consists of a directory whose name is composed as $browser.$profile, so the example above created the luther profile for the icecat browser inside .tinfoil/profiles/icecat.luther.

What is this for, exactly?

We live in times when Russian Hackers may be hiding behind every corner: if they are armed with a microwave cannon... then tinfoil is the only thing that can save you.

Russian Hackers love Microwave Cannons

Advanced usage

Tinfoil provides a simple and powerful way to maintain browser configurations across profiles and even different browsers of the same family (right now only the mozilla and chrome families are supported). The way it works is by cascading configurations like user.js (basically the about:config settings) applying templates to all browsers of the same family, or some templates only to specific browsers, or some others just to specific profile names.

Cascading configurations

Configurations are stored both in system-wide and user-specific directories, where user specific configurations end up overriding the system-wide ones. The locations where the configurations reside are:

  • /usr/local/share/tinfoil/templates (fallback defaults)
  • /etc/tinfoil/templates (system-wide defaults)
  • ~/.tinfoil/templates (user defaults)

In each of the above directories the configuration files can be named with filenames starting with [browser|family][.profile] so they will be applied to:

  • a browser family (i.e. mozilla-prefs.js) so that all browsers of the family will inherit the configuration
  • a specific browser (i.e. icecat-prefs.js) so that all profiles used in the browser will inherit the configuration
  • a specific profile for all browsers of the same family (i.e. mozilla.luther-prefs.js) so that all profiles named luther will inherit the configuration when used in any browser of the mozilla family
  • a specific profile for a certain browser (i.e. icecat.luther-prefs.js) so that the settings will be activated only when a specific profile is used in a specific browser

For instance the default configuration for all mozilla family browsers is templates/mozilla-prefs.js and the default configuration for the all the anonymous profiles is templates/mozilla.anon-prefs.js.

Firejail process isolation

In case firejail is installed, then the tinfoil-firejail command can be used to isolate the execution environment of the browser; it is used the same way as tinfoil followed by two arguments: the name of the browser and the name of the profile.

Firejail configurations are files terminated by the .firejail extension and function pretty much the same way as the -prefs.js files: they are found in the same /templates locations and can be named and assigned to a browsery family, a specific browser and/or to profile names. For instance the default firejail configuration for all mozilla family browsers is templates/mozilla.firejail.

Check configuration

Tinfoil can be launched with the conf command preceeding the selected browser and profile arguments: it will then print out its configuration for the specific selection, showing the templates applied and their path inside declared variables that can be used by other scripts using eval on its output.

The configuration variables are rendered using the following scheme:

browser="$browser"
profile="$profile"
browsertype="$browsertype"
profilepath="~/.tinfoil/profiles/$browser.$profile"
vendorpath="~/.${vendor[$browser]}"
cachepath="~/.cache/${vendor[$browser]}"
browser_executable="/full/path/to/the/browser/executable/binary"
firejail_profiles+=(array_of_paths_to_configuration_files)
userjs_templates+=(array_of_paths_to_userjs_mozilla_configurations)

Stage of development

Tinfoil is stable and used by its author Jaromil in conjunction to the i3 window manager and dmenu, and a few other people. If one understands what it does from this geeky documentation, it may turn to be very useful.

Developers can be contacted using the issues on GitHub or over IRC on https://irc.dyne.org channel #dyne (or direct port 9999 SSL)

Contributions to Tinfoil are welcome, especially to add more supported browsers, integration with desktop workflows and even graphical interfaces.

Licensing

Tinfoil is Copyright (C) 2017-2018 by the Dyne.org Foundation

Tinfoil is designed, written and maintained by Denis Roio [email protected]

This source code is free software; you can redistribute it and/or modify it under the terms of the GNU Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This source code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Please refer to the GNU Public License for more details.

You should have received a copy of the GNU Public License along with this source code; if not, write to: Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].