diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-06-20 16:50:14 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-06-20 16:50:14 +0200 |
commit | 8199ab0d31bc4f42c184e369a611d2e55e082eb9 (patch) | |
tree | 8844e845e473c076506ec846facf1f30d2e52008 | |
parent | add dentrystate (diff) | |
download | xpybar-8199ab0d31bc4f42c184e369a611d2e55e082eb9.tar.gz xpybar-8199ab0d31bc4f42c184e369a611d2e55e082eb9.tar.bz2 xpybar-8199ab0d31bc4f42c184e369a611d2e55e082eb9.tar.xz |
add inodestate
Signed-off-by: Mattias Andrée <maandree@operamail.com>
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | TODO | 8 | ||||
-rw-r--r-- | examples/plugins/inodestate | 34 | ||||
-rw-r--r-- | src/plugins/inodestate.py | 45 |
4 files changed, 81 insertions, 10 deletions
@@ -19,12 +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 dentrystate + vmstat weather xdisplay xkb alsa dentrystate inodestate PLUGIN_EXAMPLES = chase clock cpu cpuinfo cpuonline df discstats \ ipaddress kmsg loadavg lunar mem moc network \ pacman uname uptime users xdisplay xkb slsa \ - dentrystate + dentrystate inodestate EXAMPLES = clock mixed moderate plugin-test test xmonad @@ -36,14 +36,6 @@ List of plugins to implement: /proc/net/sockstat6 /proc/net/wireless /sys/class/net/<nic>/duplex (half, full) - /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 - the system has allocated. This can be slightly more than inode-max - because Linux allocates them one page full at a time. nr_free_inodes - represents the number of free inodes. preshrink is nonzero when the - nr_inodes > inode-max and the system needs to prune the inode list - instead of allocating more. /proc/sys/fs/file-nr This (read-only) file contains three numbers: the number of allocated file handles (i.e., the number of files presently opened); the number diff --git a/examples/plugins/inodestate b/examples/plugins/inodestate new file mode 100644 index 0000000..8abb0ef --- /dev/null +++ b/examples/plugins/inodestate @@ -0,0 +1,34 @@ +# -*- python -*- + +# A xpybar configuration example testing the features of plugins.inodestate + +import time +import threading + +from plugins.inodestate import InodeState +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(): + inode_ = InodeState() + + data = [('Inodes', inode_.nr_inodes), + ('Free', inode_.nr_free_inodes), + ('Preshrink', inode_.preshrink)] + + 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/inodestate.py b/src/plugins/inodestate.py new file mode 100644 index 0000000..6c87a77 --- /dev/null +++ b/src/plugins/inodestate.py @@ -0,0 +1,45 @@ +# -*- 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 InodeState: + ''' + Data from /proc/sys/fs/inode-state + + @variable nr_inodes:int The number of inodes the system has allocated. + This can be slightly more than inode-max because + Linux allocates them one page full at a time. + @variable nr_free_inodes:int Tthe number of free inodes + @variable preshrink:int Nonzero when the `nr_inodes` is more than inode-max + and the system needs to prune the inode list instead + of allocating more + ''' + + + def __init__(self): + ''' + Constructor + ''' + state = None + with open('/proc/sys/fs/inode-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_inodes, self.nr_free_inodes, self.preshrink, _dummy1, _dummy2, _dummy_3, _dummy_4) = state + |