Applicare le impostazioni di visualizzazione a tutti gli account utente?


14

Ho trascorso un po 'di tempo a correggere le mie impostazioni per più monitor, e questo funziona bene quando ho effettuato l'accesso, ma non è corretto nella schermata di accesso o per altri utenti.

Come posso impostare le impostazioni di visualizzazione a livello globale per tutti gli utenti e la schermata di accesso?


Come l'hai impostato? dalla GUI o dalla riga di comando e quali sono esattamente le tue impostazioni?
Jacob Vlijm,

Con la GUI "Screen Display" penso che le impostazioni vengano comunque visualizzate. Due monitor, uno ruotato.
mirams,

askubuntu.com/questions/360886/… imposta il login in modo che sia uguale a un utente, il che è utile. askubuntu.com/questions/372729/… sembra indirizzare le vecchie impostazioni di xorg che non sono più utilizzate in 14.04 (penso?). Non riesco a trovare alcuna domanda o risposta su come eseguire questa operazione il 14.04 ...
mirams,

Ho provato quella risposta, lo schermo è stato ruotato correttamente per il login e quindi non è stato ruotato per gli utenti in seguito (anche dopo aver eliminato i loro
monitor.xml

Sono un po 'sorpreso della generosità, se configuri i tuoi monitor, esegui sudo cp ~/.config/monitors.xml /var/lib/lightdm/.config/come suggerito in precedenza, + la soluzione di seguito, hai la tua configurazione per tutti gli utenti (compresi i nuovi utenti) esattamente come descrivi.
Jacob Vlijm,

Risposte:


14

A seconda del modo in cui hai configurato il tuo sistema, potrebbe essere facile come copiare il monitors.xmlfile dall'utente impostato correttamente su tutti gli utenti:

Per testarlo per un utente:

cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /home/TestUser/.config/

quindi disconnetti TestUser se hai già effettuato l'accesso , riconnettiti e controlla se tutto è corretto.

Il comando per tutti gli utenti:

cp /home/CorrectUser/.config/monitors.xml /tmp/
for szUser in /home/* ; do sudo cp --preserve=timestamps /tmp/monitors.xml $szUser/.config/ ; done

Il comando per la schermata di accesso:

sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /var/lib/lightdm/.config/

Il comando per tutti i futuri utenti ¹:

sudo mdkdir -p /etc/skel/.config
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/

Nota¹: tutti gli utenti che creerai in futuro


1
L'ho già suggerito nei commenti (e nella mia risposta in precedenza, ma ripristinato), ma OP ha menzionato che non era sufficiente. Questo funziona solo per la schermata di accesso :) Inoltre, non funziona per i nuovi utenti a meno che non vengano copiati nuovamente in tali utenti.
Jacob Vlijm,

@JacobVlijm: Leggi di nuovo ... Il mio è per la schermata di accesso e tutti gli utenti ... : P (lasciandolo lì dentro come un commento sotto l'OP che non funziona avvertirebbe altri manifesti dal digitare tutto ciò una terza volta) > :-)
Fabby il

1
Non ho suggerito di copiare il file a tutti gli utenti, per questo motivo: Vorrei una soluzione che applica le impostazioni a tutti gli account utente (e quelli futuri) e che fa apparire la schermata di accesso corretta. l'aggiunta a /etc/xdg sembra essere l'unico trucco che lo fa anche per i nuovi utenti.
Jacob Vlijm,

@JacobVlijm: ah, ho perso quello! (Soluzione aggiunta anche per quello) ;-)
Fabby

2
Questa è la risposta migliore ancora: imposta correttamente tutti i monitor e funziona immediatamente anche per l'utente ospite. Come bonus: esiste un modo per copiare anche l'impostazione "Posizionamento del lanciatore" dalla GUI delle impostazioni dello schermo? Sul mio utente è solo su un monitor, ma su entrambi per l'utente nuovo / guest.
mirams,

3

Per impostare la configurazione dello schermo per ogni utente all'accesso (ciò non cambierà la configurazione nella schermata di accesso), è possibile creare un .desktopfile in/etc/xdg/autostart

Come farlo

  1. scopri il nome dello schermo che desideri ruotare ruotando xrandr. Produrrà un numero di righe, tra le quali alcune sembrano:

    VGA-0 connected
    

    Questo ti dà informazioni sui nomi delle schermate collegate.

  2. Scegli quello che vuoi aver ruotato, nel mio esempio di seguito VGA-0
  3. Crea un launcher con (es.) gedit:

    sudo -i gedit /etc/xdg/autostart/set_screens.desktop
    

    Incolla il testo seguente nel file:

    [Desktop Entry]
    Name=set_screens
    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    Type=Application
    

    sostituire nella riga:

    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    

    La stringa: VGA-0dal nome dello schermo (ruotato).

Note importanti

  • In linea

    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    

    Ho incluso a sleep 10. Questo perché, a volte, i xrandrcomandi si interrompono se vengono eseguiti troppo presto, prima che il desktop "completi" il caricamento. Forse devi aumentare la pausa, oppure potresti provare a lasciarla fuori. Nel comando, così com'è, lo schermo ruota dopo 10 secondi dopo l'accesso di qualsiasi utente.

  • Il comando:

    xrandr --output VGA-0 --rotate left
    

    Ruota lo schermo a sinistra, non c'è bisogno di dire che se vuoi un altro tipo di rotazione, è possibile scegliere left, right, normal, inverted(vedi anche qui) .

Spiegazione

È possibile eseguire i comandi all'avvio (effettivamente accedere) posizionando un .desktopfile (launcher) in ~/.config/autostart. Questo eseguirà il programma di avvio solo per un singolo utente. Se fai lo stesso, ma inserisci il programma di avvio /etc/xdg/autostart, il comando viene eseguito ogni volta che un utente accede, a meno che un utente specifico disabiliti il ​​programma di avvio per lui in Dash> Applicazioni di avvio

Inoltre , puoi semplicemente copiare il tuo ~/.config/monitors.xmlfile locale per /var/lib/lightdm/monitors.xmlfar funzionare anche le impostazioni nella schermata di accesso.

Imo la combinazione di questo, e la soluzione sopra (un launcher in /etc/xdg) è la soluzione più semplice per ottenere esattamente quello che vuoi sia per la schermata di accesso che per (qualsiasi) utente. Inoltre, la soluzione di un programma di avvio in /etc/xdgè (molto) facilmente invertita o modificata nel caso in cui fosse necessario effettuare un'altra configurazione, senza modificare molti file a livello di (ciascuno) utente, poiché sia ​​le impostazioni dell'utente che la schermata di accesso sono gestite per tutti gli utenti contemporaneamente in due semplici file.


Potrebbe funzionare - cambiando le impostazioni 10s dopo il login, ma preferirei sapere da dove sono impostate e modificarle per tutti (e la schermata di login, che è attualmente lateralmente).
mirams,

Perché qualcuno dovrebbe sottovalutare questo?
Fabby,

2

Volevo solo aggiungere un commento per chiunque trovasse questo alle prese con un problema simile. Sono stato bloccato con la risoluzione del mio vecchio monitor (1280x1024) ogni volta che eseguo l'accesso, ma la schermata di accesso e l'accesso utente ospite utilizzano il valore predefinito 1680x1050.

Ho letto molti post negli ultimi quattro mesi in cerca di una risposta, leggendo su xorg.conf, monitors.xml, lightdm e xrandr e altri suggerimenti - ma alcune modifiche alla configurazione sono complicate e comportano il rischio di interrompere il display del tutto, quindi ho finito per usare la GUI per cambiare manualmente le impostazioni del monitor ad ogni login.

Oggi ho fatto un grep per la vecchia risoluzione nella mia cartella .config.

grep -HrnIF '1280' .config | less

Il primo risultato è stato ~ / .config / autostart / xrandr.desktop file contenente questo,

Exec=xrandr -s 1280x1024 -r 75

quindi ho appena spostato il file da lì. E bingo, eseguo l'accesso e ottengo la risoluzione predefinita di 1680x1050.

Mi ci sono volute alcune ore di ricerca e non sono riuscito a trovare una risposta abbastanza vicina, quindi pubblicare qui nel caso sia utile a qualcuno.


Benvenuti in Ask Ubuntu. Grazie per aver condiviso i tuoi quattro mesi (tempo trascorso) di ricerca.
WinEunuuchs2Unix il

Rileggendolo, penso di aver probabilmente creato quel file xrandr.desktop due anni fa per aggirare Ubuntu in modo predefinito alle impostazioni di base del monitor "Goldstar", e probabilmente era un problema di compatibilità con la mia scheda video.
MattB,

0

Potresti voler aggiungere qualcosa a /etc/lightdm/lightdm.conf. Qui creiamo uno script che utilizza un xrandrcomando per configurare i tuoi display. Puoi usare alcuni strumenti grafici RandR per creare un comando per te, come ad esempio arandr. Nel mio caso, lo script sarebbe simile a:

#!/bin/sh
xrandr --output DVI-I-1 --mode 1600x1200 --pos 0x0 --rotate left --output DVI-I-0 --off --output DP-3 --off --output DP-2 --off --output DP-1 --mode 1600x900 --pos 1200x700 --rotate normal --output DP-0 --off

Puoi inserire questo script /usr/shareo dove vuoi. Lo script potrebbe sembrare molto meno complesso, poiché questo è per una configurazione complessa a doppio monitor. Quindi aggiungi qualcosa di simile:

session-setup-script=/usr/share/mycustomxrandr.sh

e:

display-setup-script=/usr/share/mycustomxrandr.sh

Assicurati che il file sia eseguibile, quindi:

chmod a+x mycustomxrandr.sh

Il session-setup-scriptimposterà il display per dopo aver effettuato il login attraverso LightDM, e display-setup-scriptcambierà il display per la schermata di login.


Sarebbe bello se tu potessi provare questo, sono interessato a vedere se questo funzionerà per te.
nixpower,

0

Sul mio sistema (Ubuntu 16.04) la schermata di accesso semplicemente cpcome root (usando sudo) non funzionava. Potrebbe anche essere necessario assicurarsi che il proprietario / gruppo di monitors.xml sia lightdm:lightdm.

sudo chown lightdm:lightdm /var/lib/lightdm/.config/monitors.xml
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.