/* * This file is part of Xfce (https://gitlab.xfce.org). * * Copyright (C) 2021 Simon Steinbeiß * * 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 #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_ */