Jak mogę obrócić wyświetlacz w najprostszy sposób?

54

Jestem szczęśliwym posiadaczem monitora obrotowego, którego ekran można obracać (fizycznie). Jaki jest najłatwiejszy sposób, aby włączyć wyświetlanie po obróceniu monitora?

W tej chwili najpierw uruchamiam aplikację „Wyświetlacze”, a następnie zmieniam ustawienia i potwierdzam. Ale w rzeczywistości jest to dość pracochłonna procedura, ponieważ chcę zmienić orientację nawet kilka razy na minutę.

Czy jest na to wskaźnik lub odpowiednik? Czy mogę ustawić skrót klawiaturowy, który uruchamiałby dedykowane polecenie? W rzeczywistości myślę o czymś podobnym do programu Windows iRotate .

Agmenor
źródło

Odpowiedzi:

94

Przejdź do Klawiatura -> Skróty, wybierz „Skróty niestandardowe” i naciśnij „+”, aby dodać nowy skrót.

„Nazwa” to opisowa nazwa akcji (tzn. „Obróć monitor”). W „Poleceniu” wpisz niestandardowe polecenie, które ma być uruchamiane, gdy skrót jest aktywny.

Gdy skrót znajdzie się na liście, wybierz jego wiersz, naciśnij klawisz ENTER, a następnie kombinację klawiszy, którą chcesz aktywować. W przypadku konfliktu menedżer skrótów poinformuje Cię o tym i możesz wybrać inną kombinację.

Możesz mieć skrót, aby włączyć obrócony wyświetlacz, a drugi, aby przywrócić go do pozycji pionowej. Możesz nawet, jeśli masz wystarczającą wiedzę, napisać polecenie, które zachowuje stan i po prostu przełącza między pozycją pionową / obróconą.

Teraz, jeśli chodzi o polecenie, którego musisz użyć, prawdopodobnie jest to xrandr:

xrandr --output HDMI1 --rotate left

xrandr --output HDMI1 --rotate normal

Parametr wyjściowy zależy od portu, do którego podłączony jest monitor. Aby zobaczyć, co aktualnie masz, wpisz:

xrandr -q

Mój mówi:

Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
   1366x768       60.0*+
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA2 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)

W tym przypadku moim wyjściem będzie LVDS1, ponieważ wszystkie pozostałe są rozłączone.

roadmr
źródło
2
To jest wspaniałe.
Agmenor
Jestem nowy w systemie Linux i próbowałem to skonfigurować, ale kiedy używam polecenia, nic się nie dzieje. Czy muszę coś jeszcze skonfigurować, aby moje niestandardowe skróty klawiaturowe działały? Wbudowane polecenia działają, ale nie te niestandardowe, które utworzyłem. Używam Ubuntu 14.04. Postępowałem zgodnie ze wskazówkami i w wierszu poleceń napisałem następujące. xrandr --output HDMI1 - obrót w lewo Użyłem skrótu Ctrl + lewy. Kiedy używam tego polecenia w terminalu, wszystko działa świetnie. Po prostu nie za pomocą skrótu klawiaturowego.
nelsond
@nelsond czy sprawdziłeś, że używasz HDMI1 z xrandr -q?
Starszy Geek
11
Hej, robienie xrandr -o rightrównież działa i nie trzeba określać bieżącego celu
whitenoisedb
Dostałem output LVDS1 not found;i output HTMI1 not found;dzięki komentarzowi @ whitenoisedb, którego po prostu użyłem xrandr -o normal, bez podania --outputargumentu, aby przywrócić ekran w normalnym kierunku.
Paul Rougieux,
16

Działa świetnie z

xrandr --output LVDS1 --rotate left
xrandr --output LVDS1 --rotate right
xrandr --output LVDS1 --rotate inverted
xrandr --output LVDS1 --rotate normal
Vergadin TheDwarf
źródło
Czy istnieje alternatywa, która nie włącza i nie wyłącza ekranu (używam fglrx)
Suici Doga,
idealne rozwiązanie
Waseem,
5

Oto dobry przykład, jak to zrobić na podstawie danych wejściowych czujnika: https://linuxappfinder.com/blog/auto_screen_rotation_in_ubuntu

Zasadniczo wypróbuj powyższe, aby zidentyfikować ekran, który chcesz obrócić. W zależności od modelu monitora może być czujnik, który wysyła sygnał?

Działa to ładnie dla mojego Lenovo Yoga 2 11 z wbudowanym czujnikiem obrotu i porusza także dokiem jedności.

Scenariusz:

#!/bin/sh
# Auto rotate screen based on device orientation

# Receives input from monitor-sensor (part of iio-sensor-proxy package)
# Screen orientation and launcher location is set based upon accelerometer position
# Launcher will be on the left in a landscape orientation and on the bottom in a portrait orientation
# This script should be added to startup applications for the user

# Clear sensor.log so it doesn't get too long over time
> sensor.log

# Launch monitor-sensor and store the output in a variable that can be parsed by the rest of the script
monitor-sensor >> sensor.log 2>&1 &

# Parse output or monitor sensor to get the new orientation whenever the log file is updated
# Possibles are: normal, bottom-up, right-up, left-up
# Light data will be ignored
while inotifywait -e modify sensor.log; do
# Read the last line that was added to the file and get the orientation
ORIENTATION=$(tail -n 1 sensor.log | grep 'orientation' | grep -oE '[^ ]+$')

# Set the actions to be taken for each possible orientation
case "$ORIENTATION" in
normal)
xrandr --output eDP1 --rotate normal && gsettings set com.canonical.Unity.Launcher launcher-position Left ;;
bottom-up)
xrandr --output eDP1 --rotate inverted && gsettings set com.canonical.Unity.Launcher launcher-position Left ;;
right-up)
xrandr --output eDP1 --rotate right && gsettings set com.canonical.Unity.Launcher launcher-position Bottom ;;
left-up)
xrandr --output eDP1 --rotate left && gsettings set com.canonical.Unity.Launcher launcher-position Bottom ;;
esac
done

i warunkiem dla czujników:

sudo apt install iio-sensor-proxy inotify-tools
Vincent Gerris
źródło
monitor-sensornie tworzy żadnych wyników. Czy wiesz, czy mogę to skonfigurować? Mam hp i lsmod | grep accpokazyhp_accel 28672 0 lis3lv02d 20480 1 hp_accel
Mina Michael
@MinaMichael może występować błąd jądra. Spójrz tutaj
JrBenito,
Działa na jądrze 4.8, może to być błąd w późniejszych wersjach, ponieważ skrypt, którego używam przestał działać na wersjach nigdy. Prosimy o udział w zgłoszeniu błędu, jeśli możesz, lub zgłoszenie nowego błędu, jeśli dotyczy.
Vincent Gerris,
1

Aby to zrobić, napisałem skrypt powłoki. (Wymaga awr xrandr grep)

#!/bin/sh
# invert_screen copyright 20170516 alexx MIT Licence ver 1.0
orientation=$(xrandr -q|grep -v dis|grep connected|awk '{print $4}')
display=$(xrandr -q|grep -v dis|grep connected|awk '{print $1}')
if [ "$orientation" == "inverted" ]; then
   xrandr --output $display --rotate normal
else
   xrandr --output $display --rotate inverted
fi

Jeśli lubisz jednowarstwowe:

[ "$(xrandr -q|grep -v dis|grep con|awk '{print $4}')" == 'inverted' ] && xrandr -o normal || xrandr -o inverted
Alexx Roche
źródło
1
Dla mnie to $5zamiast $4.
Nicolai
1
Z xrandr - wersja 1.5.0 $ 5 działa dla mnie (niebezpieczeństwo użycia wyjścia tekstowego) [ "$(xrandr -q|grep -v dis|grep con|awk '{print $5}')" != 'inverted' ] && xrandr -o inverted || xrandr -o normaljest bezpieczniejsze, ponieważ domyślnie „normalne”
Alexx Roche