web-dev-qa-db-ja.com

ホームフォルダーの動的クイックリストを作成するにはどうすればよいですか?

すべてのブックマークをクイックリストとして追加するホームフォルダーの動的クイックリストを作成するにはどうすればよいですか(libunity経由で可能だと聞きました)?

6
Lincity

以下は、すべてのブックマークでホームクイックリストを更新する小さなシェルスクリプトです。手動操作はありません。ブックマークファイルを読み取り、そこからメニュー項目を作成します。また、「ルートファイルマネージャー」メニューエントリも追加されます。

Screenshot of the quicklist in action

  1. 以下にリストされたスクリプトを空のファイルにコピーして、スクリプトフォルダーに入れます(それは~/bin/および選択したスクリプト名はunityhome.bash)。
  2. スクリプトを1回実行して、エントリを追加します。

    bash ~/bin/unityhome.bash
    
  3. 必要に応じて、時々cronを使用してスクリプトを実行することもできます。 cronに追加するには、次のコマンドをシェルに入力します。

    crontab -e An editor will open. There add a line like:
    
    @reboot /bin/bash/ $HOME/bin/unityhome.bash > /dev/null 2>&1
    

    この手順を行わない場合、クイックリストを更新する場合は、nautilusブックマークを変更するたびにスクリプトを手動で実行する必要があります。

  4. 変更は、次のログイン時またはAlt + F2を押した後にのみ有効になります

    unity --replace So do that. *Note: Don't run `unity --replace`
    

    ターミナルで。その端末を閉じると、それとの団結が失われます。*

  5. gnome-terminalの同様のスクリプト を見て、sshブックマークを解析します(~/.ssh/config)。

スクリプト:-------スクリプトは次のとおりです。

#!/bin/bash
# tabsize: 4, encoding: utf8
#
# © 2011 [email protected]. Use permitted under MIT license:
#     http://www.opensource.org/licenses/mit-license.php
# 
# CONTRIBUTORS: Chris Druif <[email protected]>
#               Scott Severance <http://www.scottseverance.us/>
# 
# This script updates the unity quicklist menu for nautilus to

#ユーザーのブックマークを含む。更新は、Unityが再起動された後に有効になります(次のログイン時、または 'unity --replace'を呼び出して)。

# location of template and unity bar launchers
nautempl="/usr/share/applications/nautilus-home.desktop"
target="$HOME/.local/share/applications/nautilus-home.desktop"
bookmarks="$HOME/.gtk-bookmarks"

# backup if file already exists
if [ -e "$target" ]; then
    echo "Creating backup of: $target."
    mv -n "$target" "$target.bak"
fi

# copy template
cp "$nautempl" "$target"

sed -i "s/\(OnlyShowIn=GNOME;\)/\1Unity;/" "$target"

echo "X-Ayatana-Desktop-Shortcuts=" >> $target

bmcount=0
while read bmline; do
    bmcount=$(($bmcount+1))     # number of current bookmark
    bmname=${bmline#*\ }        # name of the bookmark
    bmpath=${bmline%%\ *}       # path the bookmark leads to
    # deal with bookmarks that have no name
    if [ "$bmname" = "$bmpath" ]; then
        bmname=${bmpath##*/}
    fi
    # fix spaces in names and paths
    bmname="$(echo "$bmname" | sed 's/%20/ /g')"
    bmpath="$(echo "$bmpath" | sed 's/%20/ /g')"
    # extend shortcut list with current bookmark
    sed -i

"s /(X-Ayatana-Desktop-Shortcuts =。*)/\1Scg $ {bmcount}; /" "$ target"#ブックマーク情報を書き込むcat->> "$ target" <

[Scg$bmcount Shortcut Group]
Name=$bmname
Exec=nautilus "$bmpath"
OnlyShowIn=Unity
EOF
done < "$bookmarks"

# Add a root file manager entry
sed -i "s/\(X-Ayatana-Desktop-Shortcuts=.*\)/\1RootFM;/" "$target"
cat - >> "$target" <<EOF

[RootFM Shortcut Group]
Name=Root
Exec=gksudo nautilus
OnlyShowIn=Unity
EOF

exit 0

元の回答 - con-f-use

1
Lincity

参考までにAPIは buntu Wiki で説明されています

ダイナミッククイックリストエントリ
 
クイックリストを作成して、ランチャーに追加することもできます。クイックリスト
を作成するには、まずルートノードをコンテナとして作成し、次に子ノードを追加します
。この最終結果はランチャーにパックされ、
バスでUnityに出荷されます。クイックリストの更新も公開されています。
 API全体を説明するのではなく、クイックリスト(および
 progressおよびcount)の使用例を、valaバインディングを使用して以下に示します。
 
 
実際の作業を行うには、プログラムのメインループを呼び出す必要があることに注意することが重要です。 Libunityでは、
 asyncを実行できるため、メインループを使用する必要があります。 

この例はまだ見ていません。もしそうなら、ここに1時間以内に追加します;)

ダイナミッククイックリストは、統一前は機能しませんでした- バグ のため、3.8.8-0ubuntu1。

2
Rinzwind