<div dir="ltr">Hi all,<div><br></div><div>I went ahead and wrote an implementation of my proposal, which you can now find here</div><div>- <a href="https://github.com/cosimoc/xdg-user-dirs/tree/wip/user-directories">https://github.com/cosimoc/xdg-user-dirs/tree/wip/user-directories</a></div>
<div>- <a href="https://github.com/cosimoc/xdg-user-dirs-gtk/tree/wip/user-directories">https://github.com/cosimoc/xdg-user-dirs-gtk/tree/wip/user-directories</a> (updates to the GTK version of the tool)</div><div>- <a href="https://github.com/cosimoc/glib/tree/wip/user-directories">https://github.com/cosimoc/glib/tree/wip/user-directories</a> (adds new GLib API)</div>
<div><br></div><div>One caveat is in order to make this possible, I essentially rewrote xdg-user-dirs to use GLib APIs - I didn't want to parse keyfiles manually. So you'll need GLib to build the tool... I don't think that'll be a big deal, since GLib is a build dependency for a lot of things these days.</div>
<div><br></div><div>Comments welcome!</div><div>Cosimo</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jan 15, 2014 at 11:00 AM, Cosimo Cecchi <span dir="ltr"><<a href="mailto:cosimo.cecchi@gmail.com" target="_blank">cosimo.cecchi@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi all,<div><br></div><div>I'd like to propose an extension to the current xdg-user-dirs mechanism to make it possible to create application-specific subdirectories in user dirs, which are subject to the same translation rules applied to their parents.</div>

<div><br></div><div>Use cases:</div><div>* An application (e.g. a sound recorder) wants to save a file in a subdirectory of $XDG_MUSIC_DIR. Another sound recorder wants to save files in the same subdirectory, and doesn't want to worry about the translations for each language to be in sync.</div>

<div><br></div><div>* A photo booth application wants to save pictures to a webcam snaps subdirectory of $XDG_PICTURES_DIR. An "user properties" settings panel in the desktop environment allows to pick an avatar picture through a file chooser, which should default to the webcam snaps place.</div>

<div><br></div><div>There's a bunch of similar cases, which you can find in this bug [1] where this message originates from.</div><div><br></div><div>Implementation:</div><div>We need a way for applications to describe and own those subdirectories inside XDG user dirs. I think this could be as simple as the application dropping a desktop file on installation, in a well-known directory - for example $XDG_DATA_DIRS/xdg-user-dirs. Such a desktop file would have a structure like</div>

<div><br></div><div>[Directory]</div><div>Name=Webcam Snapshots</div><div>Name[it]=Scatti dalla Webcam</div><div>Name[es]=...</div><div>Name[fr]=...</div><div>Parent=$XDG_PICTURES_DIR</div><div>Icon=icon-name-from-theme (optional)</div>

<div><br></div><div>An utility like xdg-user-dirs-update would then take care of renaming such directories early at login, together with their parents. Toolkit support would be achieved with a function that returns the full path of a subdirectory given the basename of its desktop file descriptor.</div>

<div><br></div><div>In the example above, if the file is called "gnome-webcam.desktop", a GNOME application would call g_get_user_special_dir_for_id ("gnome-webcam.desktop"); which would return "$HOME/Pictures/Webcam Snapshots" in English and "$HOME/Immagini/Scatti dalla Webcam" in Italian.</div>

<div><br></div><div>[1] <a href="https://bugzilla.gnome.org/show_bug.cgi?id=712245" target="_blank">https://bugzilla.gnome.org/show_bug.cgi?id=712245</a></div><div><br></div><div>Feedback welcome!</div><span class="HOEnZb"><font color="#888888"><div>
Cosimo</div></font></span></div>
</blockquote></div><br></div>