en en ceb id en ru en en en en id en en en en jbo en en en fr en en en en en en az en en en en en it it en ca en en en en en en en en en en en it en en en ca en en en en en jbo en fa en en en eu en en en en en hbs_lat fr hbs_lat fr en en en en en en en en en en en en en hbs_lat hbs_lat ca en hbs_lat fr hbs_lat fr en en io io en en en en en en en fr fr en en en en en pt pt es es hbs_lat fr hbs_lat fr de de kn kn en ru bar bar en en de de hbs_lat fr hbs_lat fr kn kn ru ru en en uk uk az az kn kn hbs_lat fr hbs_lat fr az az kn kn ko en en de kn kn hbs_lat hbs_lat en en en en hbs_lat fr hbs_lat fr kn kn kn kn kn kn en en en en en en kn en fr en en en en kn ko uk kn en en ceb az kn en en en kn ar ru en tr en kn en zh uk kn ja kn en en en en en en en en
Commit 9bc7baa2 authored Sep 10, 2021 by Addshore 🏄 Committed by Addshore Sep 10, 2021
dev: Resize terminal on exec commands
@@ -22,12 +22,14 @@ import (
@@ -22,12 +22,14 @@ import (
@@ -60,7 +62,7 @@ func (m MWDD) DockerExec(command DockerExecCommand) {
@@ -60,7 +62,7 @@ func (m MWDD) DockerExec(command DockerExecCommand) {
@@ -71,7 +73,7 @@ func (m MWDD) DockerExec(command DockerExecCommand) {
@@ -71,7 +73,7 @@ func (m MWDD) DockerExec(command DockerExecCommand) {
response, err := cli.ContainerExecCreate(ctx, containerID, config)
response, err := cli.ContainerExecCreate(ctx, containerID, execConfig)
if err != nil {
if err != nil {
@@ -92,6 +94,13 @@ func (m MWDD) DockerExec(command DockerExecCommand) {
@@ -92,6 +94,13 @@ func (m MWDD) DockerExec(command DockerExecCommand) {
if err := monitorTtySize(ctx, cli, execID, true); err != nil {
fmt.Println("Error monitoring TTY size:")
// When TTY is ON, just copy stdout https://phabricator.wikimedia.org/T282340
// When TTY is ON, just copy stdout https://phabricator.wikimedia.org/T282340
@@ -119,3 +128,49 @@ func (m MWDD) DockerExec(command DockerExecCommand) {
@@ -119,3 +128,49 @@ func (m MWDD) DockerExec(command DockerExecCommand) {
// MonitorTtySize updates te container tty size when te terminal tty changes size
func monitorTtySize(ctx context.Context, client client.APIClient, id string, isExec bool) error {
resizeTty := func() {
width, height, _ := terminal.GetSize(0)
resizeTtyTo(ctx, client, id, uint(height), uint(width), isExec)
sigchan := make(chan os.Signal, 1)
for range sigchan {
func resizeTtyTo(ctx context.Context, client client.ContainerAPIClient, id string, height, width uint, isExec bool) {
if height == 0 && width == 0 {
err = client.ContainerExecResize(ctx, id, options)
err = client.ContainerResize(ctx, id, options)
_ = err // Ignore this error for now.
if err != nil {
0% Try again or attach a new file . Attach a file Cancel
You are about to add 0 people to te discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment