How can I make `adb shell` have the correct terminal size?

So adb shell has an annoying bug where it doesn't realize that your graphical terminal app is larger than 80x24, so when you try to run any kind of full-screen console apps like vi or emacs (or any ncurses app), it does not take up the full screen, only a small portion of it. Is there a way to fix this easily?


Solution 1:

UPDATE (Feb. 2015): By now, you can just use "phablet-shell". No need to fiddle around with self built scripts any more. That said, if you want to, they should still work.


What I usually do is to use ssh instead of adb. That one configures the terminal properly (besides setting many other things up better than adb does).

Put this into your ~/.bash_aliases (on the host computer, not the device)

alias sd='adb shell start ssh; \
    adb forward tcp:2222 tcp:22; \
    ssh-keygen -f ~/.ssh/known_hosts -R [localhost]:2222; \
    ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
        phablet@localhost -p 2222'

and close/reopen the terminal window.

Now you can just do a "sd" (short for ssh device) and you'll be logged in as user phablet on the phone, with a properly configured terminal and a properly set up user environment.

Solution 2:

It's not a bug in the terminal - the default setup of the shell on android is just not configured to handle changing window sizes.

After you resize the actual terminal window, use the resize command - then use your fullscreen program.