Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/01/2015, à 06:01

arcane17

Script pour ajouter un écran virtuel non connecté à un écran "réel"

A) L'hypothèse :
- Vous avez un pc multimédia connecté à votre télévision que vous contrôlez, par exemple depuis votre fauteuil, par un autre pc ou par une tablette, en utilisant le "Partage de bureau".

- Vous souhaitez travailler sur ce pc multimédia (ex: classer votre médiathèque, préparer une liste de lecture, etc.) tout en regardant un film sur l'écran de télévision.

Vous avez donc besoin d'une configuration "Dual screen" sur le pc multimédia :
- Un écran sert afficher le film sur la télévision,.
- L'autre écran qui au départ affiche le bureau est contrôlé par le pc distant par le biais du "partage de bureau" et permet le lancement de programmes sans interrompre le film.

Problème : vous n'avez qu'un seul écran, votre télévision, connecté sur le pc multimédia
"Affichage" et donc "Partage de bureau" ne propose que ce seul écran. Vous êtes obligé d'interrompre le film pour travailler sur le pc mutlimédia.

Solution : créer un écran virtuel.
- l'écran "physique" connecté à l'ordinateur - la télévision -  affiche le film,
- l'écran "virtuel" affiche le bureau sur lequel vous travaillerez.
(Vous contrôlerez les deux écrans à distance par "Partage de bureau Gnome", "vnc", "xvnc" "ultra vnc", etc.).


B) Voici les instructions et le script :


1) Vérifier les paramètres de votre carte graphique

Commande : xrandr -q

ex (dans mon cas) :
Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 32767 x 32767
VGA1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 connected primary 1920x1080+1920+0 (normal left inverted right x axis y axis) 1152mm x 648mm
   1920x1080      50.0*+   60.0     59.9 
   1920x1080i     60.1     50.0     60.0 
   1280x720       60.0     50.0     59.9 
   1440x576i      50.1 
   1440x480i      60.1     60.1 
   720x576        50.0 
   720x480        60.0     59.9 
   640x480        60.0     59.9 
VIRTUAL1 disconnected (normal left inverted right x axis y axis)


1a) OPTIONNEL

Si le device VIRTUAL1 n'existe pas, il faut l'ajouter.

Créez le fichier de configuration "20-intel.conf"
sudo vi /usr/share/X11/xorg.conf.d/20-intel.conf

Ajoutez les information de configuration dans ce fichier :
Section "Device"
    Identifier "intelgpu0"
    Driver "intel"
    Option "VirtualHeads" "2"
EndSection

Ces instructions commandent au GPU intel de créer deux écrans virtuels.
(On peut ajouter autant d'écran virtuels que l'on veut).

Se déconnecter (logout) puis se reconnecter (login), la commande   xrandr -q doit afficher les écrans VIRTUAL1 et VIRTUAL2.

(solution reprise de https://unix.stackexchange.com/question … ut-to-xorg)


2) Rédaction du script  VirtualScreen.sh

Recopier le script "VirtualScreen.sh" ci-dessous en l'adaptant aux paramètres de votre carte graphique que vous avez obtenus (exemple ci-dessus).
Notamment veiller à ce que l'addition des différents écrans ne dépasse pas la valeur "maximum" obtenu par xrandr -q (dans notre exemple : 32767 x 32767)

Proposition de script :

#!/bin/bash
gtf 1920 1080 59.9
xrandr --newmode "1920x1080_59.90"  172.51  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
xrandr --addmode VIRTUAL1 1920x1080_59.90
xrandr --output VIRTUAL1 --left-of HDMI3


3) Placer le script dans :
/home/<USER>/.local/share/nautilus/scripts/VirtualScreen.sh


4) Ne pas oublier d'autoriser l'exécution du script dans
Nautilus / Fichier "VirtualScreen.sh", clique gauche, Propriété / Permissions : "cocher la case autoriser l'exécution du fichier comme un programme"


5) Pour lancer ce script

Procédure habituelle avec Nautilus :
Cliquer gauche sur n'importe quel fichier, choisir "Scripts", et cliquer sur "VirtualScreen.sh".

6) Utilisation
L'écran virtuel est à gauche de l'écran connecté à la télévision (en raison de l'instruction du script : "xrandr --output VIRTUAL1 --left-of HDMI3").
Dans la fenêtre "Partage de bureau Gnome" du pc qui commande à distance le pc multimédia,
- si vous déplacez la souris au delà du bord droit, la fenêtre bascule et affiche l'écran de télévision,
- si vous déplacez la souris au delà du bord gauche, la fenêtre bascule et affiche le bureau virtuel.


7) Pour lancer ce script au démarrage,
Lancer l'utilitaire "Applications au démarrage"
Ajouter
Nom: VirtualScreen
Commande : /home/<USER>/.local/share/nautilus/scripts/VirtualScreen.sh



C) Références
Script créé sous ubuntu 16.04 et testé avec succès sous ubuntu 18.04 LTS
Mots clés : écran virtuel, virtual screen, partage de bureau, Gnome, desktop sharing, bureau à distance, vnc, ultra vnc, vino, ultra vnc, xvnc

Dernière modification par arcane17 (Le 31/08/2018, à 03:32)


Son : **Triangle**, Audio Analogue, Atoll, Focal, Teac, HRT, Advance Acoustic

Hors ligne

#2 Le 28/09/2016, à 18:40

arcane17

Re : Script pour ajouter un écran virtuel non connecté à un écran "réel"

Autre exemple de script, à partir d'une installation plus récente (Ubuntu 16.04).

Toujours le même principe, suivre la procédure ci-dessus :
Et ci-dessous proposition de script adapté à mon nouveau matériel, écran Ecran OLED 4K LG 55ef950v + lspci :

[code]~$ lspci
00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)
00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (rev d5)
00:1c.4 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #5 (rev d5)
00:1c.5 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #6 (rev d5)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation H87 Express LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
04:00.0 Network controller: Intel Corporation Wireless 3160 (rev 83)
:~$ [/code]

Résultat de la commande xrandr -q :

[code]:~$ xrandr -q
Screen 0: minimum 8 x 8, current 3840 x 1080, maximum 32767 x 32767
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 1600mm x 900mm
   4096x2160     24.00    23.98  
   3840x2160     30.00    25.00    24.00    29.97    23.98  
   1920x1080     60.00*   50.00    59.94    30.00    25.00    24.00    29.97    23.98  
   1920x1080i    60.00    50.00    59.94  
   1280x1024     60.02  
   1360x768      60.02  
   1152x864      59.97  
   1280x720      60.00    50.00    59.94  
   1024x768      60.00  
   800x600       60.32  
   720x576       50.00  
   720x576i      50.00  
   720x480       60.00    59.94  [/code]
   640x480       60.00    59.94  
   720x400       70.08  
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
:~$ 

Nouvelle proposition de Script :
#!/bin/bash
gtf 1920 1080 60
xrandr --newmode "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
xrandr --addmode VIRTUAL1 1920x1080_60.00
xrandr --output VIRTUAL1 --right-of HDMI3


Son : **Triangle**, Audio Analogue, Atoll, Focal, Teac, HRT, Advance Acoustic

Hors ligne

#3 Le 27/12/2017, à 11:39

kholo

Re : Script pour ajouter un écran virtuel non connecté à un écran "réel"

re salut,
cool, je l'avais pas vu passer celle là...
NB : je ne m'acharne pas, j'ai juste fait le tour des trucs que tu as posté sur le forum
l'idée est bonne, ... autant qu'inutile...
ssh est ton ami et sftp aussi cool
... et plus besoin d'un écran virtuel
mais, juste pour la création de cet écran, je fais remonter le fil !

ce que je n'aime pas est l'usage du bureau à distance...
dans le contexte, c'est très Windozien !

ensuite tu parles de PC multimedia... un HTPC ?
tu peux utiliser kodi pour simplifier et éviter toutes ces prises de tête
... et plus besoin d'un écran virtuel (re - je sais !)

sinon, pour améliorer :
dommage de ne pas mettre les balises code pour tous les codes, ça gâche la lecture

utiliser les nautilus scripts pour lancer un script est inutile :
on crée un dossier bin dans le dossier perso (il sera automatiquement ajouté au PATH à la connexion suivante)

mkdir $HOME/bin

puis tu y mets ton script

> $HOME/bin/VirtualScreen ; 

les droits d’exécution :

chmod +x $HOME/bin/VirtualScreen ;

(pas besoin du sh qui est optionnel ! )
et tu édites et tu colles le script dedans :

