|
|
(19 intermediate revisions by 10 users not shown) |
Line 1: |
Line 1: |
− | [[Category:Hardware detection and troubleshooting]]
| + | #REDIRECT: [[Udisks]] |
− | {{Out of date|This article still references ConsoleKit, which has been deprecated.}}
| |
− | [http://bitbucket.org/byronclark/udiskie Udiskie] is an automatic disk mounting service using {{Pkg|udisks}}. It can be used for mounting CDs, flash drives, and other media. It is simple to use and requires no configuration.
| |
− | | |
− | ==Installation==
| |
− | You can [[pacman|install]] Udiskie by using the {{pkg|udiskie}} package that is found in the [[Official Repositories]].
| |
− | Start the Udiskie service by adding
| |
− | | |
− | udiskie &
| |
− | | |
− | to your [[xinitrc]] file, before the [[window manager]] is loaded.
| |
− | | |
− | Once Udiskie is running, all removable media will automatically be mounted under <code>/media</code> under a new directory that matches the device name.
| |
− | | |
− | ===Permissions===
| |
− | udiskie requires permission for the <code>org.freedesktop.udisks.filesystem-mount</code> action to be granted through [[PolicyKit]]. If you use a display manager that supports [[ConsoleKit]] this will be taken care of for you automatically. If you don't, you'll need to set up consolekit to work with startx/xinit or use the storage group method.
| |
− | | |
− | ====Consolekit ====
| |
− | {{Note|You may have to start udiskie after your window manager is started. You may have to use the storage group method if your WM doesn't provide this functionality.}}
| |
− | <!-- if someone has a way to start udiskie after the wm is started as a child process, (sub-shell + sleep) won't work, put it here--->
| |
− | | |
− | Start your window manager or desktop environment with ck-launch-session, for example, an exec line in ~/.xinitrc:
| |
− | exec ck-launch-session awesome
| |
− | | |
− | You may need to start udiskie within the Consolekit session -- that seems to be necessary, for example, when launching [[dwm]]:
| |
− | exec ck-launch-session bash -c "udiskie & dwm"
| |
− | | |
− | ====Storage group====
| |
− | If it doesn't already exist, create the file {{ic|/etc/polkit-1/localauthority/50-local.d/10-udiskie.pkla}} with these contents:
| |
− | [Local Users]
| |
− | Identity=unix-group:storage
| |
− | Action=org.freedesktop.udisks.*
| |
− | ResultAny=yes
| |
− | ResultInactive=yes
| |
− | ResultActive=yes
| |
− | | |
− | This example configuration allows any member of the {{ic|storage}} group to mount and unmount disks with udiskie.
| |
− | | |
− | == Unmounting ==
| |
− | Use the <code>udiskie-umount</code> command to unmount media. For example, for a device named "MY_USB_DRIVE":
| |
− | | |
− | udiskie-umount /media/MY_USB_DRIVE
| |
− | | |
− | Or, you can unmount all media with the command:
| |
− | | |
− | udiskie-umount -a
| |
− | | |
− | == Window Manager Menu Scripts ==
| |
− | | |
− | For convenience, you can add a script to the menu in some window managers to allow for easy access and control of removable media.
| |
− | | |
− | ===Openbox===
| |
− | Here's an openbox menu script that offers a slight variation on the WindowMaker example below:
| |
− | | |
− | <pre>
| |
− | #!/bin/bash
| |
− | | |
− | # An openbox menu for removable media (requires udiskie).
| |
− | #
| |
− | # This script will generate sub-menus for any device mounted
| |
− | # under /media. You can browse the device in a file manager or
| |
− | # unmount it.
| |
− | #
| |
− | # It will ignore the "cd", "dvd", and "fl" directories and the U3
| |
− | # containers found on some windows formatted drives
| |
− | #
| |
− | # By default, this script uses the rox file manager to browse the
| |
− | # media.
| |
− | | |
− | DIR=$(cd $(dirname "$0") && pwd)
| |
− | SCRIPT=$(basename "$0")
| |
− | NOTIFY="notify-send"
| |
− | FM_CMD="rox"
| |
− | | |
− | pipemenu() {
| |
− | | |
− | cd /media
| |
− | echo '<openbox_pipe_menu>'
| |
− | | |
− | for i in *
| |
− | do
| |
− | if [ "$i" != "*" ] && [[ ! "$i" =~ ^U3|cd|dvd|fl ]]; then
| |
− | echo "<item label=\"Browse $i\">"
| |
− | echo "<action name=\"Execute\">"
| |
− | echo "<execute>$FM_CMD /media/$i</execute>"
| |
− | echo "</action></item>"
| |
− | echo "<item label=\"Unmount $i\">"
| |
− | echo "<action name=\"Execute\">"
| |
− | echo "<execute>$DIR/$SCRIPT unmount /media/$i</execute>"
| |
− | echo "</action></item>"
| |
− | echo "<separator/>"
| |
− | fi
| |
− | done
| |
− | | |
− | echo "<item label=\"Eject CD/DVD\">"
| |
− | echo "<action name=\"Execute\">"
| |
− | echo "<execute>eject -T</execute>"
| |
− | echo "</action></item>"
| |
− | | |
− | echo "<item label=\"Remount all\">"
| |
− | echo "<action name=\"Execute\">"
| |
− | echo "<execute>$DIR/$SCRIPT remount</execute>"
| |
− | echo "</action></item>"
| |
− | | |
− | echo "</openbox_pipe_menu>"
| |
− | }
| |
− | | |
− | case $1 in
| |
− | unmount)
| |
− | udiskie-umount $2
| |
− | if mountpoint -q $2; then
| |
− | $NOTIFY "Failed to unmount $2"
| |
− | else
| |
− | $NOTIFY "Unmounted $2"
| |
− | fi
| |
− | ;;
| |
− | remount)
| |
− | killall udiskie
| |
− | udiskie &
| |
− | $NOTIFY "Mounting removable media..."
| |
− | ;;
| |
− | *)
| |
− | pipemenu
| |
− | ;;
| |
− | esac
| |
− | </pre>
| |
− | | |
− | ===Window Maker===
| |
− | Create a "Generated Submenu" entry in the root menu.
| |
− | | |
− | <pre>
| |
− | #!/bin/bash
| |
− | | |
− | # For a Window Maker menu for removable media.
| |
− | #
| |
− | # This script will generate sub-menus for any device mounted
| |
− | # under /media. You can browse the device in a file manager or
| |
− | # unmount it.
| |
− | #
| |
− | # It will ignore the "cd", "dvd", and "fl" directories.
| |
− | #
| |
− | # It uses "emelFM2" file manager to browse the media.
| |
− | | |
− | cd /media
| |
− | | |
− | echo \"Media\" MENU
| |
− | | |
− | for i in *
| |
− | do
| |
− | if ["$i" != "*" ] && [ "$i" != "cd" ] && [ "$i" != "dvd" ] && [ "$i" != "fl" ]
| |
− | then
| |
− | echo \"Browse $i\" EXEC \"emelfm2 -1 \'/media/$i\'\"
| |
− | fi
| |
− | done
| |
− | | |
− | for i in *
| |
− | do
| |
− | if ["$i" != "*" ] && [ "$i" != "cd" ] && [ "$i" != "dvd" ] && [ "$i" != "fl" ]
| |
− | then
| |
− | echo \"Unmount $i\" EXEC \"udiskie-umount \'/media/$i\'\"
| |
− | fi
| |
− | done
| |
− | | |
− | echo \"Eject Disc\" EXEC \"eject --traytoggle\"
| |
− | | |
− | echo \"Media\" END
| |
− | </pre>
| |