Как создать динамический быстрый список для домашней папки?

Как я могу создать динамический быстрый список для домашней папки, который добавляет все закладки в виде быстрых списков (я слышал, что это возможно с помощью libunity)?

6
задан 25 September 2011 в 20:37

2 ответа

К вашему сведению API описан в Ubuntu Wiki

Dynamic Quicklist entries

Quicklists may also be created and appended to the launcher. To create a quicklist 
a root node must first be created as a container, and then child nodes are added
to it. This final result may be packed into the launcher which is then 
shipped over the bus to Unity. Updates to the quicklist are also live.
Rather than describe the entire API, an example of using quicklist (as well as 
progress and count) is provided below using the vala bindings.

It is important to note that the main loop must be invoked for the program to 
actual work. Libunity requires the usage of the main loop as work may be done 
async. 

Я еще не видел пример этого. Если я это сделаю, я добавлю его сюда в течение часа;)

Динамические быстрые списки НЕ работали до единства - 3.8.8-0ubuntu1 из-за ошибки .

0
ответ дан 25 September 2011 в 20:37

Вот небольшой сценарий оболочки, который обновляет ваш Home-Quicklist всеми вашими закладками. Никаких ручных манипуляций. Он читает ваш файл закладок и создает пункты меню из него. Также добавлен пункт меню «Root Filemanager».

Screenshot of the quicklist in action

  1. Скопируйте приведенный ниже скрипт в пустой файл и поместите его в папку скриптов (предположим, что это ~/bin/ и выбранное вами имя скрипта). unityhome.bash).
  2. Запустите скрипт один раз, чтобы добавить записи:

    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
    

    Если вы не выполните этот шаг, вам придется запускать сценарий вручную каждый раз, когда вы меняете закладки наутилуса, если Вы хотите обновить список обновлений.

  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 con-f-use@gmx.net. Use permitted under MIT license:
#     http://www.opensource.org/licenses/mit-license.php
# 
# CONTRIBUTORS: Chris Druif <cyber.druif@gmail.com>
#               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

0
ответ дан 25 September 2011 в 20:37

Другие вопросы по тегам:

Похожие вопросы: