Always-on tablet dashboard (Calendar / Todo / Memo / Weather).
Mac側で軽量HTTPサーバを動かし、dタブレットはブラウザで開きっぱなしにする構成です。
/… 日時/天気 + カレンダー(月表示: 予定をマス内に表示 / 祝日は赤)+ ToDo(Local or Google Tasks)+ メモ/timer… 大時計 + ポモドーロ(25/5・50/10)- タブレット(タッチ端末)ではメモはデフォルト閲覧専用(入力しない想定)
予定/ToDo/メモを サンプル表示 にしたい場合(ポートフォリオ用スクショ等):
/?demo=1/?kiosk=1&demo=1
~/desk起動するとURLが表示されます(ポートは自動で衝突回避します)。
停止/再起動/確認:
~/desk stop
~/desk restart
~/desk status(デバッグで直接起動したい場合)
cd ~/desk_screen
python3 server.py~/desk_screen/.env(~/desk_screen/.env.example をコピー)に DESK_SCREEN_... を書いておくと、起動時に自動で読み込みます。
例:
DESK_SCREEN_CALENDAR_SOURCE=google
DESK_SCREEN_CALENDAR_RANGE=1mデフォルトで「天気 + 気温」を表示します(約10分キャッシュ)。
場所指定(どちらか):
# 都市名(ジオコーディング)
DESK_SCREEN_WEATHER_CITY=東京
# 緯度経度(任意で表示名)
DESK_SCREEN_WEATHER_LAT=35.681236
DESK_SCREEN_WEATHER_LON=139.767125
DESK_SCREEN_WEATHER_LABEL=東京無効化:
DESK_SCREEN_WEATHER_ENABLE=0- 初回起動時に「空いているポート」を自動選択して起動します(他プロセスと被らない)。
- 選ばれたポートは
~/desk_screen/port.txtに保存され、次回以降も基本は同じポートを使います。 - もし固定したい場合は環境変数で指定できます(使用中なら自動で別ポートに逃げます):
DESK_SCREEN_PORT=58080 python3 server.py同じWi‑Fiに接続して、タブレットのブラウザで開きます。
http://<MacのIP>:<表示されたポート>/?kiosk=1(壁掛け/常時表示向け)http://<MacのIP>:<表示されたポート>/timer
同一ネットワークで Bonjour/mDNS が使える環境なら、IPが変わっても .local でアクセスできます:
http://<MacのLocalHostName>.local:<表示されたポート>/?kiosk=1
- 画面右上の「全画面」または「タップで全画面」から切替できます
- 全画面中は上部バーが数秒で自動的に隠れます(タップで再表示)
初回実行時に「カレンダーへのアクセス許可」が出るので許可してください。
すでにMacのCalendar.appにGoogleアカウントを追加している場合は、この仕組み(AppleScript)だけでGoogleカレンダーも表示できます。
Googleアカウントから Google Calendar / Google ToDo(= Google Tasks) を直接取得したい場合は、1回だけOAuth設定します。
前提:
- Google Calendar API / Google Tasks API を有効化
- 基本は「OAuthクライアントのGCPプロジェクト」でON
- もしクライアントのプロジェクトに権限が無い/不明な場合は、Quota Project で回避できます(下を参照)
セットアップ(OAuthクライアントJSON/既存トークンJSONから client_id / client_secret を流用):
cd ~/desk_screen
python3 setup_google_oauth.py --from <YOUR_OAUTH_JSON_PATH> --open.env に DESK_SCREEN_GOOGLE_OAUTH_FROM を設定している場合は、これだけでもOKです:
~/desk oauth完了すると ~/desk_screen/credentials/user_oauth_token.json が作成されます。
~/desk restart/ の ToDo のタブを Google にするとGoogle ToDoが表示されます。
カレンダーは自動で google_oauth が優先されます(失敗時はApple/サービスアカウントにフォールバック)。
HTTP 403 ... API has not been used in project XXXXX before or it is disabled が出る場合、OAuthクライアントのプロジェクト側が原因のことがあります。
そのプロジェクトに権限が無い/触れない場合は、自分が権限を持つGCPプロジェクトを Quota Project に指定して回避できます。
- Quota Projectを決める(例:
my-quota-project-123など) - そのプロジェクトでAPIを有効化:
gcloud services enable calendar-json.googleapis.com tasks.googleapis.com --project=<YOUR_PROJECT_ID>~/desk_screen/.envに保存:
DESK_SCREEN_GOOGLE_QUOTA_PROJECT=<YOUR_PROJECT_ID>- 再起動:
~/desk restartデフォルトは Google Calendarで「表示/選択中」のカレンダーを自動で統合します(primary固定ではありません)。
必要なら .env で変更できます:
DESK_SCREEN_GOOGLE_CALENDAR_MODE=selected # (default) 選択中+primary
DESK_SCREEN_GOOGLE_CALENDAR_MODE=primary # primaryのみ
DESK_SCREEN_GOOGLE_CALENDAR_MODE=all # 全カレンダー
DESK_SCREEN_GOOGLE_CALENDAR_IDS=id1,id2 # ID指定(最優先)カレンダーIDを確認したい場合:
~/desk calendarsデフォルトは 30日先まで です。環境変数で変更できます(例):
DESK_SCREEN_CALENDAR_RANGE=1m ~/desk restart # 1ヶ月(=30日)
DESK_SCREEN_CALENDAR_RANGE=4w ~/desk restart # 4週(=28日)
DESK_SCREEN_CALENDAR_RANGE=14d ~/desk restart # 14日
DESK_SCREEN_CALENDAR_DAYS=7 ~/desk restart # 7日(数値のみ)「Macに同期させず、Google Calendarから直接読む」場合はサービスアカウントで取得できます。
-
Google Calendarの設定 → 対象カレンダー → 共有 で、サービスアカウントメールを追加
(権限は「予定の表示(すべての予定の詳細)」推奨) -
Google Calendarの設定 → 対象カレンダー → 統合 の カレンダーID を控える
(通常はあなたのメールアドレスに近い文字列) -
設定ファイルを作成:
cd ~/desk_screen
cp google_calendar.example.json google_calendar.jsongoogle_calendar.json の calendar_ids をあなたのカレンダーIDに書き換えます。
(共有後にIDを確認したい場合)
cd ~/desk_screen
./list_google_calendars.py(共有済みのカレンダーを自動で google_calendar.json に書きたい場合)
cd ~/desk_screen
./configure_google_calendar.py <calendarId>- 再起動すると、
/の右上ステータスにgoogleが表示されます(失敗時はgoogle error: ...)。
~/desk_screen/todo.txt をMacで編集するだけです。
タブレットから追加/完了したい場合は / 画面の ToDo から操作できます。
Googleタブ: Google ToDo(Google Tasks)Localタブ:todo.txt
- 保存先:
~/desk_screen/memo.txt - PC/スマホから:
/画面の「メモ」欄(編集 + 保存) - タブレット(kiosk): デフォルト閲覧のみ
同一Wi‑Fi内から誰でも書き換え可能にしたくない場合はトークンを設定できます。
~/desk_screen/.envにDESK_SCREEN_TODO_TOKEN=...を設定- もしくは
~/desk_screen/todo_token.txtにトークン文字列を1行で保存
設定した場合、タブレット側は一度だけ http://<MacのIP>:<port>/?token=<トークン> で開いてください(以降は端末に保存されます)。
ログイン時に自動起動したい場合は launchd を使います。
有効化(インストール+起動):
cd ~/desk_screen
./launchd_enable.sh無効化(停止+アンインストール):
cd ~/desk_screen
./launchd_disable.shlaunchd_enable.sh が ~/Library/LaunchAgents/ 用の plist を自動生成するので、通常は手で編集不要です。


