## FmConfig

FmConfig — Configuration file support for applications that use libfm.

## Functions

FmConfig * | fm_config_new ()
void | fm_config_load_from_file ()
void | fm_config_load_from_key_file ()
void | fm_config_save ()
void | fm_config_emit_changed ()

## Signals

void | changed | Has Details

## Types and Values

#define | FM_CONFIG_TYPE
#define | FM_CONFIG_DEFAULT_SINGLE_CLICK
#define | FM_CONFIG_DEFAULT_MIDDLE_CLICK
#define | FM_CONFIG_DEFAULT_USE_TRASH
#define | FM_CONFIG_DEFAULT_CONFIRM_DEL
#define | FM_CONFIG_DEFAULT_CONFIRM_TRASH
#define | FM_CONFIG_DEFAULT_NO_USB_TRASH
#define | FM_CONFIG_DEFAULT_BIG_ICON_SIZE
#define | FM_CONFIG_DEFAULT_SMALL_ICON_SIZE
#define | FM_CONFIG_DEFAULT_PANE_ICON_SIZE
#define | FM_CONFIG_DEFAULT_THUMBNAIL_SIZE
#define | FM_CONFIG_DEFAULT_SHOW_THUMBNAIL
#define | FM_CONFIG_DEFAULT_THUMBNAIL_LOCAL
#define | FM_CONFIG_DEFAULT_THUMBNAIL_MAX
#define | FM_CONFIG_DEFAULT_FORCE_S_NOTIFY
#define | FM_CONFIG_DEFAULT_DATE_ISO_8601
#define | FM_CONFIG_DEFAULT_BACKUP_HIDDEN
#define | FM_CONFIG_DEFAULT_NO_EXPAND_EMPTY
#define | FM_CONFIG_DEFAULT_SHOW_FULL_NAMES
#define | FM_CONFIG_DEFAULT_ONLY_USER_TEMPLATES
#define | FM_CONFIG_DEFAULT_TEMPLATE_RUN_APP
#define | FM_CONFIG_DEFAULT_TEMPL_TYPE_ONCE
#define | FM_CONFIG_DEFAULT_SHADOW_HIDDEN
#define | FM_CONFIG_DEFAULT_DEFER_CONTENT_TEST
#define | FM_CONFIG_DEFAULT_QUICK_EXEC
#define | FM_CONFIG_DEFAULT_SMART_DESKTOP_AUTODROP
#define | FM_CONFIG_DEFAULT_PLACES_HOME
#define | FM_CONFIG_DEFAULT_PLACES_DESKTOP
#define | FM_CONFIG_DEFAULT_PLACES_ROOT
#define | FM_CONFIG_DEFAULT_PLACES_COMPUTER
#define | FM_CONFIG_DEFAULT_PLACES_TRASH
#define | FM_CONFIG_DEFAULT_PLACES_APPLICATIONS
#define | FM_CONFIG_DEFAULT_PLACES_NETWORK
#define | FM_CONFIG_DEFAULT_PLACES_UNMOUNTED
#define | FM_CONFIG_DEFAULT_AUTO_SELECTION_DELAY
enum | FmDndDestDropAction
struct | FmConfig
extern FmConfig* | fm_config

## Object Hierarchy

        GObject
        ╰── FmConfig

## Description

`include` : libfm/fm.h

The FmConfig represents basic configuration options that are used by libfm classes and methods. Methods of class FmConfig allow use either default file (~/.config/libfm/libfm.conf) or another one to load the configuration and to save it.

## Functions

### fm_config_new ()

    FmConfig *
    fm_config_new (void);

Creates a new configuration structure filled with default values.

#### Returns

a new FmConfig object.

Since: 0.1.0

### fm_config_load_from_file ()

    void
    fm_config_load_from_file (FmConfig *cfg,
                              const char *name);

Fills configuration `cfg` with data from configuration file. The file `name` may be `NULL` to load default configuration file. If `name` is full path then that file will be loaded. Otherwise `name` will be searched in system config directories and after that in ~/.config/ directory and all found files will be loaded, overwriting existing data in `cfg` .

See also: `fm_config_load_from_key_file()`

#### Parameters

cfg | pointer to configuration |
name | file name to load configuration. | [allow-none]

