Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Přepínání 2 monitorů s různým rozlišením  (Přečteno 8664 krát)

Martin Šácha

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • ******
  • Příspěvků: 5153
Přepínání 2 monitorů s různým rozlišením
« kdy: 24 Prosince 2010, 22:10:07 »
Zdravím všechny,

mám 2 různé monitory, jeden obyčejný pro práci a druhý je televize (filmy). Samozřejmě mají různá rozlišení, monitor je 1024x768; tv 1920x1080px.

Grafika je bohužel prastará ATI, kterou už nepodporují uzavřené ovladače (menu Ovladače harwdaru je prázné).

Současný stav je takový, že po odpojení monitoru a a připojení televize je na tv obraz deformovaný; v původním rozlišení.

A ted k věci: jak nastavit xorg.conf tak, aby šlo mezi monitory přepínat stylem odpojím jeden, připojím druhý, bez restartu počítače?

Díky...
Mint MATE 64bit / DuckDuckGo.com
Programátoři považují WYSIWYG za špatné u kódu i u žen. Programátor chce "dostat to, co žádá“ – kód tajemný, neodpouštějící, nebezpečný.

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #1 kdy: 24 Prosince 2010, 22:48:10 »
Možná pomůže disper -- viz Autodetekce externiho monitoru bez pouziti nVidie panelu
a ještě bylo někde vlákno, které ale teď nemůžu najít, a nějaká dobrá duše napsala skript, který přepíná mezi primárním a sekundárním displejem (podle toho, jaké je aktuální rozlišení) - ten používám neustále. Jinak viz disper --help

Kód: [Vybrat]
#!/bin/bash
[ `xrandr -q | awk 'NR==2 {print $3}' | sed 's@x.*$@@'` == 1920 ] && disper -s || disper -S

Kdyžtak postni svůj xorg.conf, jaký tam máš nastavený metamodes.
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #2 kdy: 24 Prosince 2010, 23:59:41 »
Kód: [Vybrat]
#!/bin/bash
[ `xrandr -q | awk 'NR==2 {print $3}' | sed 's@x.*$@@'` == 1920 ] && disper -s || disper -S

Vidím svůj výtvor :) Ale disper je pro nvidie, ten nepomůže. Stačit by měl ale xrandr:

Kód: [Vybrat]
xrandr -qpři zapojení obou monitorů - ukáže jejich označení, podporovaná rozlišení a konfiguraci. Např.:

Kód: [Vybrat]
Screen 0: minimum 320 x 200, current 1024 x 600, maximum 4096 x 4096
VGA1 connected 1920x1200+1024+0 (normal left inverted right x axis y axis) 474mm x 297mm
   1920x1200      59.9*+
   1600x1200      75.0     60.0 
   1680x1050      60.0 
   1280x1024      75.0     60.0 
   1280x960       60.0 
   1152x864       75.0 
   1024x768       75.1     70.1     60.0 
   800x600        72.2     75.0     60.3     56.2 
   640x480        72.8     75.0     60.0 
   720x400        70.1 
LVDS1 connected 1024x600+0+0 (normal left inverted right x axis y axis) 223mm x 125mm
   1024x600       60.0*+
   800x600        60.3     56.2 
   640x480        59.9 

Pozn. tento příkaz jako vedlejší efekt nejspíše vyvolá připojení druhého monitoru v režimu rozšíření pracovní plochy.

Takže v tomto případě budu monitory přepínat pomocí:

Kód: [Vybrat]
xrandr --output VGA1 --auto --output LVDS1 --offa
Kód: [Vybrat]
xrandr --output VGA1 --off --output LVDS1 --auto

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #3 kdy: 25 Prosince 2010, 00:08:01 »
Teď koukám, že jsem se nechal zmátnout donnym, používáš tedy jeden konektor a měníš monitory natvrdo.. Nicméně xrandr by to měl snad vyřešit stejně..  

Hmm nebude to možná tak triviální :)

Zkusím to zítra, ati momentálně nemám k dispozici.
« Poslední změna: 25 Prosince 2010, 00:27:52 od GdH »

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #4 kdy: 25 Prosince 2010, 00:43:20 »
Teď koukám, že jsem se nechal zmátnout donnym, používáš tedy jeden konektor a měníš monitory natvrdo.
Jejda, to se omlouvám, já právě přepínám mezi displejem ntb a ext.monitorem, tak jsem měl v hlavě takový scénář.

Tak ale i v tom případě bych to já osobně řešil tedy podobným skriptem, který by změnil rozlišení z většího na menší nebo naopak (a nějakou chytrou ikonku/spouštěč do panelu nebo někam, která bude vidět i u deformovanýho obrazu), příp. klávesovou zkratku.

Tedy skript nějaký takový (btw disper umí právě i částečně zastoupit xrandr, tak by to snad mělo fungovat takhle i na ati):

Kód: [Vybrat]
#!/bin/bash
[ `xrandr -q | awk 'NR==2 {print $3}' | sed 's@x.*$@@'` == 1920 ] && disper -r 1024x768 || disper -r 1920x1080

nebo případně zkusit prostě jenom disper -s, jestli si to rozlišení neupraví sám.
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

Martin Šácha

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • ******
  • Příspěvků: 5153
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #5 kdy: 25 Prosince 2010, 11:39:48 »
Takhle vypadá xorg.conf:

Kód: [Vybrat]
Section "ServerLayout"
Identifier     "X.org Configured"
Screen      0  "Screen0" 0 0
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
ModulePath   "/usr/lib/xorg/modules"
FontPath     "/usr/share/fonts/X11/misc"
FontPath     "/usr/share/fonts/X11/cyrillic"
FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath     "/usr/share/fonts/X11/Type1"
FontPath     "/usr/share/fonts/X11/100dpi"
FontPath     "/usr/share/fonts/X11/75dpi"
FontPath     "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
Load  "glx"
Load  "dri2"
Load  "dri"
Load  "extmod"
Load  "dbe"
Load  "record"
EndSection

Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
EndSection

Section "InputDevice"
Identifier  "Mouse0"
Driver      "mouse"
Option    "Protocol" "auto"
Option    "Device" "/dev/input/mice"
Option    "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
#DisplaySize  280   210 # mm
Identifier   "Monitor0"
VendorName   "GSM"
ModelName    "52V"
HorizSync    30.0 - 54.0
VertRefresh  50.0 - 120.0
Option    "DPMS"
  # 1024x768 @ 75.00 Hz (GTF) hsync: 60.15 kHz; pclk: 81.80 MHz
 # Modeline "1024x768_75.00"  81.80  1024 1080 1192 1360  768 769 772 802  -HSync +Vsync

  # 1024x768 @ 50.00 Hz (GTF) hsync: 39.55 kHz; pclk: 51.89 MHz
 # Modeline "1024x768_50.00"  51.89  1024 1064 1168 1312  768 769 772 791  -HSync +Vsync
 
 # 1024x768 @ 65.00 Hz (GTF) hsync: 51.87 kHz; pclk: 69.71 MHz
  Modeline "1024x768_65.00"  69.71  1024 1080 1184 1344  768 769 772 798  -HSync +Vsync


