/** * This file is a part of the Cairo-Dock project * * Copyright : (C) see the 'copyright' file. * E-mail : see the 'copyright' file. * * 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 3 * 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, see . */ #ifndef __CD_APPLET_STRUCT__ #define __CD_APPLET_STRUCT__ #include #define CD_SYSMONITOR_NB_MAX_VALUES 4 #define CD_SYSMONITOR_PROC_FS "/proc" typedef enum _CDSysmonitorDisplayType { CD_SYSMONITOR_GAUGE=0, CD_SYSMONITOR_GRAPH, CD_SYSMONITOR_BAR, CD_SYSMONITOR_NB_TYPES } CDSysmonitorDisplayType; typedef struct { gint iLowerLimit; gint iUpperLimit; gint iAlertLimit; gboolean bAlert; gboolean bAlertSound; } CDAlertParam; struct _AppletConfig { gchar *defaultTitle; gint iCheckInterval; gdouble fSmoothFactor; gboolean bShowCpu; gboolean bShowRam; gboolean bShowSwap; gboolean bShowNvidia; gboolean bShowCpuTemp; gboolean bShowFanSpeed; gboolean bShowFreeMemory; CairoDockInfoDisplay iInfoDisplay; gchar *cGThemePath; CDSysmonitorDisplayType iDisplayType; CairoDockTypeGraph iGraphType; gdouble fLowColor[3]; gdouble fHigholor[3]; gdouble fBgColor[4]; gboolean bMixGraph; gint iNbDisplayedProcesses; gint iProcessCheckInterval; gboolean bTopInPercent; CairoDockLabelDescription *pTopTextDescription; gchar *cSystemMonitorCommand; gchar *cSystemMonitorClass; gboolean bStealTaskBarIcon; gdouble fUserHZ; gchar *cSoundPath; gint iLowerLimit; gint iUpperLimit; gint iAlertLimit; gboolean bAlert; gboolean bAlertSound; } ; typedef struct { gint iPid; gchar *cName; gint iCpuTime; gdouble fCpuPercent; gdouble iMemAmount; gdouble fLastCheckTime; } CDProcess; struct _AppletData { // infos, constantes. gint iNbCPU; gulong iMemPageSize; gint iFrequency; gchar *cModelName; gchar *cGPUName; gint iVideoRam; gchar *cDriverVersion; CairoDockTask *pPeriodicTask; // shared memory for the main thread. gboolean bInitialized; gboolean bAcquisitionOK; GTimer *pClock; long long int cpu_user, cpu_user_nice, cpu_system, cpu_idle; unsigned long long ramTotal, ramFree, ramUsed, ramBuffers, ramCached; unsigned long long swapTotal, swapFree, swapUsed; gint iGPUTemp; gint iCPUTemp; gint iFanSpeed; gdouble fCpuPercent; gdouble fPrevCpuPercent; gdouble fRamPercent,fSwapPercent; gdouble fPrevRamPercent, fPrevSwapPercent; gdouble fGpuTempPercent; gdouble fPrevGpuTempPercent; gdouble fCpuTempPercent; gdouble fPrevCpuTempPercent; gdouble fFanSpeedPercent; gdouble fPrevFanSpeedPercent; gdouble fMaxFanSpeed; gboolean bNeedsUpdate; gint iTimerCount; gboolean bCpuTempAlarm; gboolean bFanAlarm; gint iCPUTempMin, iCPUTempMax; // end of shared memory. gboolean bAlerted; gboolean bCPUAlerted; gboolean bFanAlerted; gint iCount; // pour sous-echantilloner les acquisitions de valeurs moins variables. guint iNbProcesses; CairoDialog *pTopDialog; cairo_surface_t *pTopSurface; CairoDockTask *pTopTask; // shared memory for the "top" thread. GHashTable *pProcessTable; CDProcess **pTopList; GTimer *pTopClock; gboolean bSortTopByRam; // end of shared memory. } ; #endif