Как я могу синхронизировать мой корневой gedit с предпочтениями моего пользователя gedit?
Когда я открываю файл с корневым gedit, я хотел бы иметь ту же настройку, что и мой обычный gedit. Так что тема, настройки и дополнения.
Могу ли я установить некоторые сим-ссылки в нужном месте, чтобы добиться этого?
3 ответа
Я думаю, что это совершенно невозможно, потому что gedit управляет своими настройками через gconf, и для их синхронизации потребуется gnome-settings-deamon, работающий для root.
Есть sudo
наследовать вашу учетную запись gedit
настройки
В этом примере пользовательские настройки имени шрифта, размера шрифта, остановок табуляции, преобразования табуляции в пробелы, выделения столбца 80 и ползунка правой стороны миниатюр были унаследованы sudo
,
С регулярным sudo -H gedit
Вы не можете сделать или сохранить эти параметры конфигурации. Сценарий ниже sgedit
настройки унаследованы от вашей учетной записи пользователя.
Этот скрипт также обращается к gksu
плох и не установлен по умолчанию "а" pkexec
трудно настроить "проблемы.
Фон
Меня мучила одна и та же проблема годами. Проект этих выходных должен был написать sgedit
сценарий:
- Звоните используя
sgedit filename1 filename2...
- Получает пользовательские настройки gedit для табуляции, шрифтов, переноса строк и т. Д.
- Поднимается до
sudo -H
сохранить владение файлом при получении полномочий root. - Запрашивает пароль, если истекло время последнего sudo.
- Получает настройки gedit sudo
- Сравнивает различия между настройками пользователя и sudo gedit
- Запускается
gsettings set
только на разнице (уменьшает 174set
команд до дюжины или меньше. В следующий раз он запустит, возможно, только одно или два изменения, но чаще всего ни одного. - Вызывает gedit в качестве фоновой задачи, так что подсказка терминала появляется снова немедленно.
Bash скрипт sgedit
#!/bin/bash
# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.
# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
zenity --error --text "You cannot call this script using sudo. Aborting."
exit 99
fi
# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history | \
grep -v docinfo | \
grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings
sudoFunc () {
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
zenity --error --text "Sudo password authentication failed. Aborting."
exit 99
fi
# Get sudo's gedit preferences
gsettings list-recursively | grep -i gedit | grep -v history | \
grep -v docinfo | \
grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
chmod +x /tmp/gedit.gsettings.diff
bash -x /tmp/gedit.gsettings.diff # Display override setting to terminal
# nohup gedit $@ &>/dev/null &
nohup gedit -g 1300x840+1+1220 $@ &>/dev/null &
# Set the X geometry window size (WIDTHxHEIGHT+X+Y).
}
FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"
exit 0
домоводство
Скопируйте приведенный выше скрипт bash в новый файл с именем sgedit
, Я рекомендую разместить его в вашем $HOME/bin
каталог, т.е. /home/YOURNAME/bin
, Возможно, вам придется сначала создать каталог.
Пометьте файл как исполняемый файл, используя:
chmod a+x ~/sgedit
Заметка ~
это ярлык для /home/YOURNAME
,
Обычно вы не синхронизируете обычные настройки gedit с пользовательскими настройками root gedit.
Root имеет свои настройки, а у пользователя компьютера свои настройки. Два не одинаковы. Это по замыслу.
Когда вы работаете как root, вы используете профиль пользователя root, а когда вы работаете как вы, вы используете свой личный профиль. У каждого есть свои права доступа и владельца, привязанные к этой конкретной учетной записи. Они не предназначены для того же.