Bash-Skriptsgedit

Bash-Skriptsgedit

Wenn ich eine Datei mit Root-Gedit öffne, möchte ich dasselbe Setup wie bei meinem normalen Gedit haben. Also Design, Einstellungen und Add-Ons.

Kann ich an der richtigen Stelle einige symbolische Links einrichten, um dies zu erreichen?

Antwort1

Ich denke, dass dies völlig unmöglich ist, da gedit seine Einstellungen über gconf verwaltet und zum Synchronisieren dieser ein für Root laufender Gnome-Settings-Daemon erforderlich wäre.

Antwort2

Normalerweise würden Sie die normalen Gedit-Einstellungen nicht mit den Root-Gedit-Benutzereinstellungen synchronisieren.

Root hat seine eigenen Einstellungen und der Computerbenutzer hat seine eigenen Einstellungen. Die beiden sind nicht gleich. Das ist so beabsichtigt.

Wenn Sie als Root agieren, verwenden Sie das Profil des Root-Benutzers, und wenn Sie als Sie selbst agieren, verwenden Sie Ihr persönliches Profil. Jedes hat seine eigenen Berechtigungen und Eigentümerschaft, die an das jeweilige Konto gebunden sind. Sie sind nicht als identisch gedacht.

Antwort3

sudoIhre geditBenutzerkontoeinstellungen übernehmen

sgedit 80 Spalte rechter Schieberegler.gif

In diesem Beispiel wurden die Benutzereinstellungen für Schriftname, Schriftgröße, Tabstopps, Tabulatoren in Leerzeichen umwandeln, 80-Spalten-Hervorhebung und Miniaturbild-Schieberegler auf der rechten Seite von übernommen sudo.

Mit der regulären Version sudo -H geditkönnen Sie diese Konfigurationseinstellungen weder vornehmen noch speichern. Mit dem folgenden Skript sgeditwerden die Einstellungen von Ihrem Benutzerkonto übernommen.

Dieses Skript behebt auch die Probleme „ gksuist fehlerhaft und nicht standardmäßig installiert“ und „ pkexecist schwer einzurichten“.


Hintergrund

Das gleiche Problem quält mich schon seit Jahren. Das Projekt dieses Wochenendes war, das sgeditSkript zu schreiben:

  • Anrufen mitsgedit filename1 filename2...
  • Ruft die Gedit-Einstellungen des Benutzers für Tabstopps, Schriftarten, Zeilenumbruch usw. ab.
  • Erhöht die Rechte, um sudo -Hden Dateibesitz beizubehalten und gleichzeitig Root-Rechte zu erhalten.
  • Fordert ein Passwort an, wenn beim letzten Sudo eine Zeitüberschreitung aufgetreten ist.
  • Ruft die Gedit-Einstellungen von sudo ab
  • Vergleicht die Unterschiede zwischen den Benutzer- und Sudo-Gedit-Einstellungen
  • Läuft gsettings setnur auf den Unterschieden (reduziert 174 setBefehle auf ein Dutzend oder weniger). Beim nächsten Ausführen werden vielleicht nur eine oder zwei Änderungen vorgenommen, aber oft gar keine.
  • Ruft gedit als Hintergrundaufgabe auf, sodass die Terminal-Eingabeaufforderung sofort wieder angezeigt wird.

Bash-Skriptsgedit

#!/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

Hauswirtschaft

Kopieren Sie das obige Bash-Skript in eine neue Datei mit dem Namen sgedit. Ich empfehle, es in Ihrem $HOME/binVerzeichnis zu platzieren, also /home/YOURNAME/bin. Möglicherweise müssen Sie das Verzeichnis zuerst erstellen.

Markieren Sie die Datei als ausführbar mit:

chmod a+x ~/sgedit

Hinweis ~ist eine Abkürzung für /home/YOURNAME.

verwandte Informationen