EndSection

Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
        ### [arg]: arg optional
        #Option     "NoAccel"             # [<bool>]
        #Option     "SWcursor"           # [<bool>]
        #Option     "Dac6Bit"             # [<bool>]
        #Option     "Dac8Bit"             # [<bool>]
        #Option     "BusType"             # [<str>]
        #Option     "CPPIOMode"           # [<bool>]
        #Option     "CPusecTimeout"       # <i>
        #Option     "AGPMode"             # <i>
        #Option     "AGPFastWrite"       # [<bool>]
        #Option     "AGPSize"             # <i>
        #Option     "GARTSize"           # <i>
        #Option     "RingSize"           # <i>
        #Option     "BufferSize"         # <i>
        #Option     "EnableDepthMoves"   # [<bool>]
        #Option     "EnablePageFlip"     # [<bool>]
        #Option     "NoBackBuffer"       # [<bool>]
        #Option     "DMAForXv"           # [<bool>]
        #Option     "FBTexPercent"       # <i>
        #Option     "DepthBits"           # <i>
        #Option     "PCIAPERSize"         # <i>
        #Option     "AccelDFS"           # [<bool>]
        #Option     "IgnoreEDID"         # [<bool>]
        #Option     "DisplayPriority"     # [<str>]
        #Option     "PanelSize"           # [<str>]
        #Option     "ForceMinDotClock"   # <freq>
        #Option     "ColorTiling"         # [<bool>]
        #Option     "VideoKey"           # <i>
        #Option     "RageTheatreCrystal" # <i>
        #Option     "RageTheatreTunerPort" # <i>
        #Option     "RageTheatreCompositePort" # <i>
        #Option     "RageTheatreSVideoPort" # <i>
        #Option     "TunerType"           # <i>
        #Option     "RageTheatreMicrocPath" # <str>
        #Option     "RageTheatreMicrocType" # <str>
        #Option     "ScalerWidth"         # <i>
        #Option     "RenderAccel"         # [<bool>]
        #Option     "SubPixelOrder"       # [<str>]
        #Option     "ShowCache"           # [<bool>]
        #Option     "DynamicClocks"       # [<bool>]
        #Option     "VGAAccess"           # [<bool>]
        #Option     "ReverseDDC"         # [<bool>]
        #Option     "LVDSProbePLL"       # [<bool>]
        #Option     "AccelMethod"         # <str>
        #Option     "DRI"                 # [<bool>]
        #Option     "ConnectorTable"     # <str>
        #Option     "DefaultConnectorTable" # [<bool>]
        #Option     "DefaultTMDSPLL"     # [<bool>]
        #Option     "TVDACLoadDetect"     # [<bool>]
        #Option     "ForceTVOut"         # [<bool>]
        #Option     "TVStandard"         # <str>
        #Option     "IgnoreLidStatus"     # [<bool>]
        #Option     "DefaultTVDACAdj"     # [<bool>]
        #Option     "Int10"               # [<bool>]
        #Option     "EXAVSync"           # [<bool>]
        #Option     "ATOMTVOut"           # [<bool>]
        #Option     "R4xxATOM"           # [<bool>]
Identifier  "Card0"
Driver      "radeon"
VendorName  "ATI Technologies Inc"
BoardName   "RV280 [Radeon 9200 SE]"
BusID       "PCI:1:0:0"
EndSection

#funguje max 800x600; fullscreen, syn. spatne
#Section "Screen"
# SubSection "Display"
#                Depth           24
#                Modes           "1024x768"
# EndSubSection
#EndSection  

#syntakticky dobre, 800x600; zmrseny obraz
Section "Screen"
Identifier "Screen0"
Device     "Card0"
Monitor    "Monitor0"
DefaultDepth    24
SubSection "Display"
                Depth           24
                Modes           "1024x768"
EndSubSection
EndSection

Koukám, že je v něm spousta kravin, asi jsem ho kdysi nějak vygeneroval, zkopíroval...nevím.

