<!-- ##### SECTION ./tmpl/desktop_entry.sgml:Long_Description ##### -->
<para>
The "GDesktopEntry" parser is intended to parse files written to
the <ulink
url="http://www.freedesktop.org/Standards/desktop-entry-spec">Desktop
Entry Specification</ulink>.  It supports deserialization of
desktop entries from files and in-memory data.  Desktop entries
are used for a variety of things including menus, application
MIME type registration, and launchers.
</para>

<para>
To load an existing desktop entry from a data directory (as
returned by g_get_user_data_dir() and g_get_system_data_dirs())
use g_desktop_entry_new_from_data_dirs().  To load an existing
desktop entry from an arbitrary location on the file system use
g_desktop_entry_new_from_file().  If the desktop entry is already
in memory use g_desktop_entry_new_from_data().  Once the desktop 
entry is loaded its keys can be queried using the g_desktop_entry_get 
family of functions.
</para>

<para>
To create a new desktop entry first call g_desktop_entry_new().
Then, call the g_desktop_entry_set family of functions.  Next,
call g_desktop_entry_to_data() to output the desktop entry to 
a byte array, which can be written to disk or sent over a
network.  Finally, call g_desktop_entry_free() to deallocate the
#GDesktopEntry object returned by g_desktop_entry_new().
</para>


<!-- ##### SECTION ./tmpl/desktop_entry.sgml:See_Also ##### -->
<para>

</para>


<!-- ##### SECTION ./tmpl/desktop_entry.sgml:Short_Description ##### -->
serializes and deserializes a desktop entry.


<!-- ##### SECTION ./tmpl/desktop_entry.sgml:Title ##### -->
Desktop Entry Parser


<!-- ##### SECTION ./tmpl/glib-unused.sgml:Stability_Level ##### -->



<!-- ##### SECTION ./tmpl/limits.sgml.sgml:Image ##### -->



<!-- ##### SECTION ./tmpl/limits.sgml.sgml:Long_Description ##### -->
<para>

</para>


<!-- ##### SECTION ./tmpl/limits.sgml.sgml:See_Also ##### -->
<para>

</para>


<!-- ##### SECTION ./tmpl/limits.sgml.sgml:Short_Description ##### -->



<!-- ##### SECTION ./tmpl/limits.sgml.sgml:Stability_Level ##### -->



<!-- ##### SECTION ./tmpl/limits.sgml.sgml:Title ##### -->
Version Information


<!-- ##### SECTION ./tmpl/testutils.sgml:Long_Description ##### -->
<para>

</para>


<!-- ##### SECTION ./tmpl/testutils.sgml:See_Also ##### -->
<para>

</para>


<!-- ##### SECTION ./tmpl/testutils.sgml:Short_Description ##### -->



<!-- ##### SECTION ./tmpl/testutils.sgml:Stability_Level ##### -->



<!-- ##### SECTION ./tmpl/testutils.sgml:Title ##### -->
Testing


<!-- ##### ENUM GChannelError ##### -->
<para>

</para>

@G_CHANNEL_ERROR_ACCES: 
@G_CHANNEL_ERROR_BADF: 
@G_CHANNEL_ERROR_DEADLK: 
@G_CHANNEL_ERROR_FAULT: 
@G_CHANNEL_ERROR_INVAL: 
@G_CHANNEL_ERROR_IO: 
@G_CHANNEL_ERROR_ISDIR: 
@G_CHANNEL_ERROR_MFILE: 
@G_CHANNEL_ERROR_NOLCK: 
@G_CHANNEL_ERROR_NOSPC: 
@G_CHANNEL_ERROR_PERM: 
@G_CHANNEL_ERROR_PIPE: 
@G_CHANNEL_ERROR_SPIPE: 
@G_CHANNEL_ERROR_ENCODE_RW: 
@G_CHANNEL_ERROR_FAILED: 

<!-- ##### ENUM GChannelStatus ##### -->
<para>

</para>

@G_CHANNEL_STATUS_NORMAL: 
@G_CHANNEL_STATUS_EOF: 
@G_CHANNEL_STATUS_PARTIAL_CHARS: 
@G_CHANNEL_STATUS_AGAIN: 
@G_CHANNEL_STATUS_INTR: 
@G_CHANNEL_STATUS_ERROR: 
@G_CHANNEL_STATUS_BAD_INPUT: 

<!-- ##### USER_FUNCTION GCompareFuncData ##### -->
<para>

</para>

@a: 
@b: 
@user_data: 
@Returns: 

<!-- ##### USER_FUNCTION GCompletionStrcmpFunc ##### -->
<para>

</para>

@s1: 
@s2: 
@Returns: 

<!-- ##### STRUCT GDesktopEntry ##### -->
<para>

</para>


