Как я могу синхронизировать мой корневой 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 только на разнице (уменьшает 174 set команд до дюжины или меньше. В следующий раз он запустит, возможно, только одно или два изменения, но чаще всего ни одного.
  • Вызывает 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, а когда вы работаете как вы, вы используете свой личный профиль. У каждого есть свои права доступа и владельца, привязанные к этой конкретной учетной записи. Они не предназначены для того же.

Другие вопросы по тегам