@GdH: Monitory měním natvrdo protože mám jenom jeden výstup :(

@donny: disper nemám, xrandr vyhodí pro malý monitor:
Kód: [Vybrat]
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1024 x 1024
VGA-0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 260mm x 195mm
   1024x768_65.00   65.0*
   832x624        74.6  
   800x600        85.1     72.2     75.0     60.3     56.2  
   640x480        85.0     75.0     72.8     75.0     66.7     59.9  
   720x400        70.1  
S-video disconnected (normal left inverted right x axis y axis)

a pro televizi:
Kód: [Vybrat]
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1360 x 1200
VGA-0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768       60.0*+   59.9  
   1360x768       59.8  
   1152x864       60.0  
   1024x768_65.00   65.0  
   832x624        74.6  
   800x600        85.1     72.2     75.0     60.3     56.2  
   640x480        85.0     72.8     75.0     59.9  
   720x400        85.0  
   640x400        85.1  
   640x350        85.1  
S-video disconnected (normal left inverted right x axis y axis)

« Poslední změna: 25 Prosince 2010, 11:50:07 od sachy »
Mint MATE 64bit / DuckDuckGo.com
Programátoři považují WYSIWYG za špatné u kódu i u žen. Programátor chce "dostat to, co žádá“ – kód tajemný, neodpouštějící, nebezpečný.

Martin Šácha

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • ******
  • Příspěvků: 5153
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #6 kdy: 25 Prosince 2010, 17:16:24 »
Takže jsem nainstaloval disper odtud https://launchpad.net/~disper-dev/+archive/ppa

Kód: [Vybrat]
#!/bin/bash
[ `xrandr -q | awk 'NR==2 {print $3}' | sed 's@x.*$@@'` == 1920 ] && disper -r 1024x768 || disper -r 1920x1080

nebo případně zkusit prostě jenom disper -s, jestli si to rozlišení neupraví sám.

Script ale stejně nefunguje, jenom vypíše nápovědu k disper-u.

disper -s vyhodí toto:
Kód: [Vybrat]
global name 'disp' is not defined


Mint MATE 64bit / DuckDuckGo.com
Programátoři považují WYSIWYG za špatné u kódu i u žen. Programátor chce "dostat to, co žádá“ – kód tajemný, neodpouštějící, nebezpečný.

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #7 kdy: 25 Prosince 2010, 18:23:16 »
No to je pěkný. Tak jinak. Můžeš vyzkoušet třeba tenhle upravený xorg.conf (nezapomeň v něm upravit HorizSync a VertRefresh):

Kód: [Vybrat]
Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
        ModulePath   "/usr/lib/xorg/modules"
        FontPath     "/usr/share/fonts/X11/misc"
        FontPath     "/usr/share/fonts/X11/cyrillic"
        FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
        FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
        FontPath     "/usr/share/fonts/X11/Type1"
        FontPath     "/usr/share/fonts/X11/100dpi"
        FontPath     "/usr/share/fonts/X11/75dpi"
        FontPath     "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
        Load  "glx"
        Load  "dri2"
        Load  "dri"
        Load  "extmod"
        Load  "dbe"
        Load  "record"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/input/mice"
        Option      "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
        Identifier   "MonitorVGA"
        HorizSync    30.0 - 54.0 # tady zkontroluj, jestli jsou hodnoty správné pro monitor
        VertRefresh  50.0 - 120.0 # tady taky
        Option "PreferredMode"  "1024x768"
        Option      "DPMS"
EndSection

Section "Monitor"
        Identifier   "MonitorTV"
        HorizSync    30.0 - 54.0 # tady zkontroluj, jestli jsou hodnoty správné pro televizi
        VertRefresh  50.0 - 120.0 # tady taky
        Option "PreferredMode"  "1920x1080"
        Option      "DPMS"
EndSection


Section "Device"
        Identifier  "Device0"
        Driver      "radeon"
        VendorName  "ATI Technologies Inc"
        BoardName   "RV280 [Radeon 9200 SE]"
        BusID       "PCI:1:0:0"
        Option      "monitor-VGA" "MonitorVGA"
        Option      "monitor-TV" "MonitorTV"
EndSection


Section "Screen"
        Identifier "Screen0"
        Device     "Device0"
        Monitor    "MonitorVGA"
        DefaultDepth    24
        SubSection "Display"
                Depth           24
Modes         "1920x1080"  "1024x768"
        EndSubSection
EndSection

Jinak bych ještě možná vytvořil modelines podle Config Resolution | Adding undetected resolutions
Zřejmě by bylo vhodné vymazat xorg.conf/nebo ho někam přešoupnout, a nechat tam třeba jenom

Kód: [Vybrat]
Section "Device"
        Identifier  "Device0"
        Driver      "radeon"
        VendorName  "ATI Technologies Inc"
        BoardName   "RV280 [Radeon 9200 SE]"
        BusID       "PCI:1:0:0"
EndSection

a při zjišťování těch modelines vždy s čerstvým restartem s monitorem a pak s čerstvým restartem s televizí...
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

Martin Šácha

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • ******
  • Příspěvků: 5153
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #8 kdy: 26 Prosince 2010, 01:05:39 »
Rozsah televize sem si našel v manuálu, vypadá následovně:
Kód: [Vybrat]
Mode | Resolution    | HF (kHz)| VF (Hz) | PCF (MHz) | H/V sync
CTV  | 1920 x 1080RB | 66.587  | 59.934  | 138.500   | +/-

S čistým konfigurákem jsem vytvořil modeline televize (monitor mám z dřívějška):
Kód: [Vybrat]
$ cvt 1920 1080 60
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -HSync +Vsync

a aplikoval je do tvého upraveného konfiguráku:
Kód: [Vybrat]
Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
        ModulePath   "/usr/lib/xorg/modules"
        FontPath     "/usr/share/fonts/X11/misc"
        FontPath     "/usr/share/fonts/X11/cyrillic"
        FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
        FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
        FontPath     "/usr/share/fonts/X11/Type1"
        FontPath     "/usr/share/fonts/X11/100dpi"
        FontPath     "/usr/share/fonts/X11/75dpi"
        FontPath     "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
        Load  "glx"
        Load  "dri2"
        Load  "dri"
        Load  "extmod"
        Load  "dbe"
        Load  "record"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/input/mice"
        Option      "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
        Identifier   "MonitorVGA"
        HorizSync    30.0 - 54.0
        VertRefresh  50.0 - 120.0
 # 1024x768 @ 65.00 Hz (GTF) hsync: 51.87 kHz; pclk: 69.71 MHz
  Modeline "1024x768_65.00"  69.71  1024 1080 1184 1344  768 769 772 798  -HSync +Vsync
        Option "PreferredMode"  "1024x768"
        Option      "DPMS"
EndSection

Section "Monitor"
        Identifier   "MonitorTV"
        HorizSync    30.0 - 54.0
        VertRefresh  50.0 - 120.0
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
        Option "PreferredMode"  "1920x1080"
        Option      "DPMS"
EndSection


Section "Device"
        Identifier  "Device0"
        Driver      "radeon"
        VendorName  "ATI Technologies Inc"
        BoardName   "RV280 [Radeon 9200 SE]"
        BusID       "PCI:1:0:0"
        Option      "monitor-VGA" "MonitorVGA"
        Option      "monitor-TV" "MonitorTV"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Device0"
        Monitor    "MonitorVGA"
        DefaultDepth    24
        SubSection "Display"
                Depth           24
Modes         "1920x1080"  "1024x768"
        EndSubSection
EndSection

Problém ale zůstává stejný, vždycky se natvrdo použije 1024x768.
Mint MATE 64bit / DuckDuckGo.com
Programátoři považují WYSIWYG za špatné u kódu i u žen. Programátor chce "dostat to, co žádá“ – kód tajemný, neodpouštějící, nebezpečný.

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #9 kdy: 26 Prosince 2010, 01:29:36 »
No dobře, rozlišení vlastně zůstane (pochybuju, že existuje nějaká možnost, jak donutit systém automaticky detekovat "výměnu" monitorů, kdysi jsem dost googlil, jak odchytit připojení/odpojení monitoru na hdmi, ale bezvýsledně), ale mohl bys vytvořit ten skript, který ti při spuštění nastaví vždycky to druhé rozlišení, tedy např.

Kód: [Vybrat]
#!/bin/bash

displayName="VGA-0"
resolution1="1920x1080"
resolution2="1024x768"


[ `xrandr -q | awk 'NR==2 {print $3}' | sed 's@x.*$@@'` == ${resolution1%x*} ] \
        && xrandr --output default --mode ${resolution2} \
        || xrandr --output default --mode ${resolution1}

(snad jsem se s tím VGA-0 trefil) No a pak ho po přepojení displejů nějakým třeba spouštěčem na ploše/panelu spustit, a on rozlišení přehodí.
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #10 kdy: 26 Prosince 2010, 01:49:05 »
donny, ty v tom skriptu stále testuješ aktuální rozlišení, které je přeci stejné i po výměně monitoru, to je ten problém, který se řeší. Podle toho, co sem sachy vložil z výstupu  xrandr -q, by to testovat šlo, ale musela by se vypreparovat jiná část. Já bych to ale viděl viděl jednodušeji:

Kód: [Vybrat]
xrandr --output default --off && xrandr --output default --auto
což by mělo odpovídat
Kód: [Vybrat]
xrandr --output VGA-0 --off && xrandr --output  VGA-0 --auto
Zkrátka reset.
« Poslední změna: 26 Prosince 2010, 02:37:10 od GdH »

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #11 kdy: 26 Prosince 2010, 03:40:08 »
Ano testuju rozlišení, protože ve chvíli, než přehodí televizi 1920×1080 zpátky na monitor 1024×768, je potřeba nastavit zpátky menší rozlišení (tedy to druhé), vzhledem k tomu, že monitor to velké rozlišení vůbec nezobrazí. Tedy:

zapojen CRT, chci přepnout na TV: přepnout kabel na TV -> spustit skript (který nastaví větší /= to druhé/ rozlišení)

zapojen TV, chci přepnout na CRT -> spustit skript, který nastaví menší /= to druhé/ rozlišení -> přepnout kabel na CRT.

Aspoň tohle byla moje myšlenka.
« Poslední změna: 26 Prosince 2010, 03:41:43 od donny »
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #12 kdy: 26 Prosince 2010, 08:06:30 »
Ano testuju rozlišení, protože ve chvíli, než přehodí televizi 1920×1080 zpátky na monitor 1024×768, je potřeba nastavit zpátky menší rozlišení (tedy to druhé), vzhledem k tomu, že monitor to velké rozlišení vůbec nezobrazí. Tedy:

zapojen CRT, chci přepnout na TV: přepnout kabel na TV -> spustit skript (který nastaví větší /= to druhé/ rozlišení)

zapojen TV, chci přepnout na CRT -> spustit skript, který nastaví menší /= to druhé/ rozlišení -> přepnout kabel na CRT.

Aspoň tohle byla moje myšlenka.

Ani ti tak neberu tu myšlenku, ale jsou tu dvě věci. Pokud zabere to, co navrhuji já, je testování zbytečné, protože dojde k autodetekci a výsledek je univerzálnější. Za druhé musím opakovat, že nemůžeš testovat aktuální rozlišení, protože toto rozlišení je i po přepojení monitorů stejné. Víš co ta testovací část skriptu přesně dělá? Koukni se na tyt výpisy z xrandr, co sem sachy dal a podívej se u obou na druhý řádek, třetí slovo ;)

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #13 kdy: 26 Prosince 2010, 16:18:33 »
Díky za poznámku, je pravda, že jsem na to koukal slepě, myslel jsem, že bere hodnotu z "current". Tady je upravený skript.

Kód: [Vybrat]
#!/bin/bash

resolution1="1920x1080"
resolution2="1024x768"

current=`xrandr -q|grep current`
[ `echo ${current#*current}|awk {'print $1'}` == ${resolution1%x*} ] \
        && xrandr --output default --mode ${resolution2} \
        || xrandr --output default --mode ${resolution1}

Ano, ale o to právě jde, že po přepojení na TV zůstane rozlišení stejné, tento skript to zjistí a nastaví to větší. Podívej se ještě na můj předchozí příspěvek.
Tvoje řešení je sice univerzálnější, ale co uděláš, když přepneš z TV (s nastaveným rozlišením 1080p) na monitor a ten ti zahlásí "OUT OF RANGE" nebo bůhví co?
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #14 kdy: 26 Prosince 2010, 17:00:41 »
dony, zamysli se nad tím ještě jednou ;) Mimochodem já píšu o tom, co mám vyzkoušené.

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #15 kdy: 26 Prosince 2010, 18:02:34 »
dony, zamysli se nad tím ještě jednou ;) Mimochodem já píšu o tom, co mám vyzkoušené.

čteš vůbec moje příspěvky celé? ;) hele, jestli mi fakt něco nedochází, tak mi to ale řekni, a né ať se nad tim zamyslim. Ten princip je prostě jasnej - přehodim monitor na tv, zůstane malý rozlišení. Spustim skript, ten (můj zjistí malé rozlišení a) nastaví velké rozlišení. Je to správně? To by měl udělat jak můj tak tvůj.
A co obráceně? Jak to bude s tvým skriptem, když se bude přepínat TV na monitor a zůstane tam velké rozlišení (jestli správně předpokládám, že se nezmenší)?
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

