Portál AbcLinuxu, 12. května 2025 18:03

Dotaz: BASH: Zjištění aktuálního rozlišení monitoru

25.4.2011 11:05 Alfons
BASH: Zjištění aktuálního rozlišení monitoru
Přečteno: 1103×
Odpovědět | Admin
Dobrý den. Potřebuju BASHEM zjistit, jaké rozlišení zrovna systém používá a furt na to ne a ne přijít. Neví někdo? Předem děkuju.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.4.2011 11:13 NN
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Odpovědět | | Sbalit | Link | Blokovat | Admin
xrandr -q|grep '^\*'
NN
David Watzke avatar 25.4.2011 11:45 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
To (bohužel) zcela určitě není univerzální a spolehlivý způsob, třeba u mě to nefungovalo nejdřív proto, že xrandr nemám a potom, když jsem jej nainstaloval, proto, že výstup vypadá takto:
$ xrandr -q
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1366x768       60.0*+
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
Na notebooku mýho kámoše to třeba nevypíše nic. Podle mě není žádný univerzální způsob, jak to zjistit. Ale pokud je to jen pro nějaký lokální skript, tak je to buřt a třeba s mou verzí xrandru by stačilo jen upravit regex u toho grepu.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
25.4.2011 12:19 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru

Presne ako ste poznamenali, ani u mna to nejde zial.

 

Nasledujuce vsak ide a malo by to vypisat pre vsetky screeny aktualne rozlisenie:

xrandr -q 2>/dev/null | sed -e '/^Screen\ [0-9]*/!d' -e 's/^Screen\ [0-9]*:.*current\ \(.*\),.*$/\1/g'

Da sa vsak nasledujucim sposobom vybrat len dany screen, ak je to nutne:

declare -i SCREEN=0; xrandr -q 2>/dev/null | sed -e "/^Screen\ ${SCREEN}/"\!d -e "s/^Screen\ ${SCREEN}:.*current\ \(.*\),.*\$/\1/g"

 

Pevne dufam, ze sme k cielu blizsie. :)

25.4.2011 16:05 Alfons
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Děkuju za popostrčení. Xrandr | sed q
Řešení 1× (ph0enix)
25.4.2011 12:17 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Odpovědět | | Sbalit | Link | Blokovat | Admin
$ xdpyinfo |grep -B 1 dimensions
screen #0:
  dimensions:    1680x1050 pixels (431x272 millimeters)
25.4.2011 19:32 l4m4
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Odpovědět | | Sbalit | Link | Blokovat | Admin
BASHEM to nejde.
26.4.2011 16:33 ph0enix | skóre: 18 | Praha
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jedna se o rozliseni X serveru (v bodech), nebo terminalu (radky a sloupce)? Pro X server uz tu par tipu bylo. Pro terminal muzes zkusit napriklad
stty -a  | grep -e rows -e columns | \
  sed -e 's/ = / /g' -e 's/.*\(rows [[:digit:]]*; columns [[:digit:]]*\).*/\1/' \
  -e 's/; /\^J/' -e 's/ /=/g'
Jenz vrati rozmery terminalu ve formatu
rows=24
columns=151
Otestovano v HP-UX 11.11, Red Hat Linux AS 4 a 5.3. Pozor, ^J je jeden znak (konec radku).
27.4.2011 00:26 Ash | skóre: 53
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Zbaveno nadbytečné magie:
stty -a | \
 sed -n -e 's/.*\(rows\) \([[:digit:]]*\); \(columns\) \([[:digit:]]*\).*/\1=\2\n\3=\4/p'
Řešení 1× (ph0enix)
27.4.2011 01:00 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru

Zbaveno akejkolvek magie. :) Lokalne premenne v bash-i su COLUMNS a LINES, reprezentujuce pocet stlpcov (znakov) a pocet riadkov v aktualnom terminaly.

echo ${COLUMNS}
echo ${LINES}

Takze pokial uz bezi bash, tak nevidim dovod to nejakym sposobom znova dolovat odniekial.

27.4.2011 09:31 ph0enix | skóre: 18 | Praha
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Pravda, to jsem si neuvedomil. A neni to jen zalezitost bashe, ale ksh ci posixovy shell na HP-UX ma uvedene promenne nastavany tez.
David Watzke avatar 27.4.2011 09:55 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Když na Solarisu (SunOS 5.10) pustím "sh", tak to v něm nejde.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
27.4.2011 10:18 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru

No a to bude ten spravny okamih, kedy si to skusit dopocitat pomocou vyssie uvedenych metod. Overit, ci dana premenna existuje, ci nie, je bezproblemov a pre ostatne sa pouzije nieco vyssie spomenute. :)

David Watzke avatar 27.4.2011 13:10 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Na Solarisu v sh nejde ani jedna z těch metod :-) To od Ashe nevypíše nic a to první řve, že grep nezná přepínač -e. Výstupy:
sunray1> stty -a
speed 38400 baud; 
rows = 41; columns = 159; ypixels = 0; xpixels = 0;
csdata ?
eucw 1:0:0:0, scrw 1:0:0:0
intr = ^c; quit = ^\; erase = ^?; kill = ^u;
eof = ^d; eol = �; eol2 = �; swtch = <undef>;
start = ^q; stop = ^s; susp = ^z; dsusp = ^y;
rprnt = ^r; flush = ^o; werase = ^w; lnext = ^v;
-parenb -parodd cs8 -cstopb -hupcl cread -clocal -loblk -crtscts -crtsxoff -parext 
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -iuclc 
ixon -ixany ixoff -imaxbel 
isig icanon -xcase echo echoe echok -echonl -noflsh 
-tostop echoctl -echoprt echoke -defecho -flusho -pendin iexten 
opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel tab3 

sunray1> stty
speed 38400 baud; -parity 
rows = 41; columns = 159; ypixels = 0; xpixels = 0;
eol = �; eol2 = �; swtch = <undef>; 
brkint -inpck -istrip icrnl -ixany ixoff onlcr tab3 
echo echoe echok echoctl echoke iexten
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
27.4.2011 16:18 Ash | skóre: 53
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Tak to je klika že se tazatel ptal na Bash, protože na mobilu bez Bashe mi to také nejede.

Ale v případě sh na Solarisu je rozdíl jen v oddělovačích mezi "rows/columns" a hodnotou (rovnítka), tak to si portér... portotvač... přenašeš... prostě člověk co to tam potřebuje snadno upraví.
David Watzke avatar 27.4.2011 16:46 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Tak to je klika že se tazatel ptal na Bash, protože na mobilu bez Bashe mi to také nejede.
Jo no, my unixáci máme tendenci všechno dělat pokud možno tak, aby to běželo skoro všude :-D
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
27.4.2011 09:22 ph0enix | skóre: 18 | Praha
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
A napriklad i podpory HP-UX kde je vystup stty mirne odlisny...
$ stty -a | grep -i rows
rows = 62; columns = 157
Tazateli to ale zrejme bude stacit. Tedy pokud je to to, nac se ptal.
27.4.2011 16:19 Ash | skóre: 53
Rozbalit Rozbalit vše Re: BASH: Zjištění aktuálního rozlišení monitoru
Podle mne se při dotazu na "rozlišení monitoru" tutově ptal na rozlišení v grafice :) A to xdpiinfo je snad ok.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.