1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

displayplacerを使って、キーボードショートカットで外部ディスプレイの表示を回転させる【Mac, Big Sur】

Posted at

最近、研究室の自分のデスクのディスプレイにモニターアームをつけた。安いのにかなりしっかりしている。快適研究ライフの始まりである。解析や発表スライドを作成したり、Zoomでミーティングするときはディスプレイは横向きで使い、論文を読み書きするときはくるっと回して縦型で使う。素晴らしい。

しかし、1つ不便なところがある。表示を回転させる変更が少しめんどくさいのである。環境設定を開き、ディスプレイタブで外部ディスプレイの表示を回転させる。たまに確認も入り、自動的に元に配置に戻ってしまうこともある。
 2021-10-27 17.59.36.png

そこで、displayplacerというコマンドラインツールをAutomator上で実行し、キーボードショートカットで呼び出せばいいのだが、まとめてある記事があまり見当たらなかったのでメモ。もしかしたら、そこまで需要がない、もしくはもっといい方法があるのかもしれない。

fb-rotateというものもあるが、ディスプレイのメインが変更されると怖いので、displayplacerにした。

縦型表示のすゝめ

ダミーテキストで比較した。縦型表示の方が一度にたくさんの文を読めるので、論文が読みやすい。

横型表示 縦型表示
Screenshot 2021-10-27 at 16-51-17 Lorem Ipsum - All the facts - Lipsum generator.png Screenshot 2021-10-27 at 16-51-46 Lorem Ipsum - All the facts - Lipsum generator.png

displayplacerのインストール

displayplacerはmacOSで複数ディスプレイの配置や情報をいじるコマンドラインツールです。Homebrewを用いてインストールします。ターミナル上で次のコマンドを実行します。

$ brew tap jakehilborn/jakehilborn && brew install displayplacer
  • Big Surにしてから放置していたせいで、brew upgrade/updateしてもCommand Line Toolのエラーでインストールで少し詰まった。これを見れば理解できる。

ディスプレイの配置情報を取得する

displayplacerがインストールできたら、ターミナル上で次のコマンドを実行する。

$ displayplacer list

すると、次のようにたくさん出力される。

     :
     :
     :
  mode 68: res:2560x1600 hz:50 color_depth:4
  mode 69: res:2560x1600 hz:50 color_depth:8

Execute the command below to set your screens to the current arrangement:

displayplacer "id:EA8876A9-951C-B458-A168-05BC015C42A8 res:1440x900 color_depth:4 scaling:off origin:(0,0) degree:0" "id:B8CE0AF7-C3CC-8AA5-03CD-20CF70F8FF2B res:1920x1080 hz:60 color_depth:4 scaling:off origin:(-1920,-1080) degree:0"

この最後の行に表示されるコマンドをターミナルで叩けば、今のディスプレイ配置に変更される。自分で環境設定をいじって、初期配置と回転させた時のコマンドを用意してください。

Automatorでクイックアクションを作成する

Automatorを開いて、クイックアクションを選択する。
 2021-10-27 19.04.48.png

シェルスクリプトを実行アクションを持ってきて、先ほど用意したコマンドを貼り付ける。ワークフローが受け取る項目は入力なしにする。
 2021-10-27 19.06.36.png

/usr/local/bin/displayplacer "id:EA8876A9-951C-B458-A168-05BC015C42A8 res:1440x900 color_depth:4 scaling:off origin:(0,0) degree:0" "id:B8CE0AF7-C3CC-8AA5-03CD-20CF70F8FF2B res:1080x1920 hz:60 color_depth:4 scaling:off origin:(-1080,-1257) degree:270"
afplay "/System/Library/Sounds/Ping.aiff"

アクションの実行環境はターミナルの環境依存を継承しないので、displayplacerコマンドをそのまま使うことができない。なので、displayplacer "id: ..."の前に、/usr/local/bin/をつけておく。afplay ~は実行が終わったのを確認するために、入れた。なくてもいいが、あるとわかりやすい。音はいろんな場所に散らばってるので、好みのものを探してください(参考)。

ショートカットに割り当てる

クイックアクションを保存したら、環境設定を開き、キーボード -> ショートカット -> サービスと開いていき、一般タブに先ほど作成したアクションがあるので、他と被らないキーを割り当てる(被ってたら実行しないので注意)。
 2021-10-27 19.36.56.png

これで、ディスプレイの配置回転を所望の位置に変更するショートカットができました。

今後の展望

今回のレベルで十分だったので最低限で実装しましたが、もっと一般的に対応させたいですね。回転させる前にディスプレイの情報を取得して動的にコマンドを変化させれば、自宅と研究室など複数の場所で作業する時に便利そう。現在のディスプレイの情報をどこかに保存しておけば、ショートカットキーも1つで済みそうです。
Swift, Flutterをたまに触るので、メニューバーアプリを作って、そこからGUIで操作したり。。。

まあ、こんな記事を書く暇があるなら、論文を読もう。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?