Martin Šácha

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • ******
  • Příspěvků: 5153
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #16 kdy: 26 Prosince 2010, 20:01:34 »
Po další várce testů...
Kód: [Vybrat]
#nestane se nic
xrandr --output default --off && xrandr --output  default --auto

#problikne obraz, televize to ale stejně nebere (nepodporovany rezim)
xrandr --output VGA-0 --off && xrandr --output  VGA-0 --auto

Donnyho script (ani jeden) neudělá nic.

Po nahrazení "default" za "VGA-0" mám takovýto výstup:
Kód: [Vybrat]
#!/bin/bash

resolution1="1920x1080"
resolution2="1024x768"

current=`xrandr -q|grep current`
[ `echo ${current#*current}|awk {'print $1'}` == ${resolution1%x*} ] \
        && xrandr --output VGA-0 --mode ${resolution2} \
        || xrandr --output VGA-0 --mode ${resolution1}
Kód: [Vybrat]
xrandr: cannot find mode 1920x1080
Možná je to tím, že monitor a televize mají různé frekvence, mon. 65 a tv 60.

Nešlo by to udělat třeba přes udev, při nalezení televize by nakopíroval xorg.conf.tv > xorg.conf a restartoval jenom Xka? Obráceně by nakopíroval xorg.conf.mon -> xorg.conf a opět restart Xek? Nebo udev funguje jenom při bootu?
Mint MATE 64bit / DuckDuckGo.com
Programátoři považují WYSIWYG za špatné u kódu i u žen. Programátor chce "dostat to, co žádá“ – kód tajemný, neodpouštějící, nebezpečný.

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #17 kdy: 26 Prosince 2010, 20:14:08 »
čteš vůbec moje příspěvky celé? ;) hele, jestli mi fakt něco nedochází, tak mi to ale řekni, a né ať se nad tim zamyslim. Ten princip je prostě jasnej - přehodim monitor na tv, zůstane malý rozlišení. Spustim skript, ten (můj zjistí malé rozlišení a) nastaví velké rozlišení. Je to správně? To by měl udělat jak můj tak tvůj.
A co obráceně? Jak to bude s tvým skriptem, když se bude přepínat TV na monitor a zůstane tam velké rozlišení (jestli správně předpokládám, že se nezmenší)?

Promiň, psal jsem z mobilu, to bývám stručnější. Tvé příspěvky čtu pozorně, ale faktem je, že jedna tvá myšlenka mi unikla, neb jsem měl jinou představu o té detekci. To, nad čím jsi se měl zamyslet, je především tvrzení, že můj skript bude fungovat pouze v jednom případě. Jeho spuštění se provede po přepojení monitorů a jelikož jde o autodetekci, mělo by to fungovat stejně v obou případech (a mě to na otevřených ovladačích funguje). Předpokladem je použití klávesové zkratky, aby nebylo potřeba obrazu. Ideální by bylo řešení, že se skript spustí před výměnou, odpojí stávající monitor a čeká na stisk klávesy, který provedeš po výměně monitoru a tím ho připojíš. Jinak vždy dojde k tomu, že nový monitor dostává signál, který pro něj není, jde především o obnovovací frekvenci. To tvůj skript také neřeší.

A jelikož se mezitím, než jsem to dopsal, ozval sachy, budeme přemýšlet dál :)

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #18 kdy: 26 Prosince 2010, 20:19:15 »
no čistě teoreticky by to mohlo být nejjednodušší řešení - zprovoznit si kl.zkratku Ctrl-Alt-Backspace (setxkbmap -option terminate:ctrl_alt_bksp) a při výměně monitoru s ní prostě restartovat Xka a ty už si rozlišení nastaví snad správně...
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #19 kdy: 26 Prosince 2010, 20:20:46 »
Restart X by to řešit měl, ale je to děsně srabácký :)

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #20 kdy: 26 Prosince 2010, 20:21:56 »
GdH: jasně, klávesová zkratka, předtím jsme si akorát nerozuměli, mně šlo o to, že by se bez obrazu ten skript těžko spouštěl, ne že by opačně nefungoval. No, zkusím ještě opět googlit, jak by se dalo automaticky detekovat připojení monitoru (a je-li vůbec něco takového možné). I mně samotnému by to hodně pomohlo.
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #21 kdy: 26 Prosince 2010, 20:25:27 »
Kód: [Vybrat]
xrandr: cannot find mode 1920x1080
Zkus se podívat na ten link ze #7 -  Config Resolution | Adding undetected resolutions - pokud jsi tamten modeline, co jsi řešil výš, nenechal v xorg.conf-u
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

