以前に誰かがこの質問をしたかどうかを見ながら、私は Windowsの場合 に行きました。
Linux/Ubuntuで同様の操作(ショートカットまたはターミナルエイリアス/コマンド)を実行して、ディスプレイを設定して構成を確認する代わりに、横向きと縦向きモードの間で外部モニターをすばやく切り替えることができるようにします。
Jacob Vlijmは Pythonスクリプト を提供しましたが、これは動作します。別のアイデアがありましたら、私はそれについて知りたいです。
Update:Jacobのスクリプトが機能するように更新しました 接続されている場合は2つの画面用 。
以下のスクリプトは、画面のいずれかの回転を切り替えるものです。
#!/usr/bin/env python3
import subprocess
# --- set the name of the screen and the rotate direction below
screen = "VGA-1"
rotate = "left"
# ---
matchline = [
l.split() for l in subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()\
if l.startswith(screen)
][0]
s = matchline[
matchline.index([s for s in matchline if s.count("+") == 2][0])+1
]
rotate = "normal" if s == rotate else rotate
subprocess.call(["xrandr", "--output", screen, "--rotate", rotate])
toggle-rotate.py
として保存しますスクリプトのヘッドセクションで、以下を設定します。
xrandr
を実行して確認します)回転方向、left
またはright
(例のように引用符の間)。
# --- set the name of the screen and the rotate direction below
screen = "VGA-1"
rotate = "left"
# ---
コマンドでテスト実行します(ターミナルから2回):
python3 /path/to/toggle-rotate.py
すべてが正常に機能する場合は、ショートカットキーに追加します。システム設定>「キーボード」>「ショートカット」>「カスタムショートカット」を選択します。 「+」をクリックして、コマンドを追加します。
python3 /path/to/toggle-rotate.py
お好みのショートカットへ...
それでおしまい。
コマンドxrandr
の出力では、画面の現在の回転(存在する場合)は、画面の位置の直後に記載されます。次に例を示します。
VGA-1 connected 1024x1280+1680+0 left (normal left inverted right x axis y axis) 376mm x 301mm
この例では、1024x1280+1680+0 left
が表示されます。スクリプトは、スクリプトのヘッドに記載されている画面に対応する行を調べます。 if画面が回転すると、スクリプトは(xrandr
)コマンドを実行します。
xrandr --output <screen_name> --rotate normal
notの場合、実行されます(例):
xrandr --output <screen_name> --rotate left
画面を反時計回りに回転するには
私はジェイコブのスクリプトを使用しています。ただし、現在はアダプターを使用しているため、モニターがHDMIに接続されているか、アダプターを介して接続されているかにかかわらず、向きを切り替えることができます。このために、私はJavobのスクリプトを修正し、借りました 彼が書いた別の関数 :
import subprocess
def screens():
'''
get connected screens
'''
output = [l for l in subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()]
return [l.split()[0] for l in output if " connected " in l]
# --- set the name of the screen and the rotate direction below
# screen = "HDMI-1" # run "xrandr" to get the screen
rotate = "left" # the desired orientation
if "HDMI-1" in screens():
screen = "HDMI-1"
Elif "DP-1" in screens():
screen = "DP-1"
else:
pass
# ---
# only run if screen is declared (i.e. either HDMI-1 or DP-1 are connected)
if screen:
matchline = [
l.split() for l in subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()\
if l.startswith(screen)
][0]
s = matchline[
matchline.index([s for s in matchline if s.count("+") == 2][0])+1
]
rotate = "normal" if s == rotate else rotate
subprocess.call(["xrandr", "--output", screen, "--rotate", rotate])