Bash, Terminal Xterm'i Yeniden Boyutlandır


2

Xterm tabanlı terminalleri yeniden boyutlandıran evrensel bir yerleşik komut arıyorum.

Bu, yeni bir pencere açmayacak, bu terminallerin başlattığı dosyaya dahil etmem gerekmeyecek bir tür komut.

60x30 çerçevede açılacak bir uygulama yapmak istiyorum, ancak yalnızca komutu çalıştırdıktan sonra

myapp run

Terminalimin her zaman 30x60'ta açılmasını istemiyorum, sadece myapp çalıştırdığımda yeniden boyutlandırılmasını istiyorum.

Yanıtlar:


2

Bir Mac'im yok, bu yüzden bunu deneyemiyorum ama wmctrlbir UNIX uygulaması . OSX için de çalışması gerekiyor . Gibi bir şey deneyin:

 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

Yerçekimi ( kaynak ) biri olabilir :

  • Kuzeybatı (1)
  • Kuzey (2),
  • Kuzeydoğu (3),
  • Batı (4),
  • Merkez (5),
  • Doğu (6),
  • Güneybatı (7),
  • Güney (8),
  • Güneydoğu (9)
  • Statik (10).

Yerçekimi 0, Pencere Yöneticisinin belirtilen yerçekimini kullanması gerektiğini belirtir WM_SIZE_HINTS.win_gravity.


2
@BlueIce Bunun için yerleşik bir yer bulamazsınız. Bash'in GUI hakkında bilgisi yok, neden olmasın?
terdon

3
Terminal uygulaması X11'i temel almadığından bu işlem OS X'de çalışmaz.
Daniel Beck

Soruyu uygun şekilde düzenlendi.
Blue Ice

2

Çoğu terminalin (Terminal.app dahil) kabul etmesi gereken bir ANSI çıkış sırası vardır:

$ echo -e "\e[8;30;60t"

Bu, terminalinizi 30 satır ve 60 sütun olacak şekilde yeniden boyutlandırır (istediğiniz boyutları yanlış anladıysam 30 ve 60'ı değiştirin).

Bu dize terminale yazıldığı sürece, herhangi bir yerden kullanabilirsiniz. Bir parçası yapabilir myappveya bir sarmalayıcı olarak bir kabuk işlevi oluşturabilirsiniz:

myapp () {
    echo -e "\e[8;30;60t"
    command myapp "$@"
}

Bir xterm çözümü arıyorum. Bu Linux üzerinde xterm üzerinde çalışmıyor gibi görünüyor.
Blue Ice,

Tek; bu standart bir kaçış dizisi. Bu belki sizin için daha iyi çalışacaktır, yazmak daha kolay olduğunu: resize -s 30 60. Bence cevapta verilenle aynı karakterleri çıktıyor.
chepner

Bu da işe yaramadı. Xterm'de çalışmaya xterm -geometry 30x60başladığım tek resize komutu , ancak bu sadece bu boyutlara sahip tamamen yeni bir pencere açar.
Blue Ice,

Aklıma gelen tek şey allowWindowOpskaynağın false olarak ayarlanmış ve kaçış dizisinin çalışmasını engelleyebilecek veya disallowedWindowOpsiçerdiğidir . 8SetWinSizeChars
chepner

Bunu nasıl değiştiririm? Ben çalıştırdığınızda resizekomut o VT100 dizileri koşamam döner. Sonra denedim resize -sbir şey yapmak ama sıfırlayarak boyutunu değiştirmek için bir komut dosyası görünmüyor komutu, $COLUMNSve $LINES. Senaryoyu denedim, ki hiçbir şey yapmıyor.
Blue Ice,

0

AppleScript'i deneyebilirsiniz. Tun vim için örnek:

#!/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 $@

Bu yerleşiktir ancak Terminal ve iTerm2'yi nasıl ayırt edeceğinizi öğrenmek zorunda kalabilirsiniz. Kullanıcılarınızın ne kullanmak istediğini biliyorsunuz ya da seçmelerine izin verdiniz (ya da daha zekice bir şey :-)).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.