<!-- ##### ENUM GDesktopEntryError ##### -->
<para>
Error codes returned by desktop entry parsing.
</para>

@G_DESKTOP_ENTRY_ERROR_UNKNOWN_ENCODING: text being parsed is not UTF-8 and
cannot be guessed.
@G_DESKTOP_ENTRY_ERROR_BAD_START_GROUP: desktop entry does not start with a
legal start group.
@G_DESKTOP_ENTRY_ERROR_PARSE: desktop entry is empty or contains invalid
data.
@G_DESKTOP_ENTRY_ERROR_NOT_FOUND: valid desktop entry could not be found.
@G_DESKTOP_ENTRY_ERROR_KEY_NOT_FOUND: desktop entry does not have requested
key.
@G_DESKTOP_ENTRY_ERROR_GROUP_NOT_FOUND: desktop entry does not have requested
group
@G_DESKTOP_ENTRY_ERROR_INVALID_VALUE: desktop entry contains key which has
value that cannot be validated.

<!-- ##### ENUM GDesktopEntryFlags ##### -->
<para>
#GDesktopEntry supports a few flags for tweaking performance during
deserialization.  #G_DESKTOP_ENTRY_DISCARD_COMMENTS and 
#G_DESKTOP_ENTRY_DISCARD_TRANSLATIONS will reduce memory footprint,
and #G_DESKTOP_ENTRY_GENERATE_LOOKUP_MAP will increase key lookup speed.
</para>

@G_DESKTOP_ENTRY_NONE: use parser defaults
@G_DESKTOP_ENTRY_DISCARD_COMMENTS:  Discard all lines that are blank
or start with "#".
@G_DESKTOP_ENTRY_DISCARD_TRANSLATIONS: Only retain translations that
are returned by g_get_language_names().
@G_DESKTOP_ENTRY_GENERATE_LOOKUP_MAP: Generate a lookup map for key names to make lookups constant time at the cost of more memory.

<!-- ##### USER_FUNCTION GErrorFunc ##### -->
<para>
Specifies the type of function passed to g_set_error_handler().
</para>

@str: the error message.

<!-- ##### USER_FUNCTION GHookFreeFunc ##### -->
<para>

</para>

@hook_list: 
@hook: 

<!-- ##### ENUM GIOFileMode ##### -->
<para>

</para>

@G_IO_FILE_MODE_READ: 
@G_IO_FILE_MODE_WRITE: 
@G_IO_FILE_MODE_APPEND: 
@G_IO_FILE_MODE_READ_WRITE: 
@G_IO_FILE_MODE_READ_WRITE_TRUNCATE: 
@G_IO_FILE_MODE_READ_WRITE_APPEND: 

<!-- ##### ENUM GMatchType ##### -->
<para>
Enumeration representing different kinds of patterns. This is only used
internally for optimizing the match algorithm.
</para>

@G_MATCH_ALL: a general pattern.
@G_MATCH_ALL_TAIL: a general pattern which contains a fixed part matching
the end of the string.
@G_MATCH_HEAD: a pattern matching every string with a certain prefix.
@G_MATCH_TAIL: a pattern matching every string with a certain suffix.
@G_MATCH_EXACT: a pattern matching exactly one string.
@G_MATCH_LAST: 

<!-- ##### USER_FUNCTION GWarningFunc ##### -->
<para>
Specifies the type of function passed to g_set_warning_handler().
</para>

@str: the warning message.

<!-- ##### MACRO G_CHANNEL_ERROR ##### -->
<para>

</para>


<!-- ##### MACRO G_DESKTOP_ENTRY_ERROR ##### -->
<para>
Error domain for desktop entry parsing. Errors in this domain will
be from the #GDesktopEntryError enumeration. See #GError for information on 
error domains.
</para>


<!-- ##### MACRO G_HOOK_DEFERRED_DESTROY ##### -->
<para>

</para>


<!-- ##### MACRO G_IO_CHANNEL_DEFAULT_LINE_TERM ##### -->
<para>
One of %G_IO_CHANNEL_UNIX_LINE_TERM, %G_IO_CHANNEL_DOS_LINE_TERM,
or %G_IO_CHANNEL_MACINTOSH_LINE_TERM (unimplemented)
depending on the system type.
</para>


<!-- ##### MACRO G_IO_CHANNEL_DOS_LINE_TERM ##### -->
<para>

</para>


<!-- ##### MACRO G_IO_CHANNEL_ENCODE_RAW ##### -->
<para>
Encoding for nonbuffered IO. With this encoding, data must be
read using g_io_channel_read_chars(); the other functions will
not work.
</para>


<!-- ##### MACRO G_IO_CHANNEL_MACINTOSH_LINE_TERM ##### -->
<para>

</para>


