mirror of
https://github.com/dustinkirkland/byobu
synced 2025-08-22 06:23:19 -07:00
add functionality to screen-profiles-helper to change the escape key
sequence
This commit is contained in:
parent
9d0ed57e02
commit
c36d692f0d
2 changed files with 78 additions and 13 deletions
5
debian/changelog
vendored
5
debian/changelog
vendored
|
@ -10,9 +10,10 @@ screen-profiles (1.12) UNRELEASED; urgency=low
|
|||
|
||||
[ Dustin Kirkland and Nicolas Barcet]
|
||||
* screen-profiles-helper: add HOME, SHARE, DOC global variables and use
|
||||
them where possible
|
||||
them where possible; add functionality to change the escape key
|
||||
sequence
|
||||
|
||||
-- Dustin Kirkland <kirkland@ubuntu.com> Tue, 20 Jan 2009 23:06:36 -0600
|
||||
-- Dustin Kirkland <kirkland@ubuntu.com> Tue, 20 Jan 2009 23:41:20 -0600
|
||||
|
||||
screen-profiles (1.11-0ubuntu1) jaunty; urgency=low
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#! /usr/bin/env python
|
||||
#
|
||||
# GNU screen-profiles-helper
|
||||
# screen-profiles-helper
|
||||
# Copyright (C) 2008 Canonical Ltd.
|
||||
#
|
||||
# Authors: Nick Barcet <nick.barcet@ubuntu.com>
|
||||
|
@ -24,6 +24,7 @@ from snack import *
|
|||
HOME=os.getenv("HOME")
|
||||
SHARE='/usr/share/screen-profiles'
|
||||
DOC='/usr/share/doc/screen-profiles'
|
||||
DEF_ESC="A"
|
||||
|
||||
gettext.bindtextdomain('screen-profiles-helper', SHARE+'/po')
|
||||
gettext.textdomain('screen-profiles-helper')
|
||||
|
@ -66,15 +67,16 @@ def menu(screen, size, isInstalled):
|
|||
installtext=_("Install screen by default at login")
|
||||
|
||||
|
||||
li = Listbox(height = 5, width = 60, returnExit = 1)
|
||||
li = Listbox(height = 6, width = 60, returnExit = 1)
|
||||
li.append(_("Help"), 1)
|
||||
li.append(_("Change screen profile"), 2)
|
||||
li.append(_("Create new window(s)"), 3)
|
||||
li.append(_("Manage default windows"), 4)
|
||||
li.append(installtext, 5)
|
||||
li.append(_("Change escape sequence"), 3)
|
||||
li.append(_("Create new window(s)"), 4)
|
||||
li.append(_("Manage default windows"), 5)
|
||||
li.append(installtext, 6)
|
||||
bb = ButtonBar(screen, ((_("Ok"), "ok"), (_("Exit"), "exit")), compact = 1)
|
||||
|
||||
g = GridForm(screen, _("GNU Screen Profiles Menu"), 1, 2)
|
||||
g = GridForm(screen, _("Screen Profiles Menu"), 1, 2)
|
||||
g.add(li, 0, 0, padding=(4,2,4,2))
|
||||
g.add(bb, 0, 1, padding=(1,1,0,0))
|
||||
|
||||
|
@ -113,7 +115,7 @@ def help(screen, size, config):
|
|||
|
||||
cb=Checkbox(_("Display this help on startup"), isOn=cbOn)
|
||||
|
||||
g = GridForm(screen, _("GNU Screen Profiles Help"), 1, 3)
|
||||
g = GridForm(screen, _("Screen Profiles Help"), 1, 3)
|
||||
g.add(t, 0, 0, padding=(0,0,0,0))
|
||||
g.add(cb, 0, 1, padding=(1,0,0,0))
|
||||
g.add(bb, 0, 2, padding=(1,1,0,0))
|
||||
|
@ -320,6 +322,66 @@ def install(screen, size, isInstalled):
|
|||
|
||||
return 101
|
||||
|
||||
def getesckey():
|
||||
path=HOME+'/.screenrc-keybindings'
|
||||
if not os.path.exists(path):
|
||||
return DEF_ESC
|
||||
line = commands.getoutput("grep ^escape "+path)
|
||||
if line == "":
|
||||
return DEF_ESC
|
||||
return line[line.find('^')+1]
|
||||
|
||||
def setesckey(key):
|
||||
path = HOME+'/.screenrc-keybindings'
|
||||
if key != "":
|
||||
val = key[0].upper()+key[0].lower()
|
||||
if os.path.exists(path):
|
||||
out = commands.getoutput("grep ^escape "+path)
|
||||
if out != "":
|
||||
out = commands.getoutput("sed -i -e 's/^escape \^.*/escape ^"+val+"/' "+path)
|
||||
return
|
||||
f = open(path, 'a')
|
||||
try:
|
||||
f.write("escape ^"+val+"\n")
|
||||
except IOError:
|
||||
return
|
||||
finally:
|
||||
f.close()
|
||||
|
||||
def chgesc(screen, size):
|
||||
esc=Entry(2, text=getesckey(), returnExit=1)
|
||||
escl=Label(_("Escape key: ctrl-"))
|
||||
bb = ButtonBar(screen, ((_("Save"), "save"), (_("Cancel"), "cancel")), compact = 1)
|
||||
g = GridForm(screen, _("Change escape sequence:"), 2, 4 )
|
||||
g.add(escl, 0, 0, anchorLeft=1, padding=(1,0,0,1))
|
||||
g.add(esc, 1, 0, anchorLeft=1)
|
||||
g.add(bb, 1, 1)
|
||||
g.setTimer(100)
|
||||
loop=1
|
||||
while loop:
|
||||
which=g.run()
|
||||
if which == "TIMER":
|
||||
val=esc.value()
|
||||
if len(val) > 1:
|
||||
esc.set(val[1])
|
||||
# Ensure that the escape sequence is not set to a number
|
||||
try:
|
||||
dummy = int(esc.value())
|
||||
esc.set(DEF_ESC)
|
||||
except:
|
||||
# do nothing
|
||||
dummy = "foo"
|
||||
else:
|
||||
loop=0
|
||||
screen.popWindow()
|
||||
if bb.buttonPressed(which) != "cancel":
|
||||
setesckey(esc.value())
|
||||
button = messagebox(screen, 60, 2, _("Message"), \
|
||||
_("Restart screen to enact your changes."), \
|
||||
buttons=((_("Ok"),"ok"), (_("Exit"), "exit")) )
|
||||
if button == "exit":
|
||||
return 0
|
||||
return 100
|
||||
|
||||
def main():
|
||||
"""This is the main loop of our screen helper.
|
||||
|
@ -327,7 +389,7 @@ def main():
|
|||
|
||||
size = terminal_size()
|
||||
screen = SnackScreen()
|
||||
screen.drawRootText(1,0,_('GNU Screen Profiles Helper'))
|
||||
screen.drawRootText(1,0,_('Screen Profiles Helper'))
|
||||
screen.pushHelpLine(_('<Tab>/<Alt-Tab> between elements | <Return> Validates'))
|
||||
|
||||
config = SafeConfigParser()
|
||||
|
@ -354,10 +416,12 @@ def main():
|
|||
elif tag == 2:
|
||||
tag = profile(screen, size)
|
||||
elif tag == 3:
|
||||
tag = newwindow(screen, size)
|
||||
tag = chgesc(screen, size)
|
||||
elif tag == 4:
|
||||
tag = defaultwindows(screen, size)
|
||||
tag = newwindow(screen, size)
|
||||
elif tag == 5:
|
||||
tag = defaultwindows(screen, size)
|
||||
elif tag == 6:
|
||||
tag = install(screen, size, isInstalled)
|
||||
isInstalled=(tag == 100)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue