0
0

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.

FluffyDisplay が便利だった話

Last updated at Posted at 2021-11-24

FluffyDisplay が便利だったけど少し改造した話

FluffyDisplay は仮想ディスプレイを作成するツール。
少し改変すればソフトウェア制御で好きな解像度の画面共有を使えるようになります。

便利だったけど使ってる人が少なそうだったので宣伝。

結論

mac内蔵ディスプレイだけでは不可能な、メインマシンの解像度と同じ4Kな仮想ディスプレイを作りました。
image.png

背景

古いmacを画面共有で使ってます。

Profileで分けるにもChrome君がメモリ馬鹿喰いなのと、
趣味用と仕事用でPCを分けておきたいのと、で、余ったPCに仕事をさせようと考えた時。
何枚もモニタを用意して表示させておくのも首が保たないので、画面共有を使うという発想になりました。

これが意外と快適なので、win機もParallelsを使ってたんですが、物理PCでRemoteDesktopを使うようになりました。
M1でwinが動かせないな。っていうので実機を使うように移行していた、
昨今のリモートワーク情勢においてwinを仮想環境として持ち歩かなくても大丈夫になった、という背景もあります。

問題

ただメインPCには4kなモニタがあり、そこにリモートmacを全画面で表示させたい。と思うのですが。
クラムシェルにしてるmacには別にモニタを繋がずな状態だと、内臓ディスプレイの解像度に依存した画面しか出力できません。
DisplyaMenu(alt: QuickRes) などを使って内部解像度を上げて共有したとしても、
画面比率を誤魔化すことができず横に黒帯ができてしまいます。

一応の解決

環境としてはよくあるUSB-C 2portを HDMI / USB-A / SDカード / USB-C(PD) / USB-C 。。。 etc なハブを使って
そこにHDMIのダミープラグを差し、4K HDMI プラグに出力しているように見せかけていると、4K解像度の画面共有ができるという寸法です。

別の問題

しかしながら。ひょんなことで ハブをLAN付きな製品にアップデートしましたところ、
相性問題でしょうか、ダミープラグに出力できませんでした。

探す

困ったな。ということで、少し調査してみる。
発想としては Sidecar などの実現方法はどうなってるのかな。
内部的には仮想モニタを作ってそう。みたいな形で、APIを探したりしてました。

そんな調査の折 FluffyDisplay を見つけました。

少し違う

対応している解像度がずらっと出るので4Kを選択

image.png

したものの作られたディスプレイはFHD解像度
image.png

HiDPIな設定なりが影響してそう?
じゃ、8Kを設定できれば?と思ったけど、6Kまでしか設定がない、

new on peer も少しだけ違う。

複数PCで FluffyDisplay を起動しておくと別PCのモニタの解像度に合わせて仮想ディスプレイを作成できる。
作成するとその仮想ディスプレイを自動的に画面共有にしてくれる。

これでいいじゃん。と思わなくもないのだけど、
状況としては画面共有下で操作してるのに、作成と同時に画面共有のセッションがスタートする混乱を招いた。
あと、別PCで起動しなくて済むならそれがいいなと。

改造

ソースを読ませてもらったら単純にいくつかの解像度&HiDPIな定義などのパターンを用意しているだけ。
cloneして、Xcodeでちょちょっと書き換えて
いまのところ手元で動けばいいので Code Signing は [Sign to Run Locally] でビルド(実際のところよくは理解してない)

diff --git a/FluffyDisplay/AppDelegate.swift b/FluffyDisplay/AppDelegate.swift
index a15806b..83d746b 100644
--- a/FluffyDisplay/AppDelegate.swift
+++ b/FluffyDisplay/AppDelegate.swift
@@ -43,6 +43,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NetServiceDelegate, NetServi
       Resolution(4096, 2304, 219, true,  "21.5-inch iMac with Retina 4K display"),
       Resolution(3840, 2400, 200, true,  "WQUXGA"),
       Resolution(3840, 2160, 200, true,  "UHD"),
+      Resolution(3840, 2160, 200, false,  "UHD LowDPI"),
       Resolution(3840, 1600, 200, true,  "WQHD+, UW-QHD+"),
       Resolution(3840, 1080, 200, true,  "DFHD"),
       Resolution(3072, 1920, 226, true,  "16-inch MacBook Pro with Retina display"),

実行してみたのが最初のスクショ。
上記解像度のPRを投げるかは検討中。

ここまでの総括

カスタム解像度をUIから設定できるようなのもissueがあったりするので、それがあればローカルビルドもいらなくなるので期待。
UI用意されるならPR要らないなーという感じです。

備考

macの画面共有を快適に使うには有線LANが必須だな。と個人的に思ってます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?