diff options
-rw-r--r-- | DEPENDENCIES | 7 | ||||
-rw-r--r-- | Makefile | 107 | ||||
-rwxr-xr-x | src/__main__.py | 5 |
3 files changed, 119 insertions, 0 deletions
diff --git a/DEPENDENCIES b/DEPENDENCIES index 5447261..89b81b4 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -10,3 +10,10 @@ OPTIONAL RUNTIME DEPENDENCIES: linux: most of the monitors require Linux's procfs or sysfs + +BUILD DEPENDENCIES: + + zip + make + coreutils + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bb63e2b --- /dev/null +++ b/Makefile @@ -0,0 +1,107 @@ +PREFIX ?= /usr +BIN ?= /bin +BINDIR ?= $(PREFIX)$(BIN) +DATA ?= /share +DATADIR ?= $(PREFIX)$(DATA) +DOC ?= /share +DOCDIR ?= $(PREFIX)$(DOC) +LICENSEDIR ?= $(DATADIR)/licenses + +PY3_SHEBANG = "/usr/bin/env python3" + +COMMAND = xpybar +PKGNAME = xpybar +PLUGIN_PATH = $(DATADIR)/$(PKGNAME) + + +SRC = __main__ util x + +PLUGINS = chase clock cpu cpuonline df discstats linereader \ + loadavg lunar mem moc network pacman snmp snmp6 \ + softirqs solar uname uptime users vmstat weather \ + xdisplay xkb + +PLUGIN_EXAMPLES = chase clock cpu cpuonline df discstats loadavg \ + lunar mem moc network pacman uname uptime users \ + xdisplay xkb + +EXAMPLES = clock moderate plugin-test test xmonad + + + +.PHONY: all +all: bin/xpybar + +bin/xpybar: obj/xpybar.zip + mkdir -p bin + echo "#!$(PY3_SHEBANG)" > $@ + cat $< >> $@ + chmod a+x $@ + +obj/xpybar.zip: $(foreach F,$(SRC),obj/$(F).py) + cd obj && zip ../$@ $(foreach F,$(SRC),$(F).py) + +obj/%.py: src/%.py + mkdir -p obj + cp $< $@ + sed -i "s:PLUGIN_PATH = None:PLUGIN_PATH = '$(PLUGIN_PATH)':g" $@ + + + +.PHONY: install +install: install-base + +.PHONY: install-base +install-base: install-command install-license install-all-examples install-plugins + +.PHONY: install-command +install-command: bin/xpybar + install -dm755 -- "$(DESTDIR)$(BINDIR)" + install -m755 $< -- "$(DESTDIR)$(BINDIR)/$(COMMAND)" + +.PHONY: install-license +install-license: COPYING LICENSE + install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)" + install -m644 $^ -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)" + +.PHONY: install-all-examples +install-all-examples: install-examples install-plugin-examples + +.PHONY: install-examples +install-examples: $(foreach F,$(EXAMPLES),examples/$(F)) + install -dm755 -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples" + install -m644 $^ -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples" + +.PHONY: install-plugin-examples +install-plugin-examples: $(foreach F,$(PLUGIN_EXAMPLES),examples/plugins/$(F)) + install -dm755 -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples/plugins" + install -m644 $^ -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples/plugins" + +.PHONY: install-plugins +install-plugins: $(foreach F,$(PLUGINS),src/plugins/$(F).py) + install -dm755 -- "$(DESTDIR)$(DATADIR)/$(PKGNAME)/plugins" + install -m644 $^ -- "$(DESTDIR)$(DATADIR)/$(PKGNAME)/plugins" + + + +.PHONY: uninstall +uninstall: + -rm -- "$(DESTDIR)$(BINDIR)/$(COMMAND)" + -rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/COPYING" + -rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE" + -rmdir -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)" + -rm -- $(foreach F,$(PLUGIN_EXAMPLES),"$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples/plugins/$(F)") + -rmdir -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples/plugins" + -rm -- $(foreach F,$(EXAMPLES),"$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples/$(F)") + -rmdir -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples" + -rmdir -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)" + -rm -- $(foreach F,$(PLUGINS),"$(DESTDIR)$(DATADIR)/$(PKGNAME)/plugins/$(F)") + -rmdir -- "$(DESTDIR)$(DATADIR)/$(PKGNAME)/plugins" + -rmdir -- "$(DESTDIR)$(DATADIR)/$(PKGNAME)" + + + +.PHONY: clean +clean: + -rm -r obj bin + diff --git a/src/__main__.py b/src/__main__.py index 501a30b..126ca49 100755 --- a/src/__main__.py +++ b/src/__main__.py @@ -37,6 +37,11 @@ FONT = '-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*' BACKGROUND, FOREGROUND = (0, 0, 0), (192, 192, 192) +PLUGIN_PATH = None +if PLUGIN_PATH is not None: + sys.path.insert(0, PLUGIN_PATH) + + def redraw(): ''' Invoked when redraw is needed, |