<!-- ##### MACRO G_IO_CHANNEL_UNIX_LINE_TERM ##### -->
<para>

</para>


<!-- ##### MACRO NAME_MAX ##### -->
<para>
Provided for UNIX emulation on Windows; equivalent to UNIX macro 
%NAME_MAX, which is the maximum length of a single path component.
i.e. just the <filename>foo</filename> in <filename>/usr/bin/foo</filename>.
</para>


<!-- ##### MACRO access ##### -->
<para>

</para>


<!-- ##### MACRO close ##### -->
<para>

</para>


<!-- ##### FUNCTION closedir ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for <function>closedir()</function>
in any UNIX manual.
</para>

@Param1: 
@Returns: 

<!-- ##### MACRO fdopen ##### -->
<para>

</para>


<!-- ##### MACRO ftruncate ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for ftruncate()
in any UNIX manual.
</para>

@fd: 
@size: 

<!-- ##### FUNCTION g_channel_error_from_errno ##### -->
<para>

</para>

@en: 
@Returns: 

<!-- ##### FUNCTION g_channel_error_quark ##### -->
<para>

</para>

@Returns: 

<!-- ##### FUNCTION g_convert_error_quark ##### -->
<para>

</para>

@Returns: 

<!-- ##### FUNCTION g_desktop_entry_escape_strings ##### -->
<para>

</para>

@entry: 
@should_escape: 

<!-- ##### FUNCTION g_desktop_entry_free ##### -->
<para>

</para>

@entry: 

<!-- ##### FUNCTION g_desktop_entry_get_boolean ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_boolean_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_groups ##### -->
<para>

</para>

@entry: 
@length: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_integer ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_integer_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_keys ##### -->
<para>

</para>

@entry: 
@group_name: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_locale_string ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@locale: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_locale_string_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@locale: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_start_group ##### -->
<para>

</para>

@entry: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_string ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_string_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_has_group ##### -->
<para>

</para>

@entry: 
@group_name: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_has_key ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_new ##### -->
<para>

</para>

@flags: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_new_from_data ##### -->
<para>

</para>

@data: 
@length: 
@legal_start_groups: 
@flags: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_new_from_data_dirs ##### -->
<para>

</para>

@file: 
@full_path: 
@legal_start_groups: 
@flags: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_new_from_file ##### -->
<para>

</para>

@file: 
@legal_start_groups: 
@flags: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_remove_group ##### -->
<para>

</para>

@entry: 
@group_name: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_remove_key ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_boolean ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@boolean: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_boolean_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@list: 
@length: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_integer ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@integer: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_integer_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@list: 
@length: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_locale_string ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@locale: 
@string: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_locale_string_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@locale: 
@list: 
@length: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_string ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@string: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_string_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@list: 
@length: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_to_data ##### -->
<para>

</para>

@entry: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_file_replace ##### -->
<para>

</para>

@filename: 
@contents: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_format_file_size_for_display ##### -->
<para>

</para>

@size: 
@Returns: 

<!-- ##### FUNCTION g_io_channel_error_quark ##### -->
<para>

</para>

@Returns: 

<!-- ##### VARIABLE g_log_domain_glib ##### -->
<para>
The log domain used for messages logged by GLib itself.
</para>


<!-- ##### FUNCTION g_main_add_poll ##### -->
<para>
Adds a file descriptor to be polled.
This is usually combined with g_source_add() to add an event source.
The event source's check function will typically test the revents
field in the #GPollFD struct and return TRUE if events need to be processed.
</para>

@fd: a #GPollFD, which is a file descriptor together with a bitwise
combination of #GIOCondition flags determining which events to poll for.
@priority: the priority of the poll, which should be the same as the priority
used for g_source_add() to ensure that the file descriptor is polled whenever
the results may be needed.
See #G_PRIORITY_DEFAULT, #G_PRIORITY_DEFAULT_IDLE, #G_PRIORITY_HIGH,
#G_PRIORITY_HIGH_IDLE, and #G_PRIORITY_LOW.

<!-- ##### FUNCTION g_main_context_get ##### -->
<para>

</para>

@thread: 
@Returns: 

<!-- ##### FUNCTION g_main_loop_destroy ##### -->
<para>

</para>

@loop: 

<!-- ##### FUNCTION g_main_remove_poll ##### -->
<para>
Removes a file descriptor from the list being polled.
</para>

@fd: the #GPollFD to remove.

<!-- ##### FUNCTION g_main_win32_get_poll_func ##### -->
<para>

</para>

@Returns: 

<!-- ##### FUNCTION g_mem_check ##### -->
<para>
Checks if the given memory has already been freed. If it has it outputs
a warning message.
To use this function you must configure glib with the flag
'--enable-mem-check=yes' before compiling.
</para>

@mem: the memory to check.

<!-- ##### FUNCTION g_regex_error_quark ##### -->
<para>

</para>

@Returns: 

<!-- ##### FUNCTION g_regex_free ##### -->
<para>

</para>

@regex: 

<!-- ##### FUNCTION g_scanner_stat_mode ##### -->
<para>
Gets the file attributes.
This is the <structfield>st_mode</structfield> field from the
<structname>stat</structname> structure. See the <function>stat()</function>
documentation.
</para>

@filename: the file name.
@Returns: the file attributes.

<!-- ##### FUNCTION g_set_error_handler ##### -->
<para>
Sets the function to be called to handle error messages.
This function is deprecated in favour of the new logging facilities.
</para>

@func: the function to be called to handle error messages.
@Returns: the old error handler.

<!-- ##### FUNCTION g_set_message_handler ##### -->
<para>
Sets the function to be called to handle messages.
This function is deprecated in favour of the new logging facilities.
</para>

@func: the function to be called to handle normal messages.
@Returns: the old message handler.

<!-- ##### FUNCTION g_set_warning_handler ##### -->
<para>
Sets the function to be called to handle warning messages.
This function is deprecated in favour of the new logging facilities.
</para>

@func: the function to be called to handle warning messages.
@Returns: the old warning handler.

<!-- ##### FUNCTION g_source_add ##### -->
<para>
</para>

@priority: 
@can_recurse: 
@funcs: 
@source_data: 
@user_data: 
@notify: 
@Returns: 
@source: 
@context: 

<!-- ##### FUNCTION g_source_connect ##### -->
<para>

</para>

@source: 
@func: 
@data: 
@notify: 

<!-- ##### FUNCTION g_source_connect_indirect ##### -->
<para>

</para>

@source: 
@callback_data: 
@callback_funcs: 

<!-- ##### FUNCTION g_source_remove_by_source_data ##### -->
<para>
Removes the first event source found with the given source data.
</para>
<para>
Event sources are sorted with the highest priority first. Sources with equal
priority are stored in the order in which they were added.
</para>

@source_data: the source data, which contains information specific to the
type of source.
@Returns: TRUE if an event source was found and removed.

<!-- ##### FUNCTION g_static_private_get_for_thread ##### -->
<para>

</para>

@private_key: 
@thread: 
@Returns: 

<!-- ##### FUNCTION g_static_private_set_for_thread ##### -->
<para>

</para>

@private_key: 
@thread: 
@data: 
@notify: 

<!-- ##### MACRO g_string ##### -->
<para>
Turns the argument into a string literal by using the '#' stringizing operator.
</para>

@x: text to convert to a literal string.

<!-- ##### FUNCTION g_variant_get_byte_array ##### -->
<para>

</para>

@value: 
@length: 
@Returns: 

<!-- ##### FUNCTION g_variant_new_byte_array ##### -->
<para>

</para>

@array: 
@length: 
@Returns: 

<!-- ##### FUNCTION g_warn_message ##### -->
<para>

</para>

@domain: 
@file: 
@line: 
@func: 
@warnexpr: 

<!-- ##### MACRO getcwd ##### -->
<para>

</para>


<!-- ##### MACRO getpid ##### -->
<para>

</para>


<!-- ##### VARIABLE glib_binary_age ##### -->
<para>

</para>


<!-- ##### FUNCTION glib_check_version ##### -->
<para>

</para>

@required_major: 
@required_minor: 
@required_micro: 
@Returns: 

<!-- ##### VARIABLE glib_interface_age ##### -->
<para>

</para>


<!-- ##### VARIABLE glib_major_version ##### -->
<para>

</para>


<!-- ##### VARIABLE glib_micro_version ##### -->
<para>

</para>


<!-- ##### VARIABLE glib_minor_version ##### -->
<para>

</para>


<!-- ##### MACRO lseek ##### -->
<para>

</para>


<!-- ##### MACRO open ##### -->
<para>

</para>


<!-- ##### FUNCTION opendir ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for <function>opendir()</function>
in any UNIX manual.
</para>

@Param1: 
@Returns: 

<!-- ##### MACRO pclose ##### -->
<para>

</para>


<!-- ##### MACRO pipe ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for pipe()
in any UNIX manual.
</para>

@phandles: file descriptors, the first one for reading, the second one for writing.

<!-- ##### MACRO popen ##### -->
<para>

</para>


<!-- ##### MACRO read ##### -->
<para>

</para>


<!-- ##### MACRO readdir ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for <function>readdir()</function>
in any UNIX manual.
</para>


<!-- ##### FUNCTION rewinddir ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for <function>rewinddir()</function>
in any UNIX manual.
</para>

@Param1: 

<!-- ##### MACRO write ##### -->
<para>

</para>


