Sida 1 av 1

Hur får jag aktuell upplösning i X till ett shell script?

Postat: 01 feb 2008, 21:40
av rancor
Hellu!

Jag vill få aktuell upplösning till en variabel i ett shell script.
#!/bin/sh
# Script for running rdesktop
if [ $# -ne 1 ]; then
echo 1>&2 Usage: rdp [host]
exit 127
fi

# Keep key binding
rdesktop -0 -ksv -D -K -g1280x800 $1&
För att få aktuell upplösning kan man köra:
xrandr|grep "*"
Problemet är att det följer med oönskade tecken för jag vill bara få ut 1280x800 och inte hela " 1280x800 50.0*"

Jag har testat med awk men inte lyckats sortera ut olika fält när men innehåller space

Tacksam för hjälp

SV: Hur får jag aktuell upplösning i X till ett shell script?

Postat: 01 feb 2008, 22:06
av Konservburk

Kod: Markera allt

xrandr | awk '/\*/{print$1}'

SV: Hur får jag aktuell upplösning i X till ett shell script?

Postat: 01 feb 2008, 22:07
av Lars
Tänk på att använda ' istället för ", annars så översätts $1 till andra argumentet till ditt skript.

Kod: Markera allt

rdesktop -0 -ksv -D -K -g$(xrandr | awk '/*/ {print $1}') $1 &
P.S. Konservburk hann visst före

SV: Hur får jag aktuell upplösning i X till ett shell script?

Postat: 01 feb 2008, 22:11
av rancor
Tack så mycket!!

Jag har försökt lära mig awk men det är rätt mycket "fnuttologi".

Vad är skillnaden mellan
xrandr | awk '/\*/{print$1}'

och

xrandr | awk '/*/ {print $1}'

SV: Hur får jag aktuell upplösning i X till ett shell script?

Postat: 01 feb 2008, 22:32
av Konservburk
rancor skrev: Vad är skillnaden mellan
xrandr | awk '/\*/{print$1}'

och

xrandr | awk '/*/ {print $1}'
I det här fallet ingen skillnad.  Jag escapar alltid * med \ eftersom just *
betyder föregående tecken 0 eller flera gånger.  Men den här gången fanns
det inget tecken innan så det går att utelämna \. Mellanrummen är bara för
läsligheten.

Men du kanske ska se upp med just xrandr.  Jag vet att det finns versioner
som ger utdata så här:

Kod: Markera allt

$ xrandr                        
 SZ:    Pixels          Physical       Refresh
*0   1600 x 1200   ( 406mm x 305mm )  *50  
...
Och råkar du ut för en sådan version så kommer inte ditt skript att fungera.
Det är nog bättre att helt enkelt ta reda på root-fönstrets geometri:

Kod: Markera allt

xwininfo -root | awk '/-geometry/{print$2}'

SV: Hur får jag aktuell upplösning i X till ett shell script?

Postat: 01 feb 2008, 22:49
av rancor
Konservburk skrev:
rancor skrev: Vad är skillnaden mellan
xrandr | awk '/\*/{print$1}'

och

xrandr | awk '/*/ {print $1}'
I det här fallet ingen skillnad.  Jag escapar alltid * med \ eftersom just *
betyder föregående tecken 0 eller flera gånger.  Men den här gången fanns
det inget tecken innan så det går att utelämna \. Mellanrummen är bara för
läsligheten.

Men du kanske ska se upp med just xrandr.  Jag vet att det finns versioner
som ger utdata så här:

Kod: Markera allt

$ xrandr                        
 SZ:    Pixels          Physical       Refresh
*0   1600 x 1200   ( 406mm x 305mm )  *50  
...
Och råkar du ut för en sådan version så kommer inte ditt skript att fungera.
Det är nog bättre att helt enkelt ta reda på root-fönstrets geometri:

Kod: Markera allt

xwininfo -root | awk '/-geometry/{print$2}'
Tack.

Då kommer en följdfråga.

xwininfo -root | awk '/-geometry/{print$2}' gav följande resultat
jory01@wishmaster:~/Desktop$ xwininfo -root | awk '/-geometry/{print$2}'
1280x800+0+0
Fick du XxY eller så som jag fick XxY+0+0?

SV: Hur får jag aktuell upplösning i X till ett shell script?

Postat: 01 feb 2008, 23:00
av Konservburk
rancor skrev: xwininfo -root | awk '/-geometry/{print$2}' gav följande resultat
jory01@wishmaster:~/Desktop$ xwininfo -root | awk '/-geometry/{print$2}'
1280x800+0+0
Fick du XxY eller så som jag fick XxY+0+0?
Jag får precis som de en x-geometri-sträng, dvs WxH+X+Y. Men det ska inte
vara något problem med rdesktop.

Jag kollade just manualbladet till rdesktop och det verkar som att flaggan
-g kan ta ett procentargument, dvs det vill göra blir mycket enklare:

Kod: Markera allt

rdesktop -g100%

SV: Hur får jag aktuell upplösning i X till ett shell script?

Postat: 01 feb 2008, 23:34
av rancor
Konservburk skrev:
rancor skrev: xwininfo -root | awk '/-geometry/{print$2}' gav följande resultat
jory01@wishmaster:~/Desktop$ xwininfo -root | awk '/-geometry/{print$2}'
1280x800+0+0
Fick du XxY eller så som jag fick XxY+0+0?
Jag får precis som de en x-geometri-sträng, dvs WxH+X+Y. Men det ska inte
vara något problem med rdesktop.

Jag kollade just manualbladet till rdesktop och det verkar som att flaggan
-g kan ta ett procentargument, dvs det vill göra blir mycket enklare:

Kod: Markera allt

rdesktop -g100%
:-[  men...  underbart  ;D  lite pinsamt att man inte gick den enkla vägen och läste manualen ordentligt.

Stort tack!

// rancor