1 votes

possibilité d'enregistrer les paramètres actuels de résolution, de fond d'écran et de disposition du bureau dans gnome 3

Chaque fois que je déconnecte mes trois moniteurs externes de mon ordinateur portable, ou que je les rebranche, tous les paramètres de résolution et de bureau étendu sont perturbés. Je dois modifier les paramètres pour que tout redevienne normal.

J'utilise gnome 3.18.5 sur Ubuntu 16.04. J'ai un Intel HD graphics 530 et un Nvidia 960M avec la version 375.39 du pilote nvidia. J'ai également installé l'extension gnome Shell appelée 'Fix-Multi-Monitors', qui a effectivement corrigé un tas de problèmes comme Windows ne se déplaçant qu'entre deux des trois moniteurs avec les raccourcis de déplacement de fenêtre.

Quoi qu'il en soit, ce que j'aimerais faire, c'est d'une manière ou d'une autre avoir les paramètres enregistrés pour quand j'ai branché les trois moniteurs, de sorte que je puisse simplement exécuter un seul script ou paramètre, de sorte qu'il se charge instantanément comme je le veux, ou peut-être même que cela se produit automatiquement lorsque trois écrans sont détectés. Je dois ajouter que je branche toujours les moniteurs de la même manière.

Ce qui me dérange également, c'est que j'ai activé ce fond d'écran qui couvre les trois moniteurs, mais lorsqu'ils sont déconnectés, le fond d'écran devient une fine ligne sur le moniteur de l'ordinateur portable, le reste de l'écran étant noir. J'aimerais que seule la partie centrale de ce fond d'écran s'affiche dans ce cas ou qu'un autre fond d'écran se charge automatiquement lorsque les moniteurs externes sont déconnectés. J'espère que quelqu'un pourra m'aider ou m'orienter dans la bonne direction pour améliorer cette expérience.

J'ai trouvé un outil en ligne de commande appelé disper dont j'ai lu la page de manuel et essayé un tas de commandes mais je ne pense pas qu'il soit capable de faire ce que je veux.

Les chemins vers mes fonds d'écran sont :

/home/olm/Pictures/Wallpapers/3monitorwallpaper.jpg /home/olm/Pictures/Wallpapers/1monitorwallpaper.jpg

0voto

Jacob Vlijm Points 78990

1. script pour exécuter votre commande si quatre écrans sont connectés.

Le script ci-dessous est une version éditée de éste .

Ce qu'il fait

Une fois toutes les cinq secondes, il vérifie le nombre d'écrans connectés. Si le nombre change, y le nombre total d'écrans connectés est de quatre, il exécute le programme xrandr commande que nous avons trouvée dans le(s) commentaire(s).

Mode d'emploi

  1. Copiez le script dans un fichier vide, enregistrez-le sous le nom de four_screens.py

  2. Testez l'exécution du script depuis un terminal avec la commande :

    python3 /path/to/four_screens.py

    et connectez vos écrans. Une fois le quatrième connecté, il faut procéder à la configuration de votre écran.

  3. Si tout fonctionne bien, ajoutez le script aux applications de démarrage : Dash > Startup Applications > Add. Ajoutez la commande :

    python3 /path/to/four_screens.py

    !/usr/bin/env python3

    import subprocess import time

    --- set both commands (connect / disconnect) below

    connect_command = "xrandr --output DP-2 --pos 0x0 --mode 1920x1200 "\ "&& xrandr --output HDMI-0 --pos 1920x0 --mode 1920x1200 "\ "&& xrandr --output DP-3 --pos 3840x0 --mode 1920x1200 "\ "&& xrandr --output eDP-1-1 --off"

    disconnect_command = ""

    ---

    while True: time.sleep(5) try: subprocess.Popen(["xrandr"]) except: pass else: break

    function to get the output of xrandr

    def get(cmd): return subprocess.check_output(cmd).decode("utf-8")

    - to count the occurrenc of " connected "

    def count_screens(xr): return xr.count(" connected ")

    - to run the connect / disconnect command(s)

    def run_command(cmd): subprocess.Popen(["/bin/bash", "-c", cmd])

    first count

    xr1 = None

    while True: time.sleep(5)

    second count

    xr2 = count_screens(get(["xrandr"]))
    # check if there is a change in the screen state
    if xr2 != xr1:
        if xr2 == 4:
            # command to run if connected (two screens)
            run_command(connect_command)
        elif xr2 == 1:
            # command to run if disconnected (one screen)
            # uncomment run_command(disconnect_command) to enable, then also comment out pass
            pass
            # run_command(disconnect_command)
    # set the second count as initial state for the next loop
    xr1 = xr2

Notes

  1. Le script est extrêmement faible en jus, il n'ajoute aucune charge perceptible que ce soit.
  2. Dans le même script, nous pouvons exécuter le changement de fond d'écran, mais pour ce faire, veuillez poster le (chemin vers) les deux fonds d'écran dans votre question.

2. Alternativement, un raccourci

Si, pour une raison quelconque, vous préférez ne pas exécuter un script en arrière-plan, vous pouvez exécuter la même commande via un raccourci clavier :

Choisissez : Paramètres système > "Clavier" > "Raccourcis" > "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande :

/bin/bash -c "xrandr --output DP-2 --pos 0x0 --mode 1920x1200 && xrandr --output HDMI-0 --pos 1920x0 --mode 1920x1200 && xrandr --output DP-3 --pos 3840x0 --mode 1920x1200 && xrandr --output eDP-1-1 --off"

0voto

Odin Mugabe Points 33

En attendant, j'ai aussi trouvé cette commande très pratique pour changer le fond d'écran dans gnome.

gsettings set org.gnome.desktop.background picture-uri file:///path/to/wallpaper.jpg

Maintenant, je l'utilise avec les commandes Xrandr dans un script pour configurer mon bureau chaque fois que je connecte mes moniteurs à l'ordinateur portable.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X