[Risolto] Quinto Contest

Fatto! Ho appena appiccicato i gradi a mannaggia.

[quote]
Mario la pagherà a me e Sandro a Virus e Robyduck.[/quote]
:-o ehy ma questo dove stava scritto??? :slight_smile:

Comunque ci tengo a fare delle precisazioni e a riportare lo script che avevamo creato:

$ cat switch.sh 
#!/bin/bash - 
#===============================================================================
#
#          FILE:  switch.sh
# 
#         USAGE:  ./switch.sh 
# 
#   DESCRIPTION:  Switch audio e video
# 
#       OPTIONS:  ---
#  REQUIREMENTS:  pactl awk xrandr
#          BUGS:  ---
#         NOTES:  ---
#        AUTHOR: FOL
#       COMPANY: 
#       CREATED: 12/12/2010 13:15:18 CET
#      REVISION:  ---
#===============================================================================

set -o nounset                              # Treat unset variables as an error

PROFILO_AUDIO=`pactl list|awk '/Profilo attivo:/ {print $3}'|cut -d":" -f2|cut -d"+" -f1`
PROFILO_VIDEO=`xrandr --q1|awk '/*[0-9]/ {print substr($1,2)}'`

if  $PROFILO_AUDIO = 'iec958-stereo' ]; then
    pactl set-card-profile 0 "output:analog-surround-40+input:analog-stereo"
    if  $PROFILO_VIDEO = 0 ];then
        xrandr -r 51.0 -s 1440x900
    fi
elif  $PROFILO_AUDIO = 'analog-surround-40' ] ||  $PROFILO_AUDIO = 'analog-stereo' ]; then
    pactl set-card-profile 0 "output:iec958-stereo+input:analog-stereo"
    if  $PROFILO_VIDEO = 1 ];then
        xrandr -r 50.0 -s 2720x900
    fi
fi

L’ouptut erroneo di xrandr è causato dal fatto che la versione di xrandr usa un protocollo avanzato non supportato dai driver Nvidia proprietari. Questi ultimi usano il protocollo 1.1. L’errore che ottengo io dallo script di Mannaggia o l’errore di cui parlava Moreno può essere eliminato forzando il comando xrandr ad usare la versione 1.1 con l’opzione -q1:

$ xrandr --q1
 SZ:    Pixels          Physical       Refresh
 0   2720 x 900    ( 332mm x 211mm )   50  
*1   1440 x 900    ( 332mm x 211mm )  *51  
Current rotation - normal
Current reflection - none
Rotations possible - normal 
Reflections possible - none

Come vedete non c’è errore. Per lo script di Mannaggia l’errore è causato da questa riga:

[quote]
CURRENT=xrandr -q | awk -F'current' -F',' '{gsub("( |current)","");print $2}' [/quote]

Gli “errori” che vengono restituiti da pacmd possono essere risolti in modo forse poco pulito come proposto da Mannaggia, meglio ancora è usare uno strumenti apposito che si chiama pactl, come vedete nel mio ultimo script.

Il contest non era impossibile e Mannaggia è stato molto bravo(anche perché ha usato notify-send per abbellire lo script e dare più info all’utente). Gran parte della soluzione era già contenuta nella richiesta iniziale: io eseguivo lo switch manualmente da krandtray e da pulseaudio. Si trattava di tradurre questa cosa da riga di comando tramite script bash che poi veniva richiamato da una combinazione di tasti.

Per chi volesse ottenere un output video con scheda nvidia e driver nvidia sull’hdmi la configurazione di X data all’inizio è un buon punto di partenza. Con un’attenta lettura si poteva capire il perché non occorre riavviare il server X per ottenere lo switch video.
Qualcuno sa il perché? :-)*/

Non farmi un contest nel contest ora… :hammer:

Eccolo il perche’ :

Option "TwinView" "1" Option "metamodes" "DFP-0: 1440x900 +0+0, DFP-1: 1280x720 +1440+0; DFP-0: 1440x900, DFP-1: NULL"

La prima abilita il TwinView (che altrimenti necessita il riavvio di X)
E l’altra imposta i due modes che troviamo nell’outuput di xranrd.

E’ da qui che sono partito…

EDIT:
Lo script di MarioS e’ molto piu’ pulito del mio lo ammetto… :stuck_out_tongue:

Molto bravo Mannaggia!!! :slight_smile: Complimenti!!! :smiley:

Faccio notare un’ultima cosa, per chi volesse provare la sua scheda nvidia con hdmi sul televisore:

[quote]
Section “Device”
Identifier “Device0”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce 8600M GT”
Option “NoLogo” “true”
Option “ConnectedMonitor” “DFP-0, DFP-1”
Option “CustomEDID” “DFP-1:/etc/X11/edid.bin”
EndSection [/quote]
Dato che mi trovo su un portatile, non sempre il televisore è connesso. Per evitare errori dal server X e per ottenere questi switch a “caldo”, senza dover avere il televisore connesso all’avvio di X, imbroglio il server X e gli indico che il televisore è connesso (anche se non è così), dandogli l’opzione ConnectedMonitor ed indicando l’edid del televisore :slight_smile:

Buon divertimento e ancora complimenti a Mannaggia.

P.S. spero vivamente che a breve l’output hdmi sia disponibile dai driver nouveau con pieno supporto :slight_smile:

—Aggiunta—
Io ho aggiunto solamente alcune cose per la differenza degli output video e audio (nel caso non fossero semi impostati). Tu però hai usato notify-send, notevole :smiley:

Maremma :-o
complimentissimi :-o
Grande… :slight_smile:

@ MarioS: riguardo la pizza… vedi … bisogna entrare nell’ottica “aulica” Mailghiana… per esempio : io gli devo offrire numerosissime colazioni e non so il perché :lol:

Quindi… non c’è da discuter…

Gnam… ho già appetito :lol:

In ogni caso complimenti a Mannaggia! :woho:
Benvenuto nel club! :smiley: :sunglasses: :pint:

Congratulazioni!
Ben fatto davvero.

S.

Complimenti Mannaggia.
Well done.