xfce4-systemload-plugin-zram/panel-plugin/settings.h

86 lines
4.3 KiB
C
Raw Permalink Normal View History

/*
* This file is part of Xfce (https://gitlab.xfce.org).
*
* Copyright (C) 2021 Simon Steinbeiß <simon@xfce.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef _XFCE_SYSTEMLOAD_SETTINGS_H_
#define _XFCE_SYSTEMLOAD_SETTINGS_H_
#include <glib.h>
#define MIN_TIMEOUT 500
#define MAX_TIMEOUT 10000
/*
* ZRAM_MONITOR is appended at the end on purpose: the numeric values of the
* existing entries index both the config array and the settings already
* stored in xfconf. Inserting in the middle would silently reassign the
* user's colours and labels to the wrong monitors.
*/
enum SystemloadMonitor {
CPU_MONITOR,
MEM_MONITOR,
NET_MONITOR,
SWAP_MONITOR,
ZRAM_MONITOR,
N_MONITORS,
};
typedef struct _SystemloadConfigClass SystemloadConfigClass;
typedef struct _SystemloadConfig SystemloadConfig;
#define TYPE_SYSTEMLOAD_CONFIG (systemload_config_get_type ())
#define SYSTEMLOAD_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SYSTEMLOAD_CONFIG, SystemloadConfig))
#define SYSTEMLOAD_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SYSTEMLOAD_CONFIG, SystemloadConfigClass))
#define IS_SYSTEMLOAD_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SYSTEMLOAD_CONFIG))
#define IS_SYSTEMLOAD_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SYSTEMLOAD_CONFIG))
#define SYSTEMLOAD_CONFIG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SYSTEMLOAD_CONFIG, SystemloadConfigClass))
GType systemload_config_get_type (void) G_GNUC_CONST;
SystemloadConfig *systemload_config_new (const gchar *property_base);
void systemload_config_on_change (SystemloadConfig *config,
gboolean (*callback)(gpointer user_data),
gpointer user_data);
guint systemload_config_get_timeout (const SystemloadConfig *config);
guint systemload_config_get_timeout_seconds (const SystemloadConfig *config);
const gchar *systemload_config_get_system_monitor_command (const SystemloadConfig *config);
bool systemload_config_get_uptime_enabled (const SystemloadConfig *config);
/* "" means the built-in format; syntax is documented at format_uptime() */
const gchar *systemload_config_get_uptime_format (const SystemloadConfig *config);
/*
* When true, the RAM occupied by zram is subtracted from the memory monitor.
*
* Both readings are truthful, they answer different questions. Included (the
* default) means "how much RAM is unavailable" - the literal sense of "used",
* and what every other monitor reports; the zram bar is then a breakdown of a
* part of it, so the two bars overlap. Excluded means "how much RAM the system
* spends on its actual work" - the memory and zram bars then add up to the
* occupied total without counting anything twice.
*/
bool systemload_config_get_memory_exclude_zram (const SystemloadConfig *config);
bool systemload_config_get_enabled (const SystemloadConfig *config, SystemloadMonitor monitor);
bool systemload_config_get_use_label (const SystemloadConfig *config, SystemloadMonitor monitor);
const gchar *systemload_config_get_label (const SystemloadConfig *config, SystemloadMonitor monitor);
const GdkRGBA *systemload_config_get_color (const SystemloadConfig *config, SystemloadMonitor monitor);
#endif /* _XFCE_SYSTEMLOAD_SETTINGS_H_ */