Браузер хрома позволяет иметь многочисленных пользователей с отдельными закладками, расширение и т.д. в хроме.
Действительно ли возможно запустить хром с параметрами, которые указывают который пользователь быть загруженными.
По умолчанию последний пользователь загружается.
chromium-browser
профили пользователей хранятся в определенных подпапках ~/.config/chromium
. Эти подпапки имеют имена, не очевидно, соответствуя именам пользователя.
Скажем, у меня есть три профилей пользователей: "Josephine", "Karel", "Willem":
Они "представлены" тремя папками профиля внутри ~/.config/chromium
: Default
, Profile 1
и Profile 2
.
Видеть, которому соответствует папка, какой профиль пользователя, необходимо было бы посмотреть в папке и видеть, происходит ли имя пользователя (или "Karel", "Willem" или "Josephine") в файле Preferences
.
Команда для открытия chromium
с определенным профилем пользователя:
chromium-browser --profile-directory="<name_of_subfolder>"
Где <name_of_subfolder>
название папки, представляющей пользователя, как объяснено в профилях пользователей Хрома. Открываться chromium with
Профиль "Karel", например, я должен буду выполнить команду:
Exec=chromium-browser --profile-directory="Default"
Существует несколько возможностей создать опцию открыться определенным профилем пользователя.
Отредактируйте chromium-browser.desktop
файл для открытия определенным пользователем по умолчанию:
Скопируйте chromium-browser.desktop
файл от /usr/share/applications
кому: ~/.local/share/applications
:
cp /usr/share/applications/chromium-browser.desktop ~/.local/share/applications/chromium-browser.desktop
Откройте локальную копию в ~/.local/share/applications
(перетащите его по открытому gedit
окно или выполненный команда gedit ~/.local/share/applications/chromium-browser.desktop
), ищите первую строку, начиная с Exec=
. Замените строку (в случае "Karel"):
Exec=chromium-browser --profile-directory="Default" %u
Сохраните файл и зарегистрируйтесь/в для наблюдения изменений
С другой стороны, можно добавить пользователя как ярлык на средство запуска:
Ищите строку:
Actions=NewWindow;Incognito;TempProfile;
Измените его в:
Actions=NewWindow;Incognito;TempProfile;Karel;
Добавьте к самому концу файла раздел:
[Desktop Action Karel]
Name=Karel
Exec=chromium-browser --profile-directory="Default"
OnlyShowIn=Unity;
Повторите процедуру для каждого пользователя, которого требуется добавить как ярлык (не забывайте регистрироваться/в впоследствии).
Опция в виде сценария:
Оборотная сторона двух опций выше - то, что они "фиксируются". Необходимо было бы отредактировать Ваш .desktop
зарегистрируйте каждый раз, когда пользователь добавлен или удален.
Другая идея состоит в том, чтобы поэтому заставить сценарий искать Ваши профили, извлечь соответствующие имена пользователей в Предпочтительных файлах и сделать Zenity
покажите список опций для выбора из:
Если Вы называете окно от ключевого ярлыка, все, к чему Вы имеете к, выбирают пользователя из списка (или просто введите число), и нажмите Return.
Как использовать
Скопируйте сценарий ниже в пустой файл, сохраните его как chromium_profiles.py
Выполните его от комбинации сочетания клавиш: Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:
python3 /path/to/chromium_profiles.py
Сценарий
#!/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