Bash-скриптsgedit

Bash-скриптsgedit

Когда я открываю файл с root gedit, я хочу иметь те же настройки, что и мой обычный gedit. Так что тема, настройки и дополнения.

Могу ли я настроить символические ссылки в нужном месте, чтобы добиться этого?

решение1

Я думаю, что это совершенно невозможно, поскольку gedit управляет своими настройками через gconf, и для их синхронизации потребуется запустить gnome-settings-deamon от имени root.

решение2

Обычно вы не синхронизируете обычные настройки gedit с настройками пользователя root gedit.

У root свои настройки, а у пользователя компьютера свои настройки. Это не одно и то же. Так задумано.

Когда вы работаете как root, вы используете профиль пользователя root, а когда вы работаете как вы, вы используете свой личный профиль. У каждого есть свои разрешения и права собственности, привязанные к этой конкретной учетной записи. Они не должны быть одинаковыми.

решение3

Наследуйте настройки sudoвашей учетной записиgedit

sgedit 80 столбцов правый слайдер.gif

В этом примере пользовательские настройки для имени шрифта, размера шрифта, позиций табуляции, преобразования табуляции в пробелы, выделения 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.

Связанный контент