>>>>> Stef Walter <st...@gnome.org> writes:
>>>>> On 09/27/2012 04:48 PM, Ivan Shmakov wrote:

 >> $ HOME=/net/home/jrh emacs 

 >> Moreover, GNU Bash started under such a Emacs instance will also use
 >> /net/home/jrh/.bashrc (instead of /home/jrh/.bashrc), and so will
 >> GNU Wget, or Lynx, and a sheer variety of other tools.

 >> … But not the bulk of GNOME, which will insist on using
 >> /home/jrh/.whatever, perhaps leaving the user no way to choose
 >> otherwise (sans of persuading the local passwd(5) — or the site's
 >> LDAP — administrator to change his or her account.)

 > Nah, you can use XDG Base directories to get the bulk of GNOME to use
 > another directory for files, config, settings and so on. [1]

        ACK, thanks for the pointer!

 > Set $XDG_CONFIG_HOME, $XDG_DATA_HOME and $XDG_CACHE_HOME.

 > These are exposed to GLib based software as g_get_user_data_dir(),
 > g_get_user_cache_dir() and g_get_user_config_dir().  GNOME is
 > actively moving towards using those. [2]

        (Actually, [3] mentions also the XDG_RUNTIME_DIR variable,
        though it doesn't specify a particular default value, or state
        that such a default should be below user's HOME.)

        Unfortunately, given the current state of affairs, these
        variables have to be set /in addition/ to HOME, since there
        seems to be a number of applications developed prior to the
        introduction of the XDG conventions, which are still in use.
        And setting four environment variables isn't as convenient as
        setting just one.

 > FWIW, the default values for those are supposed to be derived from
 > $HOME according to the XDG Basedir spec.  So if the spec is to be
 > taken literally it seems like we should be using $HOME instead of
 > g_get_home_dir().

        Indeed.  Consider, e. g. [3]:

--cut--
    $XDG_DATA_HOME defines the base directory relative to which user
    specific data files should be stored.  If $XDG_DATA_HOME is either
    not set or empty, a default equal to $HOME/.local/share should be
    used.

    $XDG_CONFIG_HOME defines the base directory relative to which user
    specific configuration files should be stored.  If $XDG_CONFIG_HOME
    is either not set or empty, a default equal to $HOME/.config should
    be used.
--cut--

        And that is the behavior I hope the future versions of GLib will
        implement.  (Aside from the HOME directory ownership check I've
        suggested before.)

        TIA.

 > But anyway, there is a way to use environment variables to change
 > where the 'bulk of GNOME' looks for its stuff.  And where not, there
 > is active progress in fixing this issue.

        Also to note is that non-GNOME (and even “non-desktop”)
        GLib-based applications were seen in the wild.  Consider, e. g.,
        the OpenBSD version of the Netcat command-line networking
        diagnostic tool (as of the version currently in Debian stable
        [4].)  And I'm not yet sure that the developers of these
        packages will be eager to implement the support for the
        aforementioned variables.

 > [1] http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

 > [2] https://live.gnome.org/GnomeGoals/XDGConfigFolders

   [3] http://standards.freedesktop.org/basedir-spec/basedir-spec-0.8.html
   [4] http://packages.debian.org/squeeze/netcat-openbsd

-- 
FSF associate member #7257

_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-devel-list

Reply via email to