X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTTerminalWindow.java;h=89280fd1d4d18d1b0a4ff0c05139dc916bb8c56a;hb=1d99a38f2b0f1f6674a21ba8b17be28bc7a34035;hp=4b8bec494071c4f88b504382319817ef90ac9771;hpb=be72cb5ccbd42fe304c0acafc380c5636f0d03a2;p=fanfix.git diff --git a/src/jexer/TTerminalWindow.java b/src/jexer/TTerminalWindow.java index 4b8bec4..89280fd 100644 --- a/src/jexer/TTerminalWindow.java +++ b/src/jexer/TTerminalWindow.java @@ -60,6 +60,13 @@ public class TTerminalWindow extends TScrollableWindow */ private Process shell; + /** + * If true, we are using the ptypipe utility to support dynamic window + * resizing. ptypipe is available at + * https://github.com/klamonte/ptypipe . + */ + private boolean ptypipe = false; + /** * Claim the keystrokes the emulator will need. */ @@ -165,10 +172,19 @@ public class TTerminalWindow extends TScrollableWindow String [] cmdShellBSD = { "script", "-q", "-F", "/dev/null" }; + String [] cmdShellPtypipe = { + "ptypipe", "/bin/bash", "--login" + }; // Spawn a shell and pass its I/O to the other constructor. ProcessBuilder pb; - if (System.getProperty("os.name").startsWith("Windows")) { + if ((System.getProperty("jexer.TTerminal.ptypipe") != null) + && (System.getProperty("jexer.TTerminal.ptypipe"). + equals("true")) + ) { + pb = new ProcessBuilder(cmdShellPtypipe); + ptypipe = true; + } else if (System.getProperty("os.name").startsWith("Windows")) { pb = new ProcessBuilder(cmdShellWindows); } else if (System.getProperty("os.name").startsWith("Mac")) { pb = new ProcessBuilder(cmdShellBSD); @@ -429,6 +445,14 @@ public class TTerminalWindow extends TScrollableWindow // Get out of scrollback setVerticalValue(0); + + if (ptypipe) { + emulator.setWidth(getWidth() - 2); + emulator.setHeight(getHeight() - 2); + + emulator.writeRemote("\033[8;" + (getHeight() - 2) + ";" + + (getWidth() - 2) + "t"); + } } return;