sgedit
フォント、タブ、および拡張機能のユーザー設定を継承するというスクリプトを使用します。GUI環境の安定性のsudo -H gedit
代わりに使用しgksu gedit
ます。パスワードの入力を求められます。
sudo
ユーザーアカウントgedit
設定を継承している
この例では、フォント名、フォントサイズ、タブストップ、タブのスペースへの変換、80列の強調表示、右側のサムネイルスライダーバーのユーザー設定が継承されていsudo
ます。
通常でsudo -H gedit
は、これらの構成設定を作成したり保存したりすることはできません。以下のスクリプトを使用するとsgedit
、設定はユーザーアカウントから継承されます。
このスクリプトは、「gksu
不良でデフォルトではインストールされていない」および「pkexec
セットアップが難しい」問題にも対処します。
バックグラウンド
私は何年も同じ問題に悩まされてきました。今週のプロジェクトは、sgedit
スクリプトを書くことでした。
- を使用して呼び出します
sgedit filename1 filename2...
- タブストップ、フォント、改行などのユーザーのgedit設定を取得します。
sudo -H
ルート権限を取得しながら、ファイルの所有権を保持するために昇格します。
- 最後のsudoがタイムアウトした場合にパスワードを要求します。
- sudoのgedit設定を取得します
- ユーザー設定とsudo gedit設定の違いを比較します
gsettings set
差分のみで実行しset
ます(174個のコマンドを1ダース以下に減らします。次回はおそらく1つまたは2つの変更のみを実行しますが、多くの場合は何も変更しません。
- ターミナルプロンプトがすぐに再表示されるように、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 &
}
FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"
ハウスキーピング
上記のbashスクリプトをという新しいファイルにコピーしますsgedit
。$HOME/bin
ディレクトリに配置することをお勧めします/home/YOURNAME/bin
。最初にディレクトリを作成する必要がある場合があります。
次を使用して、ファイルを実行可能としてマークします。
chmod a+x ~/sgedit
注~
はのショートカットです/home/YOURNAME
。
pkexec
あなたのための作業を代わりにgksu
?