Python Launcher.appでデスクトップにあるPythonファイルをダブルクリックしたらファイルに記述したアプリケーションが立ち上がるやつを作る
筆者環境
プライベートのPC
Mac OS Ventura 13.0
Python 3.9.12
モチベーション
作ってみたかったので作りました。
今回は、デスクトップに置いたこのファイルをダブルクリックしたらSlackが起動するものを作ります。
Slackをそのまま起動すればいいじゃん?って思った?
フツーにデスクトップアプリのSlackをDockから立ち上げればいいじゃんとか、ログイン時の自動起動するアプリの設定すればいいじゃんとか、よく知らんけどmacの automation使えばいいじゃん?って思ったけど、
とにかく今回はPythonでやってみたかったんです!!!!
あと、こうして起動できるようになれば、その後の夢も広がるじゃん???
というわけで、とにかく作りたかったので作ります。
コードを書く
JupyterでもVScodeでもお好みのものでいいと思います。
import subprocess
subprocess.Popen(['open', '/Applications/Slack.app'])
起動させるだけなら、たったこれだけ。シンプル。さすがPython。
使用しているモジュール subprocess
うわあ、ドキュメント全然わからん、というわけで日本語ブログに頼ります。
ここでもう一度コードを見てみます。
import subprocess
subprocess.Popen(['open', '/Applications/Slack.app'])
1行目、import subprocess これはまずモジュールをimportってことで良いでしょう。詳しくは知らんけど、ライブラリを呼び出してる的な、先人の頭の良い人たち、こんな素敵なの用意してくれてありがとう、感謝のimportです。そう、importは感謝の呪文なのです(?)
2行目。今回はmacで動かしているので、
Popen関数の書き方に注意です。
引数は二つ。
多分['命令','アプリのパス']のような形。
最初に'open'
↑これの大元が多分きっとドキュメントに書いてありそうな気がする。
アプリのパスを取得する
今回はSlackを起動させたいので、Slackのアプリケーションのパスを取ってきます。
macの場合、たいていアプリケーションの中にあるはずです。
で、コピーすると、私の場合は下記のパスになる。
/Applications/Slack.app
なのでこれを使って、コードは下記となる。
import subprocess
subprocess.Popen(['open', '/Applications/Slack.app'])
デスククトップにPythonファイルを置いて、それをクリックしたらSlackを起動するようにする
ただデスクトップに置いただけだと、ファイルをクリックするとエディタ(私の場合はVS Code)が立ち上がると思います。なので、このファイルをどのアプリケーションで開くか指定してやる必要があります。
まずは現在の状況を見てみましょう。
結論、このVS CodeをPython Launcher.app に変更すれば、ファイルをクリックしたときにSlackが立ち上がるようになります。
Python Launcher.app ってなんだよ
なんか昨夜、色々ガチャガチャやってたらできるようになった。
すまん、詳しくわからん。わかったら書く。
あ、思い出してきた。これ見たんだ。
未解決の事項
Preferenceが立ちあがっちゃう問題
一個わからないのが、これで立ち上げるとPython Launcher.app のPreferenceの画面が出る時と出ない時がある。わからん。出ないようにしたい。
仮説だが、おそらくPython Launcher.appが立ち上がっている状態でファイルをクリックするとPreferenceが出ない。
Slackを起動したときに表示されるワークスペースはどう制御するのだ
わからん。前回開いていたワークスペースがそのまま立ち上がるっぽい。
デスクトップに置いたアイコンの見た目をどうにかしたい問題→解決した。
たぶんどこかに情報があって、編集すればできそう。
いらすとやさんでボタンぽい画像を探し、DL
気になってるけどまだやってないこと
Chromeを立ち上げるときの
アカウントどうんすんねや。
謝辞
ホッタさん、ありがとう!
https://twitter.com/Hotta3216
とりあえずこんなとこです!!
#Python
#PythonLauncher .app
#subprocess
#ノンプロ研
いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!