updated examples to python 3

This commit is contained in:
Fredrick W. Warren 2024-09-09 01:26:31 -06:00
parent 259f902f75
commit 970bb33b46
6 changed files with 67 additions and 69 deletions

View File

@ -28,7 +28,7 @@ First workingish version
""" """
usage = """pywmdatetime.py [options] usage = """pywmdatetime.py [options]
Available options are: Available options are:
-h, --help print this help -h, --help asprint this help
-f, --foreground <color> set the foreground color -f, --foreground <color> set the foreground color
-b, --background <color> set the background color -b, --background <color> set the background color
-F, --font <file> set the font name -F, --font <file> set the font name
@ -69,7 +69,7 @@ def addString(s, x, y):
try: try:
wmdocklib.addString(s, x, y, xOffset, yOffset, wmdocklib.addString(s, x, y, xOffset, yOffset,
width, height) width, height)
except ValueError, e: except ValueError as e:
sys.stderr.write('Error when painting string:\n' + str(e) + '\n') sys.stderr.write('Error when painting string:\n' + str(e) + '\n')
sys.stderr.write('test %s' % ((s, x, y, xOffset, yOffset, sys.stderr.write('test %s' % ((s, x, y, xOffset, yOffset,
width, height),)) width, height),))
@ -119,7 +119,7 @@ def parseCommandLine(argv):
'weekdayformat=', 'weekformat=', 'rgbfile=', 'configfile=', 'font='] 'weekdayformat=', 'weekformat=', 'rgbfile=', 'configfile=', 'font=']
try: try:
opts, nonOptArgs = getopt.getopt(argv[1:], shorts, longs) opts, nonOptArgs = getopt.getopt(argv[1:], shorts, longs)
except getopt.GetoptError, e: except getopt.GetoptError as e:
sys.stderr.write('Error when parsing commandline: ' + str(e) + '\n') sys.stderr.write('Error when parsing commandline: ' + str(e) + '\n')
sys.stderr.write(usage) sys.stderr.write(usage)
sys.exit(2) sys.exit(2)
@ -247,7 +247,7 @@ def main():
# Merge the two configs, let the commandline options overwrite those in the # Merge the two configs, let the commandline options overwrite those in the
# configuration file. # configuration file.
config = fileConfig config = fileConfig
for i in clConfig.iteritems(): for i in clConfig.items():
config[i[0]] = i[1] config[i[0]] = i[1]
timeFmt = config.get('timeformat', timeDefaultFormat) timeFmt = config.get('timeformat', timeDefaultFormat)
@ -282,7 +282,7 @@ def main():
bg=0, fg=2, palette=palette, bg=0, fg=2, palette=palette,
background=background, background=background,
debug=debug) debug=debug)
maxCharsPerLine = (width-2*xOffset) / char_width maxCharsPerLine = (width-2*xOffset) // char_width
antialiased = clConfig.get('antialiased', False) antialiased = clConfig.get('antialiased', False)
wmdocklib.openXwindow(sys.argv, width, height) wmdocklib.openXwindow(sys.argv, width, height)

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""pywmgeneric.py """pywmgeneric.py
@ -37,11 +37,13 @@ import sys
import os import os
import time import time
import string import string
import ConfigParser import configparser
import getopt import getopt
import popen2 import subprocess
import wmdocklib import wmdocklib
import wmdocklib.pywmgeneral as pywmgeneral
import wmdocklib.pywmhelpers as pywmhelpers
prevStat = {'user':0, prevStat = {'user':0,
'nice':0, 'nice':0,
@ -76,16 +78,14 @@ class UserMethods:
def result(): def result():
global prevStat global prevStat
try: try:
f = file('/proc/stat', 'r') with open('/proc/stat', 'r') as f:
currStat = dict(
[(k, int(v))
for (k,v) in cpuinfo.match(f.readline()).groupdict().items()]
)
except IOError: except IOError:
return 'error' return 'error'
currStat = dict(
[(k, int(v))
for (k,v) in cpuinfo.match(f.readline()).groupdict().items()]
)
f.close()
total = 0 total = 0
for k,v in currStat.items(): for k,v in currStat.items():
total += v total += v
@ -105,11 +105,10 @@ class UserMethods:
def getSysTemp(self): def getSysTemp(self):
try: try:
f = file('/proc/sys/dev/sensors/w83697hf-isa-0290/temp1', 'r') with open('/proc/sys/dev/sensors/w83697hf-isa-0290/temp1', 'r') as f:
temp = f.readline().split()[2]
except IOError: except IOError:
return lambda: 'error' return lambda: 'error'
temp = f.readline().split()[2]
f.close()
return lambda: 'sys: %s' % temp return lambda: 'sys: %s' % temp
def ls(self): def ls(self):
@ -153,8 +152,8 @@ def addString(s, x, y):
try: try:
wmdocklib.addString(s, x, y, xOffset, yOffset, wmdocklib.addString(s, x, y, xOffset, yOffset,
width, height) width, height)
except ValueError, e: except ValueError as e:
sys.stderr.write('Error when painting string:\n' + str(e) + '\n') sys.stderr.write(f'Error when painting string:\n{e}\n')
sys.exit(3) sys.exit(3)
def clearLine(y): def clearLine(y):
@ -194,7 +193,7 @@ class Entry:
self._glue = ' ... ' self._glue = ' ... '
self._scrollPos = 0 self._scrollPos = 0
self._tickCount = 0L self._tickCount = 0
self._runningProcs = [] self._runningProcs = []
self._actionProc = None self._actionProc = None
@ -220,7 +219,7 @@ class Entry:
"""Exec an external command in the background. """Exec an external command in the background.
Return the running process as created by Popen3().""" Return the running process as created by Popen3()."""
proc = popen2.Popen3(command) proc = subprocess.Popen(command)
self._runningProcs.append(proc) self._runningProcs.append(proc)
return proc return proc
@ -480,7 +479,7 @@ class PywmGeneric:
timeNum = float(timeStr[:-1].strip()) timeNum = float(timeStr[:-1].strip())
numSecs = timeNum * multiplier numSecs = timeNum * multiplier
return numSecs return numSecs
raise ValueError, 'Invalid literal' raise ValueError('Invalid literal')
def _checkForEvents(self): def _checkForEvents(self):
event = wmdocklib.getEvent() event = wmdocklib.getEvent()
@ -517,7 +516,7 @@ def parseCommandLine(argv):
'font=', 'debug'] 'font=', 'debug']
try: try:
opts, nonOptArgs = getopt.getopt(argv[1:], shorts, longs) opts, nonOptArgs = getopt.getopt(argv[1:], shorts, longs)
except getopt.GetoptError, e: except getopt.GetoptError as e:
err('Error when parsing commandline: ' + str(e) + '\n') err('Error when parsing commandline: ' + str(e) + '\n')
err(usage) err(usage)
sys.exit(2) sys.exit(2)
@ -551,10 +550,10 @@ def readConfigFile(fileName):
err("Can't read the configuration file %s.\n" % fileName) err("Can't read the configuration file %s.\n" % fileName)
# We can't do much without a configuration file # We can't do much without a configuration file
sys.exit(3) sys.exit(3)
cp = ConfigParser.ConfigParser() cp = configparser.ConfigParser()
try: try:
cp.read(fileName) cp.read(fileName)
except ConfigParser.Error, e: except configparser.Error as e:
err("Error when reading configuration file:\n%s\n" % str(e)) err("Error when reading configuration file:\n%s\n" % str(e))
sys.exit(3) sys.exit(3)
l = [{}, {}, {}, {}, {}] l = [{}, {}, {}, {}, {}]

View File

@ -89,7 +89,7 @@ class PywmHDMon:
self._pathsToMonitor = pathsToMonitor self._pathsToMonitor = pathsToMonitor
self._actMonEnabled = actMonEnabled self._actMonEnabled = actMonEnabled
self._skipping = skipping self._skipping = skipping
self._lineCount = (height - yOffset*2 - 2) / (char_height+1) self._lineCount = (height - yOffset*2 - 2) // (char_height+1)
self._statFile = procStat self._statFile = procStat
self._maxIODiff = 0 self._maxIODiff = 0
@ -102,7 +102,7 @@ class PywmHDMon:
def addString(self, s, x, y): def addString(self, s, x, y):
try: try:
wmdocklib.addString(s, x, y, xOffset, yOffset, width, height) wmdocklib.addString(s, x, y, xOffset, yOffset, width, height)
except ValueError, e: except ValueError as e:
sys.stderr.write('Error when painting string:\n' + str(e) + '\n') sys.stderr.write('Error when painting string:\n' + str(e) + '\n')
sys.exit(3) sys.exit(3)
@ -116,7 +116,7 @@ class PywmHDMon:
""" """
# check if is mounted <- st_dev(/mount/point) == st_dev(/mount) # check if is mounted <- st_dev(/mount/point) == st_dev(/mount)
if path is not '/': if path != '/':
statOwn = os.stat(path) statOwn = os.stat(path)
# the following is a bit ugly: it removes the trailing # the following is a bit ugly: it removes the trailing
@ -151,7 +151,7 @@ class PywmHDMon:
def getY(self, line): def getY(self, line):
"returns the y coordinate of the top line for the box" "returns the y coordinate of the top line for the box"
interlinea = (height - yOffset*2 - 2 - self._lineCount * char_height) / (self._lineCount-1) interlinea = (height - yOffset*2 - 2 - self._lineCount * char_height) // (self._lineCount-1)
interlinea += char_height interlinea += char_height
lastBaseline = yOffset + self._lineCount * interlinea lastBaseline = yOffset + self._lineCount * interlinea
from math import ceil from math import ceil
@ -163,7 +163,7 @@ class PywmHDMon:
def paintHdData(self, line, data, mode): def paintHdData(self, line, data, mode):
total, free = data total, free = data
xStart = (width*2)/5 xStart = (width*2)//5
if total==0: if total==0:
self.addString(' ', width-yOffset*2-5*char_width-1, self.getY(line)) self.addString(' ', width-yOffset*2-5*char_width-1, self.getY(line))
self.paintGraph(0, xStart, self.getY(line) + 4, self.paintGraph(0, xStart, self.getY(line) + 4,
@ -244,7 +244,7 @@ class PywmHDMon:
sys.exit(0) sys.exit(0)
elif event['type'] == 'buttonrelease': elif event['type'] == 'buttonrelease':
area = wmdocklib.checkMouseRegion(event['x'],event['y']) area = wmdocklib.checkMouseRegion(event['x'],event['y'])
if area is not -1: if area != -1:
self.toggleMount(area-1+self._skipping) self.toggleMount(area-1+self._skipping)
event = wmdocklib.getEvent() event = wmdocklib.getEvent()
@ -257,7 +257,7 @@ class PywmHDMon:
mounted = True mounted = True
except NotMounted: except NotMounted:
mounted = False mounted = False
except OSError, e: except OSError as e:
return return
if mounted: if mounted:
if action == 'mount': if action == 'mount':
@ -282,7 +282,7 @@ class PywmHDMon:
hdData = self.getHdInfo(path) hdData = self.getHdInfo(path)
except NotMounted: except NotMounted:
hdData = (0, 0) hdData = (0, 0)
except OSError, e: except OSError as e:
sys.stderr.write( sys.stderr.write(
"Can't get hd data from %s: %s\n" % (path, str(e))) "Can't get hd data from %s: %s\n" % (path, str(e)))
hdData = (0, 0) hdData = (0, 0)
@ -313,7 +313,7 @@ def parseCommandLine(argv):
'skipconf=','font=', 'debug'] 'skipconf=','font=', 'debug']
try: try:
opts, nonOptArgs = getopt.getopt(argv[1:], shorts, longs) opts, nonOptArgs = getopt.getopt(argv[1:], shorts, longs)
except getopt.GetoptError, e: except getopt.GetoptError as e:
sys.stderr.write('Error when parsing commandline: ' + str(e) + '\n') sys.stderr.write('Error when parsing commandline: ' + str(e) + '\n')
sys.stderr.write(usage) sys.stderr.write(usage)
sys.exit(2) sys.exit(2)
@ -406,7 +406,7 @@ def main():
configFile = os.path.expanduser(configFile) configFile = os.path.expanduser(configFile)
fileConfig = wmdocklib.readConfigFile(configFile, sys.stderr) fileConfig = wmdocklib.readConfigFile(configFile, sys.stderr)
config = fileConfig config = fileConfig
for i in clConfig.iteritems(): for i in clConfig.items():
config[i[0]] = i[1] config[i[0]] = i[1]
palette = {} palette = {}

View File

@ -10,8 +10,7 @@ Licensed under the GNU General Public License.
""" """
import sys, time import sys, time
from wmdocklib import wmoo from wmdocklib import wmoo as wmoo
devnull = file('/dev/null')
class Application(wmoo.Application): class Application(wmoo.Application):
@ -58,7 +57,7 @@ class Application(wmoo.Application):
def handler(self, num, frame): def handler(self, num, frame):
if self._expectdying: if self._expectdying:
print self._expectdying print(self._expectdying)
self._expectdying -= 1 self._expectdying -= 1
else: else:
self.reset() self.reset()
@ -74,7 +73,7 @@ class Application(wmoo.Application):
self.child = subprocess.Popen(commandline, self.child = subprocess.Popen(commandline,
stdin =subprocess.PIPE, stdin =subprocess.PIPE,
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=devnull) stderr=subprocess.DEVNULL)
signal.signal(signal.SIGCHLD, self.handler) signal.signal(signal.SIGCHLD, self.handler)
self._flash = 0 self._flash = 0
self._paused = False self._paused = False
@ -82,26 +81,26 @@ class Application(wmoo.Application):
self._buffering = 1 self._buffering = 1
self._cacheLevel = 0 self._cacheLevel = 0
import fcntl import fcntl
flags = fcntl.fcntl(self.child.stdout, fcntl.F_GETFL) flags = fcntl.fcntl(self.child.stdout, fcntl.F_GETFL)
fcntl.fcntl(self.child.stdout, fcntl.F_SETFL, flags | os.O_NONBLOCK) fcntl.fcntl(self.child.stdout, fcntl.F_SETFL, flags | os.O_NONBLOCK)
flags = fcntl.fcntl(self.child.stdin, fcntl.F_GETFL) flags = fcntl.fcntl(self.child.stdin, fcntl.F_GETFL)
fcntl.fcntl(self.child.stdin, fcntl.F_SETFL, flags | os.O_NONBLOCK) fcntl.fcntl(self.child.stdin, fcntl.F_SETFL, flags | os.O_NONBLOCK)
def stopPlayer(self): def stopPlayer(self):
if self.child: if self.child:
print self._expectdying print(self._expectdying)
self.child.stdin.write('q') self.child.stdin.write(b'q')
self._expectdying += 1 self._expectdying += 1
self.child = None self.child = None
def muteStream(self, event): def muteStream(self, event):
if self.child and self._buffering == 0: if self.child and self._buffering == 0:
self.child.stdin.write('m') self.child.stdin.write(b'm')
self.putPattern(9*self._muting, 0, 9, 11, 30, 29) self.putPattern(9*self._muting, 0, 9, 11, 30, 29)
self._muting = 1 - self._muting self._muting = 1 - self._muting
def printevent(self, event): def printevent(self, event):
print event print(event)
def previousRadio(self, event): def previousRadio(self, event):
if self.currentRadio == 0: self.currentRadio = len(self.radioList) if self.currentRadio == 0: self.currentRadio = len(self.radioList)
@ -128,7 +127,7 @@ class Application(wmoo.Application):
def pauseStream(self, event): def pauseStream(self, event):
if self.child and not self._buffering: if self.child and not self._buffering:
self.child.stdin.write(' ') self.child.stdin.write(b' ')
self._paused = not self._paused self._paused = not self._paused
if self._paused: if self._paused:
self._colour = 1 self._colour = 1
@ -167,7 +166,7 @@ class Application(wmoo.Application):
import select import select
[i, o, e] = select.select([self.child.stdout], [], [], 0) [i, o, e] = select.select([self.child.stdout], [], [], 0)
if i: if i:
line = self.child.stdout.read(102400) line = self.child.stdout.read(102400).decode("utf-8")
self._buffered += line self._buffered += line
npos = self._buffered.rfind('\n')+1 npos = self._buffered.rfind('\n')+1
rpos = self._buffered.rfind('\r')+1 rpos = self._buffered.rfind('\r')+1

View File

@ -85,7 +85,7 @@ class PywmSeti:
try: try:
wmdocklib.addString(s, x, y, digits, wmdocklib.addString(s, x, y, digits,
xOffset, yOffset, width, height) xOffset, yOffset, width, height)
except ValueError, e: except ValueError as e:
sys.stderr.write('Error when painting string:\n' + str(e) + '\n') sys.stderr.write('Error when painting string:\n' + str(e) + '\n')
sys.exit(3) sys.exit(3)
@ -137,7 +137,7 @@ class PywmSeti:
""" """
try: try:
os.kill(pid, 0) os.kill(pid, 0)
except OSError, e: except OSError as e:
if e.errno == 1: if e.errno == 1:
return -1 return -1
return 0 return 0
@ -146,7 +146,7 @@ class PywmSeti:
def openFileRead(self, fileName): def openFileRead(self, fileName):
try: try:
f = file(fileName, 'r') f = file(fileName, 'r')
except IOError, e: except IOError as e:
sys.stderr.write('Error when opening %s: %s\n' % (fileName, str(e))) sys.stderr.write('Error when opening %s: %s\n' % (fileName, str(e)))
return None return None
return f return f
@ -265,7 +265,7 @@ class PywmSeti:
if self._running: if self._running:
try: try:
os.kill(self._pid, 15) os.kill(self._pid, 15)
except OSError, e: except OSError as e:
sys.stderr.write( sys.stderr.write(
"Error when ending process: "+str(e)+'\n') "Error when ending process: "+str(e)+'\n')
else: else:
@ -309,7 +309,7 @@ def parseCommandLine(argv):
'indicatorcolor='] 'indicatorcolor=']
try: try:
opts, nonOptArgs = getopt.getopt(argv[1:], shorts, longs) opts, nonOptArgs = getopt.getopt(argv[1:], shorts, longs)
except getopt.GetoptError, e: except getopt.GetoptError as e:
sys.stderr.write('Error when parsing commandline: ' + str(e) + '\n') sys.stderr.write('Error when parsing commandline: ' + str(e) + '\n')
sys.stderr.write(usage) sys.stderr.write(usage)
sys.exit(2) sys.exit(2)
@ -459,7 +459,7 @@ def main():
# Merge the two configs, let the commandline options overwrite those in the # Merge the two configs, let the commandline options overwrite those in the
# configuration file. # configuration file.
config = fileConfig config = fileConfig
for i in clConfig.iteritems(): for i in clConfig.items():
config[i[0]] = i[1] config[i[0]] = i[1]
# Get the configurations # Get the configurations
setiDir = config.get('setidir') setiDir = config.get('setidir')
@ -472,7 +472,7 @@ def main():
setiDir = os.path.expanduser(setiDir) setiDir = os.path.expanduser(setiDir)
try: try:
os.chdir(setiDir) os.chdir(setiDir)
except OSError, e: except OSError as e:
sys.stderr.write('Error when accessing seti directory: %s\n' % str(e)) sys.stderr.write('Error when accessing seti directory: %s\n' % str(e))
sys.exit(4) sys.exit(4)
statePath = os.path.join(setiDir, stateFileName) statePath = os.path.join(setiDir, stateFileName)

View File

@ -95,8 +95,8 @@ class PywmSysMon:
Return a tuple with (total_mem, used_mem, buffered_mem, cached_mem). Return a tuple with (total_mem, used_mem, buffered_mem, cached_mem).
""" """
try: try:
meminfoFile = file(self._procMeminfo, 'r') meminfoFile = open(self._procMeminfo, 'r')
except IOError, e: except IOError as e:
sys.stderr.write("Can't open meminfo file: %s.\n" % str(e)) sys.stderr.write("Can't open meminfo file: %s.\n" % str(e))
sys.exit(2) sys.exit(2)
total = used = free = shared = buffers = cached = theLine = None total = used = free = shared = buffers = cached = theLine = None
@ -105,17 +105,17 @@ class PywmSysMon:
theLine = line theLine = line
break break
if line.startswith('MemTotal:'): if line.startswith('MemTotal:'):
total = long(line.split()[1]) total = int(line.split()[1])
if line.startswith('MemFree:'): if line.startswith('MemFree:'):
free = long(line.split()[1]) free = int(line.split()[1])
if line.startswith('Buffers:'): if line.startswith('Buffers:'):
buffers = long(line.split()[1]) buffers = int(line.split()[1])
if line.startswith('Cached:'): if line.startswith('Cached:'):
cached = long(line.split()[1]) cached = int(line.split()[1])
if free and total: if free and total:
used = total - free used = total - free
if theLine is not None: if theLine is not None:
parts = [long(x) for x in theLine.split()[1]] parts = [int(x) for x in theLine.split()[1]]
total, used, free, shared, buffers, cached = parts[:6] total, used, free, shared, buffers, cached = parts[:6]
if None in [total, used, buffers, cached]: if None in [total, used, buffers, cached]:
sys.stderr.write("Can't find memory information in %s.\n" % sys.stderr.write("Can't find memory information in %s.\n" %
@ -138,13 +138,13 @@ class PywmSysMon:
file. Return the usage in percent. file. Return the usage in percent.
""" """
try: try:
statFile = file(self._procStat, 'r') statFile = open(self._procStat, 'r')
except IOError, e: except IOError as e:
sys.stderr.write("Can't open statfile: %s.\n" % str(e)) sys.stderr.write("Can't open statfile: %s.\n" % str(e))
sys.exit(2) sys.exit(2)
line = statFile.readline() line = statFile.readline()
statFile.close() statFile.close()
cpu, nice, system, idle = [long(x) for x in line.split()[1:]][:4] cpu, nice, system, idle = [int(x) for x in line.split()[1:]][:4]
used = cpu + system used = cpu + system
if not self._ignoreNice: if not self._ignoreNice:
used += nice used += nice
@ -161,7 +161,7 @@ class PywmSysMon:
def addString(self, s, x, y): def addString(self, s, x, y):
try: try:
wmdocklib.addString(s, x, y, digits, xOffset, yOffset, width, height) wmdocklib.addString(s, x, y, digits, xOffset, yOffset, width, height)
except ValueError, e: except ValueError as e:
sys.stderr.write('Error when painting string:\n' + str(e) + '\n') sys.stderr.write('Error when painting string:\n' + str(e) + '\n')
sys.exit(3) sys.exit(3)
@ -244,7 +244,7 @@ def parseCommandLine(argv):
'procmeminfo=', 'ignorenice', 'updatedelay='] 'procmeminfo=', 'ignorenice', 'updatedelay=']
try: try:
opts, nonOptArgs = getopt.getopt(argv[1:], shorts, longs) opts, nonOptArgs = getopt.getopt(argv[1:], shorts, longs)
except getopt.GetoptError, e: except getopt.GetoptError as e:
sys.stderr.write('Error when parsing commandline: ' + str(e) + '\n') sys.stderr.write('Error when parsing commandline: ' + str(e) + '\n')
sys.stderr.write(usage) sys.stderr.write(usage)
sys.exit(2) sys.exit(2)