web-dev-qa-db-fra.com

Comment lancer le chrome avec un utilisateur spécifique

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é.

3
Woltan

Profils d'utilisateur de chrome

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":

<image1 >

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.

Ouvrir le chrome avec un profil utilisateur spécifique

La commande pour ouvrir chromium avec un profil utilisateur spécifique est la suivante:

chromium-browser --profile-directory="<name_of_subfolder>"

<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"

Les options

Il existe plusieurs possibilités pour créer l’option d’ouvrir avec un profil utilisateur spécifique.

  1. É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

  2. Vous pouvez également ajouter l’utilisateur sous forme de raccourci à votre lanceur:

    <image2>

    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).

  3. 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:

    < image3>

    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
    
7
Jacob Vlijm