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.

〔Mac〕 ShiftItのメニューをビジュアル化する

Last updated at Posted at 2021-11-11

ShiftItとは

ShiftItとは、MacOSでウィンドウのサイズと位置を管理する、ウィンドウ配置ツールのことです。

ShiftItは当Qiitaでも多くの方が記事にしているので、Macでは定番のユティリティソフトと思われますが、自分はつい最近知って使い始めたばかりです。

当初、このようなツールを自作しようと、アクティブウィンドウの求め方や外部プログラムからアクティブウィンドウのサイズや位置の設定方法を調べようとネットサーフィンしていて、ShiftItの存在を知りました。

起動するとメニューバーに常駐し、クリックすると↓このようなメニューが現れます。
LeftRightTopBottomなど、英単語で位置を表現しているので パッと見で分かりません。これにアイコンを付加して見やすくビジュアル化しようというのが、この記事の主旨です

before.png

ビジュアル化したメニュー

↓このようなアイコンを付加しました。字面を追わずとも視覚的に分かるようになったと思います。
after.png

これには、コードの変更は不要で、XcodeでMainMenu.xibを開き、Interface BuilderでMenuItemにImageを指定するだけで実現できます。

ShiftItのソースコードはGitHubに公開されているので、それをダウンロードしてXcodeでMenuItemを加工してビルドします。

使用したアイコンのイメージファイルは、今回自分でデザインしたものです。稚拙なデザインですがこれでよいという方はご自由にご使用ください。(72x72のアルファチャンネル無しPNGファイル)

left.png right.png top.png bottom.png
topleft.png topright.png bottomleft.png bottomright.png
lefttrirdtop.png lefttrirdbottom.png centertrirdtop.png centertrirdbottom.png righttrirdtop.png righttrirdbottom.png
Lefttrird.png centertrird.png righttrird.png
center.png togglezoom.png maximize.png togglefullscreen.png
increase.png reduce.png

「もっとよいアイコンがあるよ」という方がいらしたらイメージファイルを共有してください。

コンパイルエラーが出る

自分の今回の環境は、Intel Mac / macOS 11.6.1 (20G224) / Xcode 13.1 (13A1030d) / Swift 5.5.1 ですが、ShiftItのプロジェクトは数年前の古いXcodeのバージョンです。Xcodeで開くと古いプロジェクトをマイグレーションしてくれますが、下記の1箇所だけコンパイルエラーが残ります。

FMTHotKeyManager.m
objc_msgSend([hotKeyReg provider], [hotKeyReg handler], [hotKeyReg userData]);  
==> Too many arguments to function call, expected 0, have 3

どうやら現在のobjc_msgSendには引数が無いことが原因です。ここで行き詰まったのですが、「こちらの記事」に解決策がありました。

Build SettingsEnable Strict Checking of objc_msgSend Callsの値をNoに変更することでコンパイルが通り無事にビルドすることができます。ワーニングは多数出たままですが動作します。
objc_msgSend.png

おわりに

ShiftItはメニューバーにShiftItアイコンを表示しないオプションがあるぐらいなので、ショートカットキーによりウィンドウ配置を指示するのが普通で、メニュー項目にアイコンなど不要という考えなんでしょうかね。しかし、メニューから選択する使い方もあるので、最初からアイコンがあってもいいと思うのですがどうでしょうか。
でも、まあ、よく使う配置はショートカットキーを覚えるでしょうけど。

ちなみに、Toggle ZoomToggle Full Screenが同じ動作に思えます。OSのバージョンが上がって動作が同じになったのでしょうか? 元の機能がよく分かっていないので、勘違いかも知れません。

今回の記事は以上です。何かの参考になれば幸いです。

追伸

メニューが日本語ローカライズされていませんでした。リソースがターゲットから外れていたことが原因でした。


なお、個人的には、

$左\frac{2}{3}$と$右\frac{2}{3}$の配置パターンも欲しいので、次はこれを追加しようと思います。

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?