Google Calendarの予定をデスクトップ壁紙として表示するPythonアプリケーション
🇬🇧 English summary below · Jump to English section
Google Calendarと連携し、今日と今週の予定を壁紙として自動生成・設定するデスクトップアプリケーションです。7種類のテーマ、複数Googleアカウント対応、自動更新、カスタム背景画像など多彩な機能を備えています。
- Google Calendar連携: OAuth2認証でカレンダーデータを取得(複数アカウント対応)
- 7種類のテーマ: simple, modern, pastel, dark, vibrant, luxury, playful
- 週間カレンダー表示: 今日と1週間の予定を見やすく表示
- カスタム背景: 背景画像のアップロードまたはグラデーション背景に対応
- macOS / Windows 対応: Python 環境で動作(macOS・Windows・Linux)
- マルチディスプレイ対応: 解像度自動検出、複数モニター環境で柔軟に設定可能
- GUI/CLI 両対応: 設定ダイアログ付きGUIとコマンドライン操作
- 自動更新: 常駐アプリとして定期的に壁紙を自動更新(アプリが起動していない場合、日付が変わっても壁紙は更新されません)
- 省メモリ設計: フォント遅延ロード・画像キャッシュ・リソース自動解放
必要要件: Python 3.11 以上 / Googleアカウント
# 1. リポジトリをクローン
git clone https://github.com/Otola-Ryntaro/Calesk.git
cd Calesk
# 2. 仮想環境を作成・有効化
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 3. パッケージをインストール
pip install -r requirements.txt
# 4. アプリを起動
python run_gui.py初回起動前に Google Calendar API 設定 が必要です(約10〜15分)。
詳細なセットアップ手順は USER_GUIDE.md を参照してください。
python run_gui.pyGUI画面で以下の操作が可能:
- テーマ選択とリアルタイムプレビュー
- 背景画像のアップロード
- 複数Googleアカウントの管理
# 壁紙を即座に更新
python main.py --run-once
# デーモンモード(定期的に自動更新 + 通知機能)
python main.py --daemon7種類のデザインテーマから選択可能:
| テーマ | 説明 |
|---|---|
| simple | シンプル系(白背景、黒文字、角丸なし) |
| modern | モダン系(半透明白カード、角丸、影付き) |
| pastel | パステル系(淡い色、優しい印象) |
| dark | ダーク系(半透明黒カード、ゴールドアクセント) |
| vibrant | 鮮やか系(鮮やかな色、元気な印象) |
| luxury | ラグジュアリー系(アイボリー、ゴールドアクセント) |
| playful | プレイフル系(コーラルピンク、ターコイズ) |
テーマはGUIの設定ダイアログまたはsrc/config.pyで変更できます。
主な設定はsrc/config.pyで変更できます:
IMAGE_WIDTH = 1920
IMAGE_HEIGHT = 1080
THEME = 'simple'
WALLPAPER_TARGET_DESKTOP = 1 # 0=全て, 1=desktop1, 2=desktop2
AUTO_DETECT_RESOLUTION = True詳細はUSER_GUIDE.mdを参照してください。
source venv/bin/activate && python -m pytest tests/ -v --tb=shortテスト数: 669件
MVVM + Service層
UI (PyQt6) -> ViewModel -> WallpaperService -> ImageGenerator / CalendarClient
|-- EffectsRendererMixin
|-- CardRendererMixin
+-- CalendarRendererMixin
Calesk/
├── src/ # ソースコード
│ ├── models/ # データモデル
│ ├── renderers/ # 描画Mixin
│ ├── ui/ # GUI関連
│ ├── viewmodels/ # ViewModel層
│ ├── calendar_client.py # Google Calendar API
│ ├── image_generator.py # 壁紙画像生成
│ ├── themes.py # テーマ定義(7種)
│ └── config.py # 設定ファイル
├── tests/ # テストコード(669件)
├── assets/ # リソース(背景画像等)
├── credentials/ # 認証情報(.gitignore対象)
├── main.py # CLIエントリーポイント
├── run_gui.py # GUIエントリーポイント
├── requirements.txt # 依存パッケージ
├── README.md # このファイル
└── USER_GUIDE.md # ユーザーガイド
本アプリが外部と通信するのは Google Calendar API のみ です。それ以外のサーバーへのデータ送信は一切行いません。
- スコープ:
calendar.readonly(カレンダーの読み取り専用) - 認証情報の保管:
credentials/ディレクトリにローカル保存(.gitignore対象) - トークンファイル:
token.jsonはパーミッション600(所有者のみ読み書き可能)で保存
音良林太郎 - @Otola_ryntaro
MIT License © 2026 音良林太郎
プルリクエストは歓迎します。大きな変更の場合は、まずissueを開いて変更内容を議論してください。
問題が発生した場合は、Issues で報告してください。
Calesk automatically generates your desktop wallpaper from Google Calendar events — showing today's schedule and the week ahead, updated in the background.
- Python 3.11 or later
- macOS / Windows / Linux
- Google account
git clone https://github.com/Otola-Ryntaro/Calesk.git
cd Calesk
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python run_gui.pySee USER_GUIDE.md for step-by-step setup instructions including Google Calendar API configuration.
- Syncs with Google Calendar via OAuth2 (read-only, multiple accounts supported)
- 7 visual themes: simple, modern, pastel, dark, vibrant, luxury, playful
- Weekly calendar grid with current-time indicator
- Custom background images or gradient backgrounds
- Auto-refresh as a resident app
- Go to Google Cloud Console and create a project
- Enable the Google Calendar API
- Configure the OAuth consent screen; add your Gmail address as a test user
- Create an OAuth 2.0 Client ID (Desktop application type)
- Download
credentials.jsonand place it in thecredentials/directory - Launch the app — a browser window will open for authentication
See USER_GUIDE.md for detailed instructions.
Calesk only communicates with Google Calendar API. No data is sent to any other server.
The OAuth scope is calendar.readonly — the app cannot create, edit, or delete events.
MIT License © 2026 音良林太郎
