From 66a11162dae7a54bf87c025c2a87379135daa160 Mon Sep 17 00:00:00 2001 From: Dustin Kirkland Date: Wed, 9 Jan 2013 14:11:56 -0600 Subject: [PATCH] * usr/bin/byobu-config, usr/bin/byobu-ctrl-a, usr/share/doc/byobu/help.screen.txt: - update python code for python3 compatibility --- debian/changelog | 3 ++ usr/bin/byobu-config | 75 ++++++++++++++--------------- usr/bin/byobu-ctrl-a | 6 ++- usr/share/doc/byobu/help.screen.txt | 2 +- 4 files changed, 45 insertions(+), 41 deletions(-) diff --git a/debian/changelog b/debian/changelog index 21e3ce31..b079489a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,9 @@ byobu (5.25) unreleased; urgency=low * usr/bin/byobu-status: - move tmux-specific width code into tmux case block + * usr/bin/byobu-config, usr/bin/byobu-ctrl-a, + usr/share/doc/byobu/help.screen.txt: + - update python code for python3 compatibility -- Dustin Kirkland Wed, 09 Jan 2013 09:49:47 -0600 diff --git a/usr/bin/byobu-config b/usr/bin/byobu-config index 42810dbf..3f30cb97 100755 --- a/usr/bin/byobu-config +++ b/usr/bin/byobu-config @@ -26,11 +26,10 @@ import os import os.path import time import string -import commands +import subprocess import gettext import glob import snack -from ConfigParser import SafeConfigParser from snack import * PKG = "byobu" @@ -49,14 +48,9 @@ if not os.path.exists(DOC): DEF_ESC = "A" RELOAD = "If you are using the default set of keybindings, press\n or to activate these changes.\n\nOtherwise, exit this session and start a new one." RELOAD_FLAG = "%s/reload-required" % (BYOBU_CONFIG_DIR) -RELOAD_CMD = "%s -X at 0 source %s/profile" % (BYOBU_BACKEND, BYOBU_CONFIG_DIR) ESC = '' snack.hotkeys[ESC] = ord(ESC) snack.hotkeys[ord(ESC)] = ESC -if commands.getstatusoutput('which gsed')[0] == 0: - BYOBU_SED = "gsed" -else: - BYOBU_SED = "sed" gettext.bindtextdomain(PKG, SHARE + '/po') gettext.textdomain(PKG) _ = gettext.gettext @@ -78,10 +72,11 @@ def ioctl_GWINSZ(fd): def reload_required(): try: if not os.path.exists(BYOBU_CONFIG_DIR): - os.makedirs(BYOBU_CONFIG_DIR, 0755) + os.makedirs(BYOBU_CONFIG_DIR, 0o755) f = open(RELOAD_FLAG, 'w') f.close() - commands.getoutput(RELOAD_CMD) + if BYOBU_BACKEND == "screen": + subprocess.call([BYOBU_BACKEND, "-X", "at", "0", "source", "%s/profile" % BYOBU_CONFIG_DIR]) except: True @@ -137,12 +132,11 @@ def messagebox(snackScreen, width, height, title, text, scroll=0, buttons=((_("O return bb.buttonPressed(g.runOnce()) -def help(snackScreen, size, config): - f = file(DOC + '/help.' + BYOBU_BACKEND + '.txt') +def help(snackScreen, size): + f = open(DOC + '/help.' + BYOBU_BACKEND + '.txt') text = f.read() f.close() text = text.replace("", getesckey(), 1) - text = text.replace("_VER_", commands.getoutput("byobu -v | head -n1 | " + BYOBU_SED + " 's/.* //'"), 1) t = Textbox(67, 16, text, scroll=1, wrap=1) bb = ButtonBar(snackScreen, ((_("Menu"), "menu", ESC),), compact=1) g = GridForm(snackScreen, _("Byobu Help"), 2, 4) @@ -159,7 +153,7 @@ def readstatus(): for f in [SHARE + '/status/status', BYOBU_CONFIG_DIR + '/status']: if os.path.exists(f): try: - execfile(f, glo, loc) + exec(open(f).read(), glo, loc) except: error("Invalid configuration [%s]" % f) if BYOBU_BACKEND == "tmux": @@ -174,8 +168,7 @@ def readstatus(): status[i] = "1" li = [] keys = status.keys() - keys.sort() - for i in keys: + for i in sorted(keys): window = [int(status[i]), i] li.append(window) return li @@ -185,7 +178,7 @@ def genstatusstring(s, status): new = "" glo = {} loc = {} - execfile(SHARE + '/status/status', glo, loc) + exec(open(SHARE + '/status/status').read(), glo, loc) for i in loc[s].split(): if i.startswith("#"): i = i.replace("#", "") @@ -201,17 +194,19 @@ def writestatus(items): path = BYOBU_CONFIG_DIR + '/status' for i in items: status[i[1]] = i[0] - # BYOBU_SED is hacky here, but effective - if BYOBU_BACKEND == "tmux": - for key in ["tmux_left", "tmux_right"]: - val = genstatusstring(key, status) - commands.getoutput("%s -i -e '/^%s=/d' %s" % (BYOBU_SED, key, path)) - commands.getoutput("echo '%s=\"%s\"' >> %s" % (key, val, path)) - else: - for key in ["screen_upper_left", "screen_upper_right", "screen_lower_left", "screen_lower_right"]: - val = genstatusstring(key, status) - commands.getoutput("%s -i -e '/^%s=/d' %s" % (BYOBU_SED, key, path)) - commands.getoutput("echo '%s=\"%s\"' >> %s" % (key, val, path)) + for key in ["tmux_left", "tmux_right", "screen_upper_left", "screen_upper_right", "screen_lower_left", "screen_lower_right"]: + if key.startswith(BYOBU_BACKEND): + f = open(path, "r") + lines = f.readlines() + f.close() + f = open(path, "w") + for l in lines: + if l.startswith("%s=" % key): + val = genstatusstring(key, status) + f.write("%s=\"%s\"\n" % (key, val)) + else: + f.write(l) + f.close def togglestatus(snackScreen, size): @@ -240,15 +235,14 @@ def togglestatus(snackScreen, size): def install(snackScreen, size, isInstalled): + out = "" if isInstalled: - out = commands.getoutput("byobu-launcher-uninstall") - if out == "": + if subprocess.call(["byobu-launcher-uninstall"]) == 0: out = _("Byobu will not be launched next time you login.") button = messagebox(snackScreen, 60, 2, _("Message"), out, buttons=((_("Menu"), ))) return 101 else: - out = commands.getoutput("byobu-launcher-install") - if out == "": + if subprocess.call(["byobu-launcher-install"]) == 0: out = _("Byobu will be launched automatically next time you login.") button = messagebox(snackScreen, 60, 2, "Message", out, buttons=((_("Menu"), ))) return 100 @@ -266,12 +260,17 @@ def appendtofile(p, s): def getesckey(): + line = "" if BYOBU_BACKEND == "tmux": path = BYOBU_CONFIG_DIR + '/keybindings.tmux' - line = commands.getoutput("grep '^set -g prefix ' " + path) + for l in open(path): + if l.startswith("set -g prefix "): + line = l else: path = BYOBU_CONFIG_DIR + '/keybindings' - line = commands.getoutput("grep ^escape " + path) + for l in open(path): + if l.startswith("escape "): + line = l if not os.path.exists(path): return DEF_ESC if line == "": @@ -284,7 +283,7 @@ def getesckey(): def setesckey(key): if key.isalpha(): - out = commands.getoutput("byobu-ctrl-a screen %s" % key) + subprocess.call(["byobu-ctrl-a", "screen", key]) def chgesc(snackScreen, size): @@ -328,8 +327,9 @@ def chgesc(snackScreen, size): def autolaunch(): if os.path.exists(BYOBU_CONFIG_DIR + "/disable-autolaunch"): return 0 - if commands.getstatusoutput('grep -qs byobu-launch %s/.profile' % HOME)[0] == 0: - return 1 + for line in open("%s/.profile" % HOME): + if "byobu-launch" in line: + return 1 if os.path.exists("/etc/profile.d/Z98-%s.sh" % PKG): return 1 return 0 @@ -341,13 +341,12 @@ def main(): snackScreen = SnackScreen() snackScreen.drawRootText(1, 0, _('Byobu Configuration Menu')) snackScreen.pushHelpLine(_(' between elements | selects | exits')) - config = SafeConfigParser() isInstalled = autolaunch() tag = 100 while tag > 0: tag = menu(snackScreen, size, isInstalled) if tag == 1: - tag = help(snackScreen, size, config) + tag = help(snackScreen, size) elif tag == 2: tag = togglestatus(snackScreen, size) elif tag == 3: diff --git a/usr/bin/byobu-ctrl-a b/usr/bin/byobu-ctrl-a index 1640439a..8e6fa111 100755 --- a/usr/bin/byobu-ctrl-a +++ b/usr/bin/byobu-ctrl-a @@ -125,7 +125,9 @@ case "$bind_to" in ;; esac -echo "To modify this behavior again later, run 'byobu-ctrl-a'" -echo +if [ -z "${2}" ]; then + echo "To modify this behavior again later, run 'byobu-ctrl-a'" + echo +fi # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/share/doc/byobu/help.screen.txt b/usr/share/doc/byobu/help.screen.txt index 31b477fc..0df4701b 100644 --- a/usr/share/doc/byobu/help.screen.txt +++ b/usr/share/doc/byobu/help.screen.txt @@ -1,4 +1,4 @@ -Byobu _VER_ is an enhancement to GNU Screen, a command line +Byobu is an enhancement to GNU Screen, a command line tool providing live system status, dynamic window management, and some convenient keybindings: