Partage
  • Partager sur Facebook
  • Partager sur Twitter

Détecter le mirroring d'écrans. Federa/Centos

    15 octobre 2018 à 17:14:23

    Bonjour,

    j'ai une application qui, si on est sur 2 écrans ou plus, permet l'ouverture des autres fenêtres (A Propos/configuration/autres) sur le deuxième écran.

    • Premier problème: on m'a signalé que si on était en mode "mirroring d'écran" (c'est-à-dire que tous les écrans affichent la même chose), alors l'appli considère que l'on est quand même en multi-screen et les fenêtres s'ouvrent dans des coordonnées en dehors de l'écran.

    J'ai résolu se problème sur mon poste Fedora en comparant le getBounds() des deux premiers écrans pour savoir si le deuxième avait lui aussi les coordonnées x:y en 0:0 (au lieu de 1920:0 si partage d'écran).

    GraphicsDevice[] devices = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
    
    //if mirroring device activate.
    if (devices.length >= 2 && devices[0].getDefaultConfiguration().getBounds().equals(devices[1].getDefaultConfiguration().getBounds()))
    {
        devices = new GraphicsDevice[] { devices[0] };
    }
    
    SCREENS = devices;    //variable de classe

    Sauf que,

    • Second problème: sur Centos, en partage d'écran, le getBounds() indique le x:y de tous les écrans à 0:0, ce qui fait que l'appli considère qu'on est en mode mirroring d'écran. Pire, on ne peut pas faire sortir les fenêtres du premier écran sur cet OS.


    J'aimerais savoir s'il y a un autre moyen de détecter si on est en mirroring d'écran, autre que la comparaison des getBounds(). J'ai cherché sur internet et je n'ai, pour l'instant, rien trouvé.

    -
    Edité par ArgAur 16 octobre 2018 à 13:20:45

    • Partager sur Facebook
    • Partager sur Twitter
      17 octobre 2018 à 9:45:01

      Si les coordonnées d'origine sont 0.0 et que les fenêtres ne passent pas d'un écran à un autre, c'est que l'ordinateur sur lequel est exécuté ton application n'est pas en bureau multi-écran, mais en multi-bureau, ce qui n'est pas la même chose.

      Le deuxième écran affiche un second bureau, et les applications (et non les fenêtres) sont basculées d'un écran à l'autre généralement par un menu de basculement. Je ne suis pas certain que tu puisses contourner ce point lié au fonctionnement même de l'OS.

      Commences donc par vérifier cela avec ton utilisateur : s'agit-il d'une configuration multi-bureaux ?

      • Partager sur Facebook
      • Partager sur Twitter
        17 octobre 2018 à 18:53:04

        C'est une config un peu bizarre. Je pense que c'est du multi bureau.

        L'une des solutions que je vais tenté d'appliquer est de passer par la commande Unix "xrandr". Sur Centos, la commande ne voit qu'un seul screen. Alors que sur Fedora, elle voit deux écrans, peu importe si on est en mode miroir ou écran partagé. Je pourrais ainsi comparer le nombre de screen et le nombre de GraphicsDevice. Sur Centos, si on a du mirroring, ça devrait être un même bureau sur 2 écrans.

        C'est vraiment plus dur que prévu.
        • Partager sur Facebook
        • Partager sur Twitter

        Détecter le mirroring d'écrans. Federa/Centos

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown