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, | 
