1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef BASE_NIX_XDG_UTIL_H_ 6 #define BASE_NIX_XDG_UTIL_H_ 7 #pragma once 8 9 // XDG refers to http://en.wikipedia.org/wiki/Freedesktop.org . 10 // This file contains utilities found across free desktop environments. 11 // 12 // TODO(brettw) this file should be in app/x11, but is currently used by 13 // net. We should have a net API to allow the embedder to specify the behavior 14 // that it uses XDG for, and then move this file. 15 16 #ifdef nix 17 #error asdf 18 #endif 19 20 class FilePath; 21 22 namespace base { 23 24 class Environment; 25 26 namespace nix { 27 28 // Utility function for getting XDG directories. 29 // |env_name| is the name of an environment variable that we want to use to get 30 // a directory path. |fallback_dir| is the directory relative to $HOME that we 31 // use if |env_name| cannot be found or is empty. |fallback_dir| may be NULL. 32 // Examples of |env_name| are XDG_CONFIG_HOME and XDG_DATA_HOME. 33 FilePath GetXDGDirectory(Environment* env, const char* env_name, 34 const char* fallback_dir); 35 36 // Wrapper around xdg_user_dir_lookup() from src/base/third_party/xdg-user-dirs 37 // This looks up "well known" user directories like the desktop and music 38 // folder. Examples of |dir_name| are DESKTOP and MUSIC. 39 FilePath GetXDGUserDirectory(Environment* env, const char* dir_name, 40 const char* fallback_dir); 41 42 enum DesktopEnvironment { 43 DESKTOP_ENVIRONMENT_OTHER, 44 DESKTOP_ENVIRONMENT_GNOME, 45 // KDE3 and KDE4 are sufficiently different that we count 46 // them as two different desktop environments here. 47 DESKTOP_ENVIRONMENT_KDE3, 48 DESKTOP_ENVIRONMENT_KDE4, 49 DESKTOP_ENVIRONMENT_XFCE, 50 }; 51 52 // Return an entry from the DesktopEnvironment enum with a best guess 53 // of which desktop environment we're using. We use this to know when 54 // to attempt to use preferences from the desktop environment -- 55 // proxy settings, password manager, etc. 56 DesktopEnvironment GetDesktopEnvironment(Environment* env); 57 58 // Return a string representation of the given desktop environment. 59 // May return NULL in the case of DESKTOP_ENVIRONMENT_OTHER. 60 const char* GetDesktopEnvironmentName(DesktopEnvironment env); 61 // Convenience wrapper that calls GetDesktopEnvironment() first. 62 const char* GetDesktopEnvironmentName(Environment* env); 63 64 } // namespace nix 65 } // namespace base 66 67 #endif // BASE_NIX_XDG_UTIL_H_ 68