Difference between revisions of "Udiskie"

From ArchWiki
Jump to: navigation, search
m (use pkg template.)
(fix broken redirect)
 
(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>
+

Latest revision as of 10:53, 13 April 2015

Redirect to: