labunix's blog

labunixのラボUnix

gnome2のデスクトップアイコンを表示、非表示にするシェルスクリプト

■gnome2のデスクトップアイコンを非表示にする。

$ sudo apt-get install -y gconf-editor
$ gconf-editor

■Windowsのレジストリ操作用の「regedit.exe」のように
 「/apps/nautilus/desktop」と辿り、以下の3つのチェックを外すだけ。

 home_icon_visible
 computer_icon_visible
 trash_icon_visible

■これはデフォルトで以下のように指定されている。
 「network_icon_visible」は「false」なので、
 逆に表示させたい場合は「gconf-editor」でチェックを入れる。

$ grep -A 4 "_icon_visible</key>" /usr/share/gconf/schemas/apps_nautilus_preferences.schemas
      <key>/schemas/apps/nautilus/desktop/home_icon_visible</key>
      <applyto>/apps/nautilus/desktop/home_icon_visible</applyto>
      <owner>nautilus</owner>
      <type>bool</type>
      <default>true</default>
--
      <key>/schemas/apps/nautilus/desktop/computer_icon_visible</key>
      <applyto>/apps/nautilus/desktop/computer_icon_visible</applyto>
      <owner>nautilus</owner>
      <type>bool</type>
      <default>true</default>
--
      <key>/schemas/apps/nautilus/desktop/trash_icon_visible</key>
      <applyto>/apps/nautilus/desktop/trash_icon_visible</applyto>
      <owner>nautilus</owner>
      <type>bool</type>
      <default>true</default>
--
      <key>/schemas/apps/nautilus/desktop/network_icon_visible</key>
      <applyto>/apps/nautilus/desktop/network_icon_visible</applyto>
      <owner>nautilus</owner>
      <type>bool</type>
      <default>false</default>

■辿る順序が「<key>」の「/schemas/」配下なので、
 コマンドプロンプトの「reg query」コマンドに相当する方法は以下。

$ gconftool-2 --all-entries /apps/nautilus/desktop
 home_icon_name = (何もセットされていません)
 computer_icon_visible = false
 home_icon_visible = false
 text_ellipsis_limit = 3
 volumes_visible = true
 network_icon_name = (何もセットされていません)
 trash_icon_visible = false
 trash_icon_name = (何もセットされていません)
 computer_icon_name = (何もセットされていません)
 network_icon_visible = false

■どちらも一度、ログアウト、ログインすれば反映される。

$ gconftool-2 --set /apps/nautilus/desktop/computer_icon_visible --type bool true
...ログアウト/ログイン...
$ gconftool-2 --set /apps/nautilus/desktop/computer_icon_visible --type bool false
...ログアウト/ログイン...

■遅いけど、再帰問い合わせ風の全てのキーの確認。
 for文の前に「grep desktop」等をはさめば、割と待たずに済む。

$ find /usr/share/gconf/schemas -type f -exec grep '<key>' {} \; | \
  sed s%"  *\|\t\|<key>/schemas\|/[A-z0-9_-]*</key>"%%g | \
  sort -u | \
  for list in `xargs`;do echo "$list";gconftool-2 --all-entries "$list";done

■というわけで、実行すると「falseならtrue」に、「trueならfalse」にするスクリプトを書いた。

 表示させたくなったら、実行してリログイン、
 非表示にしたくなったら、実行してリログインするだけでよい。

 dpkgの後ろに「apt-get」で自動インストールしてもよいのだけど、
 ユーザ権限でも使えるようにしたので、インストールは自身で行って欲しい。

$ sudo apt-get install -y gconf2
$ dpkg -L gconf2 | grep gconftool-2
/usr/bin/gconftool-2
/usr/share/man/man1/gconftool-2.1.gz


$ w3m -dump https://raw.github.com/labunix/gnome2/master/icon_showhide.sh
#!/bin/bash

# gconftool-2 version bigger than 2.28
CHECK=`gconftool-2 -v | awk '($1>2.28){print}' | wc -l`

if [ "$CHECK" -le "0" ];then
  echo "ERROR: Check Your \"gconftool-2\"" >&2
  dpkg -l gconf2
  exit 1
fi

FLAG=false

REGDIR=/apps/nautilus/desktop

if [ "$1" == "-d" ];then
  echo "[before]"
  gconftool-2 --all-entries /apps/nautilus/desktop
fi

for key in trash_icon_visible home_icon_visible computer_icon_visible;do
  if [ "$FLAG" == "`gconftool-2 --get ${REGDIR}/${key}`" ];then
    gconftool-2 --set ${REGDIR}/${key} --type bool true
  else
    gconftool-2 --set ${REGDIR}/${key} --type bool false
  fi
done

if [ "$1" == "-d" ];then
  echo "[after]"
  gconftool-2 --all-entries /apps/nautilus/desktop
fi

echo `seq 1 30` | sed s/"[0-9]*"/"#"/g | tr -d ' '
echo -e "\nPlease,relogin,gnome!\n"
echo `seq 1 30` | sed s/"[0-9]*"/"#"/g | tr -d ' '
unset REGDIR FLAG key CHECK
exit 0


■「-d」をつけて実行すると以下のようになる。

$ ./icon_showhide.sh -d
[before]
 home_icon_name = (何もセットされていません)
 computer_icon_visible = true
 home_icon_visible = true
 text_ellipsis_limit = 3
 volumes_visible = true
 network_icon_name = (何もセットされていません)
 trash_icon_visible = true
 trash_icon_name = (何もセットされていません)
 computer_icon_name = (何もセットされていません)
 network_icon_visible = false
[after]
 home_icon_name = (何もセットされていません)
 computer_icon_visible = false
 home_icon_visible = false
 text_ellipsis_limit = 3
 volumes_visible = true
 network_icon_name = (何もセットされていません)
 trash_icon_visible = false
 trash_icon_name = (何もセットされていません)
 computer_icon_name = (何もセットされていません)
 network_icon_visible = false
##############################

Please,relogin,gnome!

##############################

■「-d」をつけないと単に変更のみ行う。

$ ./icon_showhide.sh
##############################

Please,relogin,gnome!

##############################