diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-06-20 16:42:31 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-06-20 16:42:31 +0200 |
commit | 4f190db5c5c1c4304a2eaa6d8400b369190ae353 (patch) | |
tree | 259f68555fbbaeeefb50b90dc4cf7805780bd186 | |
parent | add alsa plugin (diff) | |
download | xpybar-4f190db5c5c1c4304a2eaa6d8400b369190ae353.tar.gz xpybar-4f190db5c5c1c4304a2eaa6d8400b369190ae353.tar.bz2 xpybar-4f190db5c5c1c4304a2eaa6d8400b369190ae353.tar.xz |
add dentrystate
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r-- | Makefile | 5 | ||||
-rw-r--r-- | TODO | 5 | ||||
-rw-r--r-- | examples/plugins/dentrystate | 35 | ||||
-rw-r--r-- | src/plugins/dentrystate.py | 44 |
4 files changed, 82 insertions, 7 deletions
@@ -19,11 +19,12 @@ SRC = __main__ util x PLUGINS = chase clock cpuifo cpuonline cpu df discstats ipaddress \ kmsg leapsec linereader loadavg lunar mem moc network \ pacman snmp snmp6 softirqs solar uname uptime users \ - vmstat weather xdisplay xkb alsa + vmstat weather xdisplay xkb alsa dentrystate PLUGIN_EXAMPLES = chase clock cpu cpuinfo cpuonline df discstats \ ipaddress kmsg loadavg lunar mem moc network \ - pacman uname uptime users xdisplay xkb slsa + pacman uname uptime users xdisplay xkb slsa \ + dentrystate EXAMPLES = clock mixed moderate plugin-test test xmonad @@ -36,11 +36,6 @@ List of plugins to implement: /proc/net/sockstat6 /proc/net/wireless /sys/class/net/<nic>/duplex (half, full) - /proc/sys/fs/dentry-state - This file contains information about the status of the directory - cache (dcache). The file contains six numbers, nr_dentry, nr_unused, - age_limit (age in seconds), want_pages (pages requested by system) - and two dummy values. /proc/sys/fs/inode-state This file contains seven numbers: nr_inodes, nr_free_inodes, preshrink, and four dummy values. nr_inodes is the number of inodes diff --git a/examples/plugins/dentrystate b/examples/plugins/dentrystate new file mode 100644 index 0000000..f57847e --- /dev/null +++ b/examples/plugins/dentrystate @@ -0,0 +1,35 @@ +# -*- python -*- + +# A xpybar configuration example testing the features of plugins.dentrystate + +import time +import threading + +from plugins.dentrystate import DentryState +from plugins.clock import Clock + + +OUTPUT, HEIGHT, YPOS, TOP = 0, 12, 24, True + + +clock = Clock(sync_to = Clock.SECONDS) + +start_ = start +def start(): + start_() + async(lambda : clock.continuous_sync(lambda : bar.invalidate())) + + +def redraw(): + dentry_ = DentryState() + + data = [('Alloced', dentry_.nr_dentry), + ('Unused', dentry_.nr_unused), + ('AgeLimit', dentry_.age_limit), + ('WantPages', dentry_.want_pages)] + + text = ' │ '.join('%s: %i' % (text, value) for (text, value) in data) + + bar.clear() + bar.draw_coloured_text(0, 10, 0, 2, text) + diff --git a/src/plugins/dentrystate.py b/src/plugins/dentrystate.py new file mode 100644 index 0000000..6ef5dc7 --- /dev/null +++ b/src/plugins/dentrystate.py @@ -0,0 +1,44 @@ +# -*- python -*- +''' +xpybar – xmobar replacement written in python +Copyright © 2014 Mattias Andrée (maandree@member.fsf.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 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 <http://www.gnu.org/licenses/>. +''' + + +class DentryState: + ''' + Data from /proc/sys/fs/dentry-state + + Information about the status of the directory cache (dcache) + + @variable nr_dentry:int Number of allocated directory entries + @variable nr_unused:int Number of unused directory entries + @variable age_limit:int Age limit in seconds + @variable want_pages:int Pages requested by the system + ''' + + + def __init__(self): + ''' + Constructor + ''' + state = None + with open('/proc/sys/fs/dentry-state', 'rb') as file: + state = file.read() + state = state.decode('utf-8', 'replace').replace('\t', ' ') + state = [int(field) for field in state.split(' ') if not field == ''] + (self.nr_dentry, self.nr_unused, self.age_limit, self.want_pages, _dummy1, _dummy_2) = state + |