gedit $HOME/bin/VirtualScreen

A partir de la connexion suivante, tu pourras lancer le script avec cet utilisateur depuis n'importe où sans avoir à mettre de chemin :

VirtualScreen

wink


suivant :

/home/<USER>/

peut être remplacé par $HOME
si tu tapes

echo $HOME

tu comprendras le pourquoi du comment
... par contre je crois que le chemin réel est obligatoire pour le programme "démarrage"
mais il y a un bouton "parcourir" pour simplifier !
... et tu peux créer un .desktop dans l'autostart (dossier des programmes lancés automatiquement de chaque utilisateur) de l'utilisateur (voir après)
et si tu veux conserver ta technique du clic droit avec nautilus pour lancer le script :
il suffit de créer un lien entre le script et le dossiers des nautilus-scripts

ln -s $HOME/bin/VirtualScreen $HOME/.local/share/nautilus/scripts/VirtualScreen

mais il existe d'autres moyens pour lancer un script en mode graphique (un raccourcis à l'arrache par exemple !)

ou en créant un fichier .desktop sur le bureau
en 1 seul copier coller !

echo "[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=VirtualScreen
Comment=script pour créer un écran virtuel
Exec=$HOME/bin/VirtualScreen
Icon=$HOME/Images/VirtualScreen.png
Terminal=true" > $HOME/Bureau/VirtualScreen.desktop

puis

chmod +x $HOME/Bureau/VirtualScreen.desktop

NB : tu peux te créer une icône sur mesure à mettre et à adapter :

la partie .desktop a écrit :

Icon=$HOME/Images/VirtualScreen.png

PS : tu remplaceras $HOME/Bureau/VirtualScreen.desktop par $HOME/.config/autostart/
pour créer le lancement automatique sans passer par le GUI !

cool

Hors ligne

#4 Le 27/12/2017, à 21:12

arcane17

Re : Script pour ajouter un écran virtuel non connecté à un écran "réel"

Au contraire, toute correction, amélioration, ou autre point de vue est bien venu. Et merci pour les remarques sur l'affichage des scripts (balises etc.) je m'y conformerai, si j'ai bien compris. Pour Khodi, ssh ou sftp, je suis preneur, mais si l'on me donnes un mode détaillé d'installation et de fonctionnement. Sinon, j'ai des doutes sur le fait d'obtenir les mêmes résultats. Attention : mon cahier des charges est exigeant, si la config que je propose permet de prendre simplement le contrôle d'un pc dédié multimédia, relié par exemple à la télé et à la hifi, elle peut piloter une config très évoluée, comme dans mon cas : j'ai 4 cartes sons sur le laptop multimédia, je reproduis la musique en lossless et mode bitperfect,  une télévision OLED ("noir infini") 4K mode truemovie, et un serveur comprenant des centaines de milliers de morceaux de musique lossless et de films 2K (en attendant le 4K) etc. Bref, il ne s'agit pas ici d'envoyer sur sa télé depuis son smartphone des photos de vacances ou un clip de youtube par le biais de Miracast (même si c'est sympa aussi).

Dernière modification par arcane17 (Le 27/12/2017, à 21:20)


Son : **Triangle**, Audio Analogue, Atoll, Focal, Teac, HRT, Advance Acoustic

Hors ligne

#5 Le 28/12/2017, à 10:31

kholo

Re : Script pour ajouter un écran virtuel non connecté à un écran "réel"

cooool... du bon matos !
le mélange TV + PC est toujours en voie de normalisation...
par exemple avec un raspberry pi on peut utiliser la télécommande de la TV pour piloter le logiciel (kodi aka xbmc)... mais selon le PC (ou carte graphique), pas sûr d'avoir le CEC.
tout ça pour dire que ce qui marche pour Pierre n'est peut être pas applicable à Paul.

pour les infos, je t'invite à rechercher dans mes posts tout ce qui touche au réseau... mon niveau n'est pas d’excellence et, donc, je suis simple à suivre lol
copier / coller de mon dernier post :
... tu peux regarder dans mes fils, tu trouveras ton bonheur
le dernier post dans lequel j'en parle

un fil central : [tuto]post-installation Ubuntu 16.04 : le PC à kiki (+vidéo) (voir la partie réseau)

pour kodi (aka xbmc), suivre la doc

Hors ligne