bash腳本sgedit

bash腳本sgedit

當我使用 root gedit 開啟檔案時,我希望有與普通 gedit 相同的設定。所以主題、偏好和外掛。

我可以在正確的位置設定一些符號連結來實現此目的嗎?

答案1

我認為這是不可能的,因為 gedit 透過 gconf 管理其設置,並且要同步這些設置,需要以 root 身分運行 gnome-settings-deamon。

答案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 超時,則請求密碼。
  • 取得 sudo 的 gedit 設置
  • 比較使用者和 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 腳本複製到名為 .bashrc 的新檔案中sgedit。我建議將其放在您的$HOME/bin目錄中,即/home/YOURNAME/bin.您可能必須先建立目錄。

使用以下命令將檔案標記為可執行檔:

chmod a+x ~/sgedit

Note~是 的快捷方式/home/YOURNAME

相關內容