Zmiana rozmiaru terminala [C][linix]

0

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

0

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.

0

użyj wielo-platformowej biblioteki ncurses
Najlepiej jak równocześnie porzucisz standardowe wyjście/wejście.

0

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

1

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1