Como iniciar o cromo com um usuário específico

3

O navegador chromium permite ter vários usuários com marcadores individuais, extensão etc. no cromo.

É possível iniciar o cromo com parâmetros que especificam qual usuário será carregado.

Por padrão, o último usuário é carregado.

    
por Woltan 31.01.2015 / 13:53

1 resposta

7

Perfis de usuário do Chromium

Os perfis de usuário chromium-browser são armazenados em subpastas específicas de ~/.config/chromium . Essas subpastas têm nomes, obviamente não correspondentes aos nomes dos usuários.
Digamos que eu tenha três perfis de usuário: "Josephine", "Karel", "Willem":

Elessão"representados" por três pastas de perfil dentro de ~/.config/chromium : Default , Profile 1 e Profile 2 .
Para ver qual pasta é correspondente a qual perfil de usuário, você teria que olhar dentro da pasta e ver se o nome de usuário (ou "Karel", "Willem" ou "Josephine") ocorre em o arquivo Preferences .

Para abrir o cromo com um perfil de usuário específico

O comando para abrir chromium com um perfil de usuário específico é:

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

Em que <name_of_subfolder> é o nome da pasta que representa o usuário, conforme explicado em Perfis de usuário do Chromium . Para abrir o perfil chromium with "Karel's", por exemplo, terei que executar o comando:

Exec=chromium-browser --profile-directory="Default"

Opções

Existem várias possibilidades para criar a opção de abrir com um perfil de usuário específico.

  1. Edite o arquivo chromium-browser.desktop para abrir com um usuário específico por padrão:

    • Copie o arquivo chromium-browser.desktop de /usr/share/applications para ~/.local/share/applications :

      cp /usr/share/applications/chromium-browser.desktop ~/.local/share/applications/chromium-browser.desktop
      
    • Abra a cópia local em ~/.local/share/applications (arraste-a sobre a janela gedit aberta ou execute o comando gedit ~/.local/share/applications/chromium-browser.desktop ), procure pela linha primeiro , começando com Exec= . Substitua a linha por (no caso de "Karel"):

      Exec=chromium-browser --profile-directory="Default" %u
      

    Salve o arquivo e efetue logout / in para ver as alterações

  2. Como alternativa, você pode adicionar o usuário como um atalho ao seu lançador:

    Procurealinha:

    Actions=NewWindow;Incognito;TempProfile;

    Altere-opara:

    Actions=NewWindow;Incognito;TempProfile;Karel;

    Adicioneaofinaldoarquivoumaseção:

    [DesktopActionKarel]Name=KarelExec=chromium-browser--profile-directory="Default"
    OnlyShowIn=Unity;
    

    Repita o procedimento para cada usuário que você gostaria de adicionar como um atalho (não se esqueça de sair / entrar depois).

  3. Opção com script:

    A desvantagem das duas opções acima é que elas são "fixas". Você teria que editar seu arquivo .desktop cada vez que um usuário fosse adicionado ou removido.
    Outra ideia é, portanto, fazer um script procurar seus perfis, extrair os nomes de usuário correspondentes nos arquivos de Preferências e tornar Zenity uma lista de opções para escolher:

    Sevocêchamarajanelaapartirdeumatalho-chave,bastaselecionarousuárionalista(ousimplesmentedigitaronúmero)epressionarRetornar.

    Comousar

    Copieoscriptabaixoemumarquivovazio,salve-ocomochromium_profiles.py

    Executeapartirdeumacombinaçãodeteclasdeatalho:Escolha:Configuraçõesdosistema>"Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:

    python3 /path/to/chromium_profiles.py
    

    O 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
    
por Jacob Vlijm 01.02.2015 / 00:39