Le navigateur chrome permet d’avoir plusieurs utilisateurs avec des signets individuels, une extension, etc. dans le chrome.
Est-il possible de lancer chrome avec des paramètres qui spécifient quel utilisateur doit être chargé?.
Par défaut, le dernier utilisateur est chargé.
Les profils utilisateur chromium-browser
sont stockés dans des sous-dossiers spécifiques de ~/.config/chromium
. Ces sous-dossiers ont des noms, qui ne correspondent évidemment pas aux noms des utilisateurs.
Disons que j'ai trois profils d'utilisateurs: "Josephine", "Karel", "Willem":
Ils sont "représentés" par trois dossiers de profil dans ~/.config/chromium
: Default
, Profile 1
et Profile 2
.
Pour voir quel dossier correspond à quel profil d'utilisateur, vous devez regarder à l'intérieur du dossier et voir si le nom d'utilisateur ("Karel", "Willem" ou " Joséphine ") apparaît dans le fichier Preferences
.
La commande pour ouvrir chromium
avec un profil utilisateur spécifique est la suivante:
chromium-browser --profile-directory="<name_of_subfolder>"
Où <name_of_subfolder>
est le nom du dossier représentant l'utilisateur, comme expliqué à la section Profils utilisateur Chromium. Pour ouvrir le profil de chromium with
"Karel" par exemple, je devrai exécuter la commande suivante:
Exec=chromium-browser --profile-directory="Default"
Il existe plusieurs possibilités pour créer l’option d’ouvrir avec un profil utilisateur spécifique.
Éditez le fichier chromium-browser.desktop
pour l’ouvrir par défaut avec un utilisateur spécifique:
Copiez le fichier chromium-browser.desktop
de /usr/share/applications
vers ~/.local/share/applications
:
cp /usr/share/applications/chromium-browser.desktop ~/.local/share/applications/chromium-browser.desktop
Ouvrez la copie locale dans ~/.local/share/applications
(faites-la glisser sur une fenêtre ouverte gedit
ou exécutez la commande gedit ~/.local/share/applications/chromium-browser.desktop
), recherchez la ligne première, commençant par Exec=
. Remplacer la ligne par (dans le cas de "Karel"):
Exec=chromium-browser --profile-directory="Default" %u
Enregistrez le fichier et déconnectez-vous/connectez-vous pour voir les modifications
Vous pouvez également ajouter l’utilisateur sous forme de raccourci à votre lanceur:
Cherchez la ligne:
Actions=NewWindow;Incognito;TempProfile;
Changez-le en:
Actions=NewWindow;Incognito;TempProfile;Karel;
Ajoutez à la fin du fichier une section:
[Desktop Action Karel]
Name=Karel
Exec=chromium-browser --profile-directory="Default"
OnlyShowIn=Unity;
Répétez la procédure pour chaque utilisateur que vous souhaitez ajouter comme raccourci (n'oubliez pas de vous connecter/déconnecter par la suite).
Option scriptée:
L'inconvénient des deux options ci-dessus est qu'elles sont "fixes". Vous devrez éditer votre fichier .desktop
à chaque fois qu'un utilisateur est ajouté ou supprimé.
Une autre idée est donc de faire rechercher par un script vos profils, d’extraire les noms d’utilisateur correspondants dans les fichiers de préférences et de faire en sorte que Zenity
affiche une liste d’options parmi laquelle choisir:
Si vous appelez la fenêtre à partir d'un raccourci clavier, il vous suffit de choisir l'utilisateur dans la liste (ou simplement de taper le numéro) et d'appuyer sur Return.
Comment utiliser
Copiez le script ci-dessous dans un fichier vide, enregistrez-le sous chromium_profiles.py.
Exécutez-le à partir d'une combinaison de touches de raccourci: Choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:
python3 /path/to/chromium_profiles.py
Le script
#!/usr/bin/env python3
import subprocess
import os
home = os.environ["HOME"]
directory = home+"/"+".config/chromium"
profiles = []
user = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
reduce = lambda s: s[0].split(": ")[1].replace(",\n", "").replace('"', "")
def read(file):
with open(file) as src:
lines = src.readlines(); r_ls = range(len(lines))
da = [i for i in r_ls if '"local_profile_id":' in lines[i]][0]
return reduce([lines[i] for i in r_ls if i > da and '"name"' in lines[i]])
for root, dirs, files in os.walk(directory):
for file in files:
if file.startswith("Preferences"):
file = root+"/"+file; pr_name = read(file); pr_id = root.split("/")[-1]
profiles.append([pr_name, pr_id])
strings = [item[0] for item in profiles]
list_items = [str(i+1)+". "+strings[i] for i in range(len(strings))]
try:
choose = 'zenity --list '+'"'+('" "').join(list_items)+\
'"'+' --column="User profiles" '+\
'--title="Chromium users" --height 250 --width 150'
choice = profiles[int(user(choose)[0])-1]
command = 'chromium-browser --profile-directory="'+choice[1]+'"'
subprocess.Popen(["/bin/bash", "-c", command])
except subprocess.CalledProcessError:
pass