aubadeのブログ

PR

×

プロフィール

aubadeHA

aubadeHA

カレンダー

バックナンバー

2026.05
2026.04
2026.03
2026.02
2026.01

カテゴリ

Mac

(8)

Miscellaneous

(16)

Life in USA

(31)

Linux

(1)

Python

(1)

コメント新着

aubadeHA @ Re:Shiftitの代替を探して(10/18) ウィンドウを第1〜4象限に縮小・移動する…
aubade@ Re:音楽の宿題(05/28) 子供のバイオリンの先生が英語音名を使う…
通りすがりのショートカット愛好者@ Re:Shiftitの代替を探して(10/18) 今年になり、hammerspoon-shiftit という…

キーワードサーチ

▼キーワード検索

2019.10.18
XML
カテゴリ: Mac
Windowsでは簡単に実現できる、ウィンドウを左/右半分に表示したり全画面表示したりすることがMacではできないのが悩みでした。もちろん全画面表示やSplit viewも標準で用意されているのですが、やりたいこととちょっと違うんですよね。これを実現するために便利に使っていたShiftitがmacOS Catalinaで対応しなくなったようで(?)、他の方法を探していたところ、Hammerspoonというのを見つけました。ここ数日使って満足しているので、設定の方法を備忘録的に書きます。

Step 0 - Shiftitを削除する。

Step 1 - ​ Hammerspoon ​を​ ダウンロード ​、インストールする。ダウンロードファイルはZipファイルなので、ダウンロードしたら解凍して、アプリケーションフォルダにドラッグドロップする。

Step 2 - Hammerspoon preferencesという画面で、Enable accessibilityというボタンを押すとシステム環境設定でアクセシビリティが開くので、Hammerspoonを許可する。

Step 3 - メニューバーのショートカットをクリックし、open configを開く。以下のコマンドをコピーアンドペーストする。コマンドの中身は、alt+command+Fで全画面表示、alt+command+矢印でそれぞれ画面半分にできるようになるものです。


hs.hotkey.bind({"cmd", "alt"}, "Left", function()
  local win = hs.window.focusedWindow()
  local f = win:frame()
  local screen = win:screen()
  local max = screen:frame()
  f.x = max.x
  f.y = max.y
  f.w = max.w / 2
  f.h = max.h
  win:setFrame(f)
end)
hs.hotkey.bind({"cmd", "alt"}, "Right", function()
  local win = hs.window.focusedWindow()
  local f = win:frame()
  local screen = win:screen()
  local max = screen:frame()
  f.x = max.x + (max.w / 2)
  f.y = max.y
  f.w = max.w / 2
  f.h = max.h
  win:setFrame(f)
hs.hotkey.bind({"cmd", "alt"}, "F", function()
  local win = hs.window.focusedWindow()
  local f = win:frame()
  local screen = win:screen()
  local max = screen:frame()
  f.x = max.x
  f.y = max.y
  f.w = max.w
  f.h = max.h
  win:setFrame(f)
end)
hs.hotkey.bind({"cmd", "alt"}, "down", function()
  local win = hs.window.focusedWindow()
  local f = win:frame()
  local screen = win:screen()
  local max = screen:frame()
  f.x = max.x
  f.y = max.y + (max.h / 2)
  f.w = max.w
  f.h = max.h / 2
  win:setFrame(f)
end)
hs.hotkey.bind({"cmd", "alt"}, "up", function()
  local win = hs.window.focusedWindow()
  local f = win:frame()
  local screen = win:screen()
  local max = screen:frame()
  f.x = max.x
  f.y = max.y
  f.w = max.w
  f.h = max.h / 2
  win:setFrame(f)
end)


Step 5 - config画面(init.luaというタイトル)を一旦閉じ、メニューバーのショートカットからReload configをクリックする。以上でShiftitライクに動作すると思います。ショートカットキーを自分仕様に変えちゃってたかもしれないですが。。忘れました。

Step 6 - ​ Hammerspoon getting started ​ではいろいろなコマンドが紹介されている(iTunesを操作するなど)ので、アレンジしてください。





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2019.10.18 06:10:51
コメント(2) | コメントを書く


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


Re:Shiftitの代替を探して(10/18)  
通りすがりのショートカット愛好者 さん
今年になり、hammerspoon-shiftit というツールが出ました。(リンクを省きます。github と検索すればすぐにヒットします。)

今日は調べていて、こちらのサイトも拝見していました。
セットアップもシンプルなので、お勧めします。

自分は別のソフトのために hammerspoon を使い始めました。
いい感じに統合できないかと思い、hammerspoon-shiftit に辿りました。

お勧めします。 (2020.09.06 21:56:06)

Re:Shiftitの代替を探して(10/18)  
aubadeHA  さん
ウィンドウを第1〜4象限に縮小・移動するには以下のスクリプトをConfigureに追加してください。

hs.hotkey.bind({"cmd", "alt"}, "1", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
f.x = max.x + (max.w / 2)
f.y = max.y / 2
f.w = max.w / 2
f.h = max.h / 2
win:setFrame(f)
end)
hs.hotkey.bind({"cmd", "alt"}, "2", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
f.x = max.x / 2
f.y = max.y / 2
f.w = max.w / 2
f.h = max.h / 2
win:setFrame(f)
end)
hs.hotkey.bind({"cmd", "alt"}, "3", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
f.x = max.x
f.y = max.y + (max.h / 2)
f.w = max.w / 2
f.h = max.h / 2
win:setFrame(f)
end)
hs.hotkey.bind({"cmd", "alt"}, "4", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
f.x = max.x + (max.w / 2)
f.y = max.y + (max.h / 2)
f.w = max.w / 2
f.h = max.h / 2
win:setFrame(f)
end) (2021.01.20 23:52:10)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: