我正在寻找一个可以调整基于 Xterm 的终端大小的通用内置命令。
这是一种不会创建新窗口的命令,我不需要将其包含在这些终端启动的文件中。
我想制作一个在 60x30 框架中打开的应用程序,但只有在运行命令后
myapp run
我不希望我的终端总是以 30x60 打开,我只是希望它在我运行 myapp 时调整大小。
答案1
我没有 Mac,所以没法尝试,但是wmctrl
是一个 UNIX 应用程序,因此应该也适用于 OSX。尝试以下操作:
wmctrl -r :ACTIVE: -e 5,-1,-1,660,540
----------- -- -- -- --- ---
| | | | | |---> Window height
| | | | |-------> Window width
| | | |-----------> Window Y coordinates
| | |--------------> Window X coordinates
| |----------------> Gravity
|--------------------------> Apply to the active window
引力可以是(来源):
- 西北 (1)
- 北 (2),
- 东北地区 (3)、
- 西 (4),
- 中锋(5)
- 东 (6),
- 西南航空 (7)、
- 南 (8),
- 东南 (9)
- 静态(10)。
重力为 0 表示窗口管理器应使用 中指定的重力
WM_SIZE_HINTS.win_gravity
。
答案2
大多数终端(包括 Terminal.app)都应该接受一个 ANSI 转义序列:
$ echo -e "\e[8;30;60t"
这会将您的终端大小调整为 30 行和 60 列(如果我误解了您想要的尺寸,请交换 30 和 60)。
只要将此字符串写入终端,您就可以从任何地方使用它。您可以将其作为 的一部分myapp
,或者创建一个 shell 函数作为包装器:
myapp () {
echo -e "\e[8;30;60t"
command myapp "$@"
}
答案3
您可以尝试 AppleScript。这里有一个调整 vim 的示例:
#!/bin/sh
# Script runvim.sh
osascript <<EOF
tell app "Terminal"
set number of rows of first window to 34
set number of columns of first window to 96
set custom title of first window to "vim"
end tell
EOF
vim $@
这是内置的,但您可能需要找出如何区分终端和 iTerm2。要么您知道用户想要使用什么,要么让他们自己选择(或者更聪明的方法 :-))。