Cześć, Szukam od tygodnia (odziwo nie znalazłem) jak zmienić rozmiar terminala w języku C by zawsze gdy odpale program był ustawiony rozmiar 130x30. Wiem że dam radę to w windows.h ale nie mogę znaleźć jak to zrobić. Jakby ktoś miał czas i wie gdzie coś takiego wyjaśnięte to poproszu o podesłanie linku albo kodu jak coś takiego robi. Dzięki i pozdrawiam
Nie jest to takie proste, ze względu na to, że Linux ma znacznie bardzo modularną strukturę. W związku z tym nie ma jednoznacznego sposobu na to. Chyba…
Jak rozumiem, chodzi ci o środowika X (bo w „gołej konsoli” to sprawa ograniczałaby się do zmiany trybu graficznego, to można dość prosto zmienić). W przypadku środowiska okienkowego jest trochę trudniej.
Wydaje mi się, że na początek ustalić numer procesu terminala. Wysoce prawdopodobne, że znajdziesz zmienną środowiskową (funkcja getenv
) WINDOWID.
Potem musisz użyć API Xliba, żeby zmienić rozmiar tego okna. Chyba tego ci trzeba: https://tronche.com/gui/x/xlib/window/XResizeWindow.html Nie jestem do końca pewny jak uzyskać obiekt Window
na podstawie id, które masz w zmiennej środowiska.
użyj wielo-platformowej biblioteki ncurses
Najlepiej jak równocześnie porzucisz standardowe wyjście/wejście.
Chcesz to robić "programistycznie", czy wystarczy Ci że aplikacja otworzy się w terminalu o konkretnym rozmiarze ?
mate-terminal --geometry 130x20 -e "top"
Jeśli nie chcesz startować nowego terminala
resize -s 20 130 # zwróć uwagę na odwróconą kolejność
./my_program
Rozwiązanie korzystające z kodów kontrolnych xterm-a (ale musisz mieć świadomość, że WM może to zablokować)
#include <stdio.h>
int main(void)
{
puts("\x1B[8;50;132t");
return 0;
}
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
\x1B - ESC
ESC [
Control Sequence Introducer
CSI Ps ; Ps ; Ps t
...
Ps = 8 ; height ; width ⇒ Resize the text area to given
height and width in characters. Omitted parameters reuse the
current height or width. Zero parameters use the display's
height or width.