Since: 0.1.0

### fm_config_load_from_key_file ()

    void
    fm_config_load_from_key_file (FmConfig *cfg,
                                  GKeyFile *kf);

Fills configuration `cfg` with data from GKeyFile `kf` .

#### Parameters

cfg | pointer to configuration |
kf | a GKeyFile with configuration keys and values |

Since: 0.1.0

### fm_config_save ()

    void
    fm_config_save (FmConfig *cfg,
                    const char *name);

Saves configuration into configuration file `name` . If `name` is `NULL` then configuration will be saved into default configuration file. Otherwise it will be saved into file `name` under directory ~/.config.

#### Parameters

cfg | pointer to configuration |
name | file name to save configuration. | [allow-none]

Since: 0.1.0

### fm_config_emit_changed ()

    void
    fm_config_emit_changed (FmConfig *cfg,
                            const char *changed_key);

Causes the “changed” signal to be emitted.

This API is not thread-safe and should be used only in default context.

#### Parameters

cfg | pointer to configuration |
changed_key | what was changed |

Since: 0.1.0

## Types and Values

### FM_CONFIG_TYPE

    #define FM_CONFIG_TYPE              (fm_config_get_type())

### FM_CONFIG_DEFAULT_SINGLE_CLICK

    #define     FM_CONFIG_DEFAULT_SINGLE_CLICK      FALSE

### FM_CONFIG_DEFAULT_MIDDLE_CLICK

    #define     FM_CONFIG_DEFAULT_MIDDLE_CLICK      FALSE

### FM_CONFIG_DEFAULT_USE_TRASH

    #define     FM_CONFIG_DEFAULT_USE_TRASH         TRUE

### FM_CONFIG_DEFAULT_CONFIRM_DEL

    #define     FM_CONFIG_DEFAULT_CONFIRM_DEL       TRUE

### FM_CONFIG_DEFAULT_CONFIRM_TRASH

    #define     FM_CONFIG_DEFAULT_CONFIRM_TRASH     TRUE

### FM_CONFIG_DEFAULT_NO_USB_TRASH

    #define     FM_CONFIG_DEFAULT_NO_USB_TRASH      TRUE

### FM_CONFIG_DEFAULT_BIG_ICON_SIZE

    #define     FM_CONFIG_DEFAULT_BIG_ICON_SIZE     48

### FM_CONFIG_DEFAULT_SMALL_ICON_SIZE

    #define     FM_CONFIG_DEFAULT_SMALL_ICON_SIZE   16

### FM_CONFIG_DEFAULT_PANE_ICON_SIZE

    #define     FM_CONFIG_DEFAULT_PANE_ICON_SIZE    16

### FM_CONFIG_DEFAULT_THUMBNAIL_SIZE

    #define     FM_CONFIG_DEFAULT_THUMBNAIL_SIZE    128

### FM_CONFIG_DEFAULT_SHOW_THUMBNAIL

    #define     FM_CONFIG_DEFAULT_SHOW_THUMBNAIL    TRUE

### FM_CONFIG_DEFAULT_THUMBNAIL_LOCAL

    #define     FM_CONFIG_DEFAULT_THUMBNAIL_LOCAL   TRUE

### FM_CONFIG_DEFAULT_THUMBNAIL_MAX

    #define     FM_CONFIG_DEFAULT_THUMBNAIL_MAX     2048

### FM_CONFIG_DEFAULT_FORCE_S_NOTIFY

    #define     FM_CONFIG_DEFAULT_FORCE_S_NOTIFY    TRUE

### FM_CONFIG_DEFAULT_DATE_ISO_8601

    #define     FM_CONFIG_DEFAULT_DATE_ISO_8601     FALSE

### FM_CONFIG_DEFAULT_BACKUP_HIDDEN

    #define     FM_CONFIG_DEFAULT_BACKUP_HIDDEN     TRUE

### FM_CONFIG_DEFAULT_NO_EXPAND_EMPTY

    #define     FM_CONFIG_DEFAULT_NO_EXPAND_EMPTY   FALSE

### FM_CONFIG_DEFAULT_SHOW_FULL_NAMES

    #define     FM_CONFIG_DEFAULT_SHOW_FULL_NAMES   FALSE

### FM_CONFIG_DEFAULT_ONLY_USER_TEMPLATES

    #define     FM_CONFIG_DEFAULT_ONLY_USER_TEMPLATES FALSE

### FM_CONFIG_DEFAULT_TEMPLATE_RUN_APP

    #define     FM_CONFIG_DEFAULT_TEMPLATE_RUN_APP  FALSE

### FM_CONFIG_DEFAULT_TEMPL_TYPE_ONCE

    #define     FM_CONFIG_DEFAULT_TEMPL_TYPE_ONCE   FALSE

### FM_CONFIG_DEFAULT_SHADOW_HIDDEN

    #define     FM_CONFIG_DEFAULT_SHADOW_HIDDEN     FALSE

### FM_CONFIG_DEFAULT_DEFER_CONTENT_TEST

    #define     FM_CONFIG_DEFAULT_DEFER_CONTENT_TEST FALSE

### FM_CONFIG_DEFAULT_QUICK_EXEC

    #define     FM_CONFIG_DEFAULT_QUICK_EXEC        FALSE

### FM_CONFIG_DEFAULT_SMART_DESKTOP_AUTODROP

    #define     FM_CONFIG_DEFAULT_SMART_DESKTOP_AUTODROP TRUE

### FM_CONFIG_DEFAULT_PLACES_HOME

    #define     FM_CONFIG_DEFAULT_PLACES_HOME       TRUE

### FM_CONFIG_DEFAULT_PLACES_DESKTOP

    #define     FM_CONFIG_DEFAULT_PLACES_DESKTOP    TRUE

### FM_CONFIG_DEFAULT_PLACES_ROOT

    #define     FM_CONFIG_DEFAULT_PLACES_ROOT       FALSE

### FM_CONFIG_DEFAULT_PLACES_COMPUTER

    #define     FM_CONFIG_DEFAULT_PLACES_COMPUTER   FALSE

### FM_CONFIG_DEFAULT_PLACES_TRASH

    #define     FM_CONFIG_DEFAULT_PLACES_TRASH      TRUE

### FM_CONFIG_DEFAULT_PLACES_APPLICATIONS

    #define     FM_CONFIG_DEFAULT_PLACES_APPLICATIONS TRUE

### FM_CONFIG_DEFAULT_PLACES_NETWORK

    #define     FM_CONFIG_DEFAULT_PLACES_NETWORK    FALSE

### FM_CONFIG_DEFAULT_PLACES_UNMOUNTED

    #define     FM_CONFIG_DEFAULT_PLACES_UNMOUNTED  TRUE

### FM_CONFIG_DEFAULT_AUTO_SELECTION_DELAY

    #define     FM_CONFIG_DEFAULT_AUTO_SELECTION_DELAY 600

### enum FmDndDestDropAction

selected behavior when files are dropped on destination widget.

#### Members

FM_DND_DEST_DROP_AUTO | move if source and destination are on the same file system, copy otherwise |
FM_DND_DEST_DROP_COPY | copy |
FM_DND_DEST_DROP_MOVE | move |
FM_DND_DEST_DROP_ASK | open popup to let user select desired action |

