web-dev-qa-db-fra.com

Comment utiliser XRandr pour agrandir une partie du moniteur éteint

Le haut du moniteur physique est obscurci par une lunette (ne demande pas!). Je souhaite utiliser XRandr pour redéfinir la taille réelle du bureau et il n'utilise donc que la partie utilisable du moniteur.

Les dimensions de pixels réelles du moniteur sont de 2880x1920 mais le haut (disons) 20 rangées ne sont pas utilisables. (En fait, c'est moins mais je vais devoir expérimenter). Je souhaite donc un bureau de bureau 2880x1900 et définissez la position du moniteur de telle sorte que le bureau soit affiché sur le moniteur à partir de la rangée 20 et en continuant vers le bas.

I pense Cela signifie que je dois utiliser --POS + 0-20 mais je reçois:

$ xrandr  --output eDP-1 --pos +0-20
xrandr: failed to parse '+0-20' as a position

Et j'ai essayé d'autres variations:

$ xrandr --fb 2880x1900 --output eDP-1 --size 2880x1900+0+20
xrandr: specified screen 2880x1900 not large enough for output eDP-1 (2880x1920+0+0)

Ceci est très similaire à une question existante Comment utiliser uniquement une partie d'un moniteur pour l'affichage Mais cet utilisateur posait des questions sur Windows et tout le monde suggère simplement d'utiliser le gestionnaire de fenêtres. Cela deviendrait assez fatigué, étant donné que cela va être toujours et pour chaque espace de travail. Je cherche une solution plus fondamentale.

En fait, on dirait que je me trompe d'avoir moins de 20 rangées de pixels.

J'ai trouvé ceci:

$ xrandr --output eDP-1 --transform 1,0,0,0,1,-30,0,0,1 

déplace la sortie juste à droite pour que le sommet ne soit pas coupé. Malheureusement, l'ensemble de la trame de bureau s'étend au-dessous de l'écran visible. Je pourrais ajouter un facteur d'échelle à cette transformation, mais je préférerais simplement redimensionner le bureau de sorte que le bas du bureau atterrit au bas du moniteur.

4
Greg S

Ma configuration:

  • Intel Celeron NUC
  • Ubuntu 18.04.3 LTS
  • Pilotes Intel I915 (vidéo intégrée)
  • Sortie HDMI sur un ancien LCD TV

Ce qui n'a pas fonctionné:

  • Le conducteur n'a pas de support pour les propriétés trop durains/soussers dans XRANDR
  • Les modes vidéo personnalisés sont toujours étendus après les bords du moniteur

Quoi A FAIT Travail:

xrandr --output "HDMI-2" --fb 1800x1000 --transform 1,0,-60,0,1,-30,0,0,1

- FB 1800x10 Définit la zone d'affichage. L'utilisation de ce paramètre vous donnera une grande marge à droite et en bas, mais ne centriste pas l'image.

- transformer 1,0, -60,0,1, -40,0,0,1 déplace l'image affichée à droite de 60 pixels (le -60) et en bas de 40 pixels ( le -40).

Combiné ensemble, mon écran dispose d'une marge gauche de 60 pixels, d'un écran large de 1800 pixels, et d'une autre marge droite de 60 pixels pour un total de 1920. Verticalement, j'ai une marge supérieure de 40 pixels, un écran de 1000 pixels, et un écran de 1000 pixels. marge inférieure pour un total de 1080.

J'ai toujours l'avertissement:

xrandr: specified screen 1800x1000 not large enough for output HDMI-2 (1920x1080+-60+-40)

Cependant, le tampon de cadre est toujours redimensionné et la transformation est toujours appliquée de sorte que les bords de l'écran ne soient plus étendus après la fin du moniteur.

ErrorLevel Une fois que le XRANDR est zéro (ce qui signifie qu'il fonctionnait sans erreur), même à travers le message d'avertissement ci-dessus est affiché.

C'est la solution qui a fonctionné pour moi et être sur un pilote vidéo intégré Intel au lieu des pilotes NVIDIA ou RADEON les plus avancés, c'est la seule solution qui fonctionne jusqu'à présent.

Pour votre résolution, je suggérerais d'utiliser une façon de plus petite --fb pour commencer avec:

xrandr --output eDP-1 --fb 2400x1800 

Ensuite, jouez avec les transformations pour obtenir le coin supérieur gauche visible.

Découvrez ensuite ce que vous pouvez élargir votre tramebuffer pour garder votre bord droit et votre bord inférieur visible.

Aucun de ces changements de résolution, votre écran est STIL 2880X1920. Vous pouvez simplement modifier la taille de l'écran et déplacer l'écran vers le bas et vers la droite.

2
Dan

Je ne peux pas tester XRandr dans mon environnement, mais je remarque que toutes les histoires de réussite que j'ai constatées impliquées de désactiver la partie inférieure du moniteur, plutôt que le sommet, mais la partie la plus frappante était qu'ils impliquaient tous la création d'un nouveau Xrandr mode.

J'ai également trouvé le message de Comment désactiver la partie inférieure de l'écran avec XRandr , où l'affiche, en essayant de désactiver la partie inférieure de son moniteur, a constaté qu'il était désactivé à la place de la partie supérieure et demandé de l'aide.

Personne n'a répondu à son poste, mais je reproduit ci-dessous ce que l'affiche a fait, ce qui pourrait aider avec votre problème:

Donc, j'utilise d'abord CVT pour obtenir un nouveau mode pour XRandr avec la nouvelle résolution calculée en laissant la partie cassée de l'écran.

cvt 1366 700

Ensuite, utilisez ceci pour créer un nouveau mode avec XRandr

xrandr --newmode 1368x700 77.00  1368 1432 1568 1768  700 703 713 727 -hsync +vsync

Ensuite, j'ai installé ce mode

xrandr --addmode eDP-1 1368x700
xrandr --output eDP-1 --mode 1368x700

Mais la partie de l'écran qui est désactivée est la partie supérieure de l'écran, pas le bas.

0
harrymc

Après avoir lu des questions de Greg S. avec soin, j'ai remarqué:

J'ai trouvé ceci:

$ xrandr --output eDP-1 --transform 1,0,0,0,1,-30,0,0,1

déplace la sortie juste à droite pour que le sommet ne soit pas coupé. Malheureusement, l'ensemble de la trame de bureau s'étend au-dessous de l'écran visible. Je pourrais ajouter un facteur d'échelle à cette transformation, mais je préférerais simplement redimensionner le bureau de sorte que le bas du bureau atterrit au bas du moniteur.

Ma réponse ne traite pas de ce problème.

Greg, je ne peux que penser à deux façons de faire ce que vous voulez.

  • Utilisez la transformation de l'échelle pour réduire les axes de Y pour serrer le bureau sur la zone affichée. Cependant, vous avez mentionné que vous ne voulez pas faire cela.

  • Une autre option consiste à placer un widget de bureau le long du bord supérieur qui prend les 20-30 pixels d'espace inutilisable (probablement plus facile sur KDE).

Changer le --fb ne change pas la taille du bureau, il limite simplement l'image affichée à la taille de -fb. La définition d'un nouveau mode ne vous aide pas, car elle démarrera en haut de l'écran qui est bloquée par votre lunette.

Si c'était moi, je prendrais soit un outil Dremel sur la lunette supérieure ou vivre avec un bureau compressé:

xrandr --output eDP-1 --fb 2880x1920 --panning 2880x1950 --transform 1,0,0,0,1.02,-30,0,0,1 

Si la commande est erronée, essayez sans le paramètre --fb.

0
Dan