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

Här diskuteras programmering och utveckling
Användarvisningsbild
rancor
Inlägg: 1649
Blev medlem: 18 maj 2006, 23:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

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

Inlägg 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
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

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

Inlägg av Konservburk »

Kod: Markera allt

xrandr | awk '/\*/{print$1}'
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

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

Inlägg 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
Användarvisningsbild
rancor
Inlägg: 1649
Blev medlem: 18 maj 2006, 23:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

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

Inlägg 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}'
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

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

Inlägg 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}'
Senast redigerad av 1 Konservburk, redigerad totalt 1 gånger.
Användarvisningsbild
rancor
Inlägg: 1649
Blev medlem: 18 maj 2006, 23:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

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

Inlägg 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?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

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

Inlägg 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%
Användarvisningsbild
rancor
Inlägg: 1649
Blev medlem: 18 maj 2006, 23:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

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

Inlägg 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
Skriv svar

Återgå till "Programmering och webbdesign"