Martin Šácha

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • ******
  • Příspěvků: 5153
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #22 kdy: 26 Prosince 2010, 20:36:25 »
Kód: [Vybrat]
xrandr: cannot find mode 1920x1080
Zkus se podívat na ten link ze #7 -  Config Resolution | Adding undetected resolutions - pokud jsi tamten modeline, co jsi řešil výš, nenechal v xorg.conf-u

V xorg.conf jsou oba modeline, pro monitor i pro televizi.

no čistě teoreticky by to mohlo být nejjednodušší řešení - zprovoznit si kl.zkratku Ctrl-Alt-Backspace (setxkbmap -option terminate:ctrl_alt_bksp) a při výměně monitoru s ní prostě restartovat Xka a ty už si rozlišení nastaví snad správně...

Kód: [Vybrat]
$ setxkbmap -option terminate: ctrl_alt_bksp
Error loading new keyboard description

« Poslední změna: 26 Prosince 2010, 20:38:21 od sachy »
Mint MATE 64bit / DuckDuckGo.com
Programátoři považují WYSIWYG za špatné u kódu i u žen. Programátor chce "dostat to, co žádá“ – kód tajemný, neodpouštějící, nebezpečný.

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #23 kdy: 26 Prosince 2010, 20:57:56 »

Kód: [Vybrat]
$ setxkbmap -option terminate: ctrl_alt_bksp
Error loading new keyboard description



Tak asi se sudo. Nemůžu to teď zkoušet...
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

Martin Šácha

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • ******
  • Příspěvků: 5153
Re: Přepínání 2 monitorů s různým rozlišením
« Odpověď #24 kdy: 26 Prosince 2010, 21:17:42 »

Kód: [Vybrat]
$ setxkbmap -option terminate: ctrl_alt_bksp
Error loading new keyboard description



Tak asi se sudo. Nemůžu to teď zkoušet...
Stejný výstup.

Před chvílí jsem našel tohle, večer si budu hrát: https://wiki.ubuntu.com/X/Config/Resolution#Dynamically%20testing%20different%20resolutions
Mint MATE 64bit / DuckDuckGo.com
Programátoři považují WYSIWYG za špatné u kódu i u žen. Programátor chce "dostat to, co žádá“ – kód tajemný, neodpouštějící, nebezpečný.

 

Provoz zaštiťuje spolek OpenAlt.