Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

How can i create a dynamic quicklist for the home folder which adds all the bookmarks as quicklists (i heard it is possible via libunity) ?

share|improve this question
2  
You might be interested in Places Indicator until a solution with quicklists is found. –  Cas May 13 '11 at 18:03
    
@Cas really nice! –  Alaukik May 13 '11 at 18:06

2 Answers 2

FYI The API is explained on the 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. 

I have not seen an example of this yet. If I do I will add it here within an hour ;)

Dynamic quicklists did NOT work prior to unity - 3.8.8-0ubuntu1 due to a bug.

share|improve this answer
    
1 hour later... I have not found any example of this. Sorry :-( –  Rinzwind May 7 '11 at 9:10
2  
An example for you: Opera dynamic quicklist –  Cas May 13 '11 at 17:58
up vote 1 down vote accepted

Here is a small shell script that updates your Home-Quicklist with all your bookmarks. No manual manipulation. It reads your bookmark file and creates the menu items from it. It also adds the "Root Filemanager" menu entry.

Screenshot of the quicklist in action

  1. Copy the script listed below into an empty file and put it in your scripts-folder (we will assume that is ~/bin/ and the script name you choose is unityhome.bash).
  2. Run the script once to add the entries:

    bash ~/bin/unityhome.bash
    
  3. Optionally you may have cron run the script for you every once in a while. To add it to cron, type the follwing command into a shell:

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

    If you don't do this step, you'll have to run the script by hand every time you change your nautilus bookmarks if you want the quicklist updated.

  4. Changes only take effect on your next login or after you Alt+F2

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

    in a terminal. If you close that terminal, it will kill unity with it.*

  5. Enjoy and have a look at the similar script for gnome-terminal that parses your ssh bookmarks (in ~/.ssh/config).

Script: ------- Here is the script:

#!/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

contain the user # bookmarks. The updates will have efect after unity is restarted (either on # the next login or by invoking '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" # write bookmark information 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

Original Answer - Written by con-f-use

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.