summaryrefslogtreecommitdiffhomepage
path: root/src/Plugins/Monitors.hs
blob: 14d97a27b8959cc0088ded3328daaa98868c6cc9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
{-# LANGUAGE CPP #-}

-----------------------------------------------------------------------------
-- |
-- Module      :  Xmobar.Plugins.Monitors
-- Copyright   :  (c) Andrea Rossato
-- License     :  BSD-style (see LICENSE)
--
-- Maintainer  :  Jose A. Ortega Ruiz <jao@gnu.org>
-- Stability   :  unstable
-- Portability :  unportable
--
-- The system monitor plugin for Xmobar.
--
-----------------------------------------------------------------------------

module Plugins.Monitors where

import Plugins

import Plugins.Monitors.Common ( runM )
import Plugins.Monitors.Weather
import Plugins.Monitors.Net
import Plugins.Monitors.Mem
import Plugins.Monitors.Swap
import Plugins.Monitors.Cpu
import Plugins.Monitors.MultiCpu
import Plugins.Monitors.Batt
import Plugins.Monitors.Thermal
import Plugins.Monitors.CpuFreq
import Plugins.Monitors.CoreTemp
import Plugins.Monitors.Disk
import Plugins.Monitors.Top
import Plugins.Monitors.Uptime
#ifdef IWLIB
import Plugins.Monitors.Wireless
#endif
#ifdef LIBMPD
import Plugins.Monitors.MPD
#endif
#ifdef ALSA
import Plugins.Monitors.Volume
#endif

data Monitors = Weather  Station    Args Rate
              | Network  Interface  Args Rate
              | Memory   Args       Rate
              | Swap     Args       Rate
              | Cpu      Args       Rate
              | MultiCpu Args       Rate
              | Battery  Args       Rate
              | BatteryP [String]   Args Rate
              | DiskU    DiskSpec   Args Rate
              | DiskIO   DiskSpec   Args Rate
              | Thermal  Zone       Args Rate
              | CpuFreq  Args       Rate
              | CoreTemp Args       Rate
              | TopProc  Args       Rate
              | TopMem   Args       Rate
              | Uptime   Args       Rate
#ifdef IWLIB
              | Wireless Interface  Args Rate
#endif
#ifdef LIBMPD
              | MPD      Args       Rate
#endif
#ifdef ALSA
              | Volume   String     String Args Rate
#endif
                deriving (Show,Read,Eq)

type Args      = [String]
type Program   = String
type Alias     = String
type Station   = String
type Zone      = String
type Interface = String
type Rate      = Int
type DiskSpec  = [(String, String)]

instance Exec Monitors where
    alias (Weather  s _ _) = s
    alias (Network  i _ _) = i
    alias (Thermal  z _ _) = z
    alias (Memory     _ _) = "memory"
    alias (Swap       _ _) = "swap"
    alias (Cpu        _ _) = "cpu"
    alias (MultiCpu   _ _) = "multicpu"
    alias (Battery    _ _) = "battery"
    alias (BatteryP  _ _ _)= "battery"
    alias (CpuFreq    _ _) = "cpufreq"
    alias (TopProc    _ _) = "top"
    alias (TopMem     _ _) = "topmem"
    alias (CoreTemp   _ _) = "coretemp"
    alias (DiskU    _ _ _) = "disku"
    alias (DiskIO   _ _ _) = "diskio"
    alias (Uptime     _ _) = "uptime"
#ifdef IWLIB
    alias (Wireless i _ _) = i ++ "wi"
#endif
#ifdef LIBMPD
    alias (MPD        _ _) = "mpd"
#endif
#ifdef ALSA
    alias (Volume m c _ _) = m ++ ":" ++ c
#endif
    start (Weather  s a r) = runM (a ++ [s]) weatherConfig  runWeather    r
    start (Network  i a r) = runM (a ++ [i]) netConfig      runNet        r
    start (Thermal  z a r) = runM (a ++ [z]) thermalConfig  runThermal    r
    start (Memory     a r) = runM a          memConfig      runMem        r
    start (Swap       a r) = runM a          swapConfig     runSwap       r
    start (Cpu        a r) = runM a          cpuConfig      runCpu        r
    start (MultiCpu   a r) = runM a          multiCpuConfig runMultiCpu   r
    start (Battery    a r) = runM a          battConfig     runBatt       r
    start (BatteryP s a r) = runM a          battConfig     (runBatt' s)  r
    start (CpuFreq    a r) = runM a          cpuFreqConfig  runCpuFreq    r
    start (CoreTemp   a r) = runM a          coreTempConfig runCoreTemp   r
    start (DiskU    s a r) = runM a          diskUConfig    (runDiskU s)  r
    start (DiskIO   s a r) = runM a          diskIOConfig   (runDiskIO s) r
    start (TopMem     a r) = runM a          topMemConfig   runTopMem     r
    start (Uptime     a r) = runM a          uptimeConfig   runUptime     r
    start (TopProc    a r) = startTop a r
#ifdef IWLIB
    start (Wireless i a r) = runM (a ++ [i]) wirelessConfig runWireless   r
#endif
#ifdef LIBMPD
    start (MPD        a r) = runM a          mpdConfig      runMPD        r
#endif
#ifdef ALSA
    start (Volume m c a r) = runM a          volumeConfig  (runVolume m c) r
#endif