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
sudo
Ihre gedit
Benutzerkontoeinstellungen übernehmen
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 gedit
können Sie diese Konfigurationseinstellungen weder vornehmen noch speichern. Mit dem folgenden Skript sgedit
werden die Einstellungen von Ihrem Benutzerkonto übernommen.
Dieses Skript behebt auch die Probleme „ gksu
ist fehlerhaft und nicht standardmäßig installiert“ und „ pkexec
ist schwer einzurichten“.
Hintergrund
Das gleiche Problem quält mich schon seit Jahren. Das Projekt dieses Wochenendes war, das sgedit
Skript zu schreiben:
- Anrufen mit
sgedit filename1 filename2...
- Ruft die Gedit-Einstellungen des Benutzers für Tabstopps, Schriftarten, Zeilenumbruch usw. ab.
- Erhöht die Rechte, um
sudo -H
den 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 set
nur auf den Unterschieden (reduziert 174set
Befehle 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/bin
Verzeichnis 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
.