Szeretném, ha az ncurses-re alapozott programom megfelelő méretű terminálban indulna.
http://invisible-island.net/xterm/ctlseqs/ctlseqs.html szerint az xterm programból átméretezhető a
CSI P s ; Ps ; P s t
szekvenciával: P s = 8 ; height ; width → Resize the text area to [height;width] in characters.
Megpróbáltam így:
printf ("%cP8;P%c;P%ct",0x9b,43,132);
de semmi hatás. Aztán így:
printf ("%cP8;P43;P132t",0x9b);
Ebből sem lett semmi.
Hogyan kell ezt csinálni?
- 1343 megtekintés
Hozzászólások
echo -ne "\e[8;30;100t"
vagy \e helyett lehet \033 is, esetleg c-ben:
#include <stdio.h>
int main(int argc, char**argv) {
if (argc != 3) {
printf("Usage: %s <cols> <rows>\n", argv[0]);
return 1;
}
printf("%c[8;%s;%st", 0x1B, argv[2], argv[1]);
return 0;
}
Btw. ez nem csak xterm-re jó :)
Sőt, lehet szórakozni is, pl így:
while true; do echo -ne "\e[2t"; echo -ne "\e[1t"; done
- A hozzászóláshoz be kell jelentkezni
Köszönöm!
- A hozzászóláshoz be kell jelentkezni
Nem szerencsés, ha az ablak akarja megmondani a saját méreteit, s még kevésbé, ha egy konzolos cucc akar X-es ablakméretet. Jobb ha az ablakkezelő találja ki.
Inkább kérdezd le az aktuális méretet induláskor (lehet bonyolítani és figyelni állandóan, hogy változik-e), és sikítson a program, ha nem elég a terület.
- A hozzászóláshoz be kell jelentkezni
Ez egy avr mikrovezérlőkre készülő debugger, ahol nincs helye az átméretezésnek:
http://w3.hdsnet.hu/evoran/tmp/46x178.png
Ha már oda jut a dolog. hogy csak a SIGWINCH kezelése van hátra, az arra fog szolgálni, hogy megakadályozza a user screen összeomlasztási kísérleteit :)
- A hozzászóláshoz be kell jelentkezni
Amikor az xterm-et indítod, meg tudod mondani, hogy mekkora legyen (-g)
- A hozzászóláshoz be kell jelentkezni
Az a helyes, ha a karakteres program lekérdezi és tudomásul veszi, hogy mekkora terminálon fut éppen, és nem próbálja annak méretét erőszakkal megváltoztatni (nem minden terminálon megy ugyanis ez).
Sőt, az is nagyon hasznos, ha fel van rá készülve, hogy menet közben meg fog változni alatta a terminál (SIGWINCH), és kezeli ezt a szituációt is.
- A hozzászóláshoz be kell jelentkezni