### struct FmConfig

    struct FmConfig {
        char* terminal;
        char* archiver;

        gint big_icon_size;
        gint small_icon_size;
        gint pane_icon_size;
        gint thumbnail_size;
        gint thumbnail_max;
        gint auto_selection_delay;
        gint drop_default_action;

        gboolean single_click;
        gboolean use_trash;
        gboolean confirm_del;
        gboolean confirm_trash;
        gboolean show_thumbnail;
        gboolean thumbnail_local;
        gboolean show_internal_volumes;
        gboolean si_unit;
        gboolean advanced_mode;
        gboolean force_startup_notify;
        gboolean backup_as_hidden;
        gboolean no_usb_trash;
        gboolean no_child_non_expandable;
        gboolean show_full_names;
        gboolean shadow_hidden;

        gboolean places_home;
        gboolean places_desktop;
        gboolean places_applications;
        gboolean places_trash;
        gboolean places_root;
        gboolean places_computer;
        gboolean places_network;
        gboolean places_unmounted;

        gboolean only_user_templates;
        gboolean template_run_app;
        gboolean template_type_once;
        gboolean defer_content_test;
        gboolean quick_exec;

        gchar **modules_blacklist;
        gchar **modules_whitelist;

        gchar *list_view_size_units;
        gchar *format_cmd;

        gboolean smart_desktop_autodrop;
        gchar *saved_search;
        union
        {
            gboolean date_iso_8601;
    };

#### Members

char *`terminal`; | command line to launch terminal emulator |
char *`archiver`; | desktop_id of the archiver used |
gint `big_icon_size`; | size of big icons |
gint `small_icon_size`; | size of small icons |
gint `pane_icon_size`; | size of side pane icons |
gint `thumbnail_size`; | size of thumbnail icons |
gint `thumbnail_max`; | show thumbnails only for files not bigger than this, in KB or Kpix |
gint `auto_selection_delay`; | (since 1.2.0) delay for autoselection in single-click mode, in ms |
gint `drop_default_action`; | . | [since 1.2.0) default action on drop (see #FmDndDestDropAction]
gboolean `single_click`; | single click to open file |
gboolean `use_trash`; | delete file to trash can |
gboolean `confirm_del`; | ask before deleting files |
gboolean `confirm_trash`; | (since 1.2.0) ask before moving files to trash can |
gboolean `show_thumbnail`; | show thumbnails |
gboolean `thumbnail_local`; | show thumbnails for local files only |
gboolean `show_internal_volumes`; | show system internal volumes in side pane. (udisks-only) |
gboolean `si_unit`; | use SI prefix for file sizes |
gboolean `advanced_mode`; | enable advanced features for experienced user |
gboolean `force_startup_notify`; | (since 1.0.1) use startup notify by default |
gboolean `backup_as_hidden`; | (since 1.0.1) treat backup files as hidden |
gboolean `no_usb_trash`; | (since 1.0.1) don't create trash folder on removable media |
gboolean `no_child_non_expandable`; | (since 1.0.1) hide expanders on empty folder |
gboolean `show_full_names`; | (since 1.2.0) always show full names in Icon View mode |
gboolean `shadow_hidden`; | (since 1.2.0) show icons of hidden files shadowed in the view |
gboolean `places_home`; | (since 1.2.0) show 'Home' item in Places |
gboolean `places_desktop`; | (since 1.2.0) show 'Desktop' item in Places |
gboolean `places_applications`; | (since 1.2.0) show 'Applications' item in Places |
gboolean `places_trash`; | (since 1.2.0) show 'Trash' item in Places |
gboolean `places_root`; | (since 1.2.0) show '/' item in Places |
gboolean `places_computer`; | (since 1.2.0) show 'My computer' item in Places |
gboolean `places_network`; | (since 1.2.0) show 'Network' item in Places |
gboolean `places_unmounted`; | (since 1.2.0) show unmounted internal volumes in Places |
gboolean `only_user_templates`; | (since 1.2.0) show only user defined templates in 'Create...' menu |
gboolean `template_run_app`; | (since 1.2.0) run default application after creation from template |
gboolean `template_type_once`; | (since 1.2.0) use only one template of each MIME type |
gboolean `defer_content_test`; | (since 1.2.0) defer test for content type on folder loading |
gboolean `quick_exec`; | (since 1.2.0) don't ask user for action on executable launch |
gchar **`modules_blacklist`; | (since 1.2.0) list of modules (mask in form "type:name") to never load |
gchar **`modules_whitelist`; | (since 1.2.0) list of excemptions from `modules_blacklist` |
gchar *`list_view_size_units`; | (since 1.2.0) file size units in list view: h, k, M, G |
gchar *`format_cmd`; | . | [since 1.2.0) command to format the volume (device will be added]
gboolean `smart_desktop_autodrop`; | (since 1.2.0) enable "smart shortcut" auto-action for ~/Desktop |
gchar *`saved_search`; | . | [since 1.2.0) internal saved data of fm_launch_search_simple(]

### fm_config

    extern FmConfig* fm_config;

## Signal Details

### The `“changed”` signal

    void
    user_function (FmConfig *config,
                   gpointer  user_data)

The “changed” signal is emitted when a config key is changed.

#### Parameters

config | configuration that was changed |
user_data | user data set when the signal handler was connected. |

Flags: Has Details

Since: 0.1.0