如何为主文件夹创建动态快捷列表?

如何为主文件夹创建动态快捷列表?

我如何为主文件夹创建一个动态快速列表,将所有书签添加为快速列表(我听说可以通过 libunity 实现)?

答案1

仅供参考 API 的解释Ubuntu 维基

动态快捷列表条目

还可以创建快捷列表并将其附加到启动器。要创建快捷列表
必须先创建根节点作为容器,然后添加子节点
最终结果可能会被打包到启动器中,然后
通过总线传送至 Unity。快速列表的更新也已上线。
我不会描述整个 API,而是使用 quicklist 的示例(以及
下面使用 vala 绑定提供了进度和计数。

需要注意的是,必须调用主循环才能使程序
实际工作。Libunity 需要使用主循环来完成工作
异步。

我还没有见过这样的例子。如果我见过,我会在一小时内把它添加到这里;)

动态快速列表在 Unity 3.8.8-0ubuntu1 之前无法工作,原因是漏洞

答案2

这是一个小型 shell 脚本,它使用您的所有书签更新您的 Home-Quicklist。无需手动操作。它读取您的书签文件并从中创建菜单项。它还添加了“Root Filemanager”菜单项。

快捷列表运行中的屏幕截图

  1. 将下面列出的脚本复制到一个空文件中,并将其放入您的脚本文件夹中(我们假设它是,~/bin/并且您选择的脚本名称是unityhome.bash)。
  2. 运行脚本一次以添加条目:

    bash ~/bin/unityhome.bash
    
  3. 您也可以选择让 cron 每隔一段时间为您运行该脚本。要将其添加到 cron,请在 shell 中输入以下命令:

    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`
    

    在终端中。如果你关闭该终端,Unity 也会随之终止。*

  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

原始答案- 作者迷惑

相关内容