messageflight 0.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. messageflight-0.2.4/.github/workflows/ci.yml +70 -0
  2. messageflight-0.2.4/.github/workflows/release.yml +52 -0
  3. messageflight-0.2.4/.gitignore +48 -0
  4. messageflight-0.2.4/.python-version +1 -0
  5. messageflight-0.2.4/LICENSE +21 -0
  6. messageflight-0.2.4/MessageFlight.spec +57 -0
  7. messageflight-0.2.4/PKG-INFO +94 -0
  8. messageflight-0.2.4/README.id.md +53 -0
  9. messageflight-0.2.4/README.ja.md +53 -0
  10. messageflight-0.2.4/README.ko.md +53 -0
  11. messageflight-0.2.4/README.md +53 -0
  12. messageflight-0.2.4/README.ms.md +53 -0
  13. messageflight-0.2.4/README.th.md +53 -0
  14. messageflight-0.2.4/README.vi.md +53 -0
  15. messageflight-0.2.4/README.zh.md +53 -0
  16. messageflight-0.2.4/docs/plan/2026-06-10-codebase-fixes.md +593 -0
  17. messageflight-0.2.4/docs/plan/2026-06-10-performance-optimization.md +368 -0
  18. messageflight-0.2.4/docs/review/2026-06-10-full-codebase-review.md +299 -0
  19. messageflight-0.2.4/docs/superpowers/.gitkeep +0 -0
  20. messageflight-0.2.4/docs/tasks/.gitkeep +0 -0
  21. messageflight-0.2.4/message_flight/__init__.py +0 -0
  22. messageflight-0.2.4/message_flight/autostart.py +41 -0
  23. messageflight-0.2.4/message_flight/config.py +457 -0
  24. messageflight-0.2.4/message_flight/demo_notifications.py +12 -0
  25. messageflight-0.2.4/message_flight/flight_widget.py +470 -0
  26. messageflight-0.2.4/message_flight/i18n.py +370 -0
  27. messageflight-0.2.4/message_flight/notification_queue.py +72 -0
  28. messageflight-0.2.4/message_flight/notification_worker.py +98 -0
  29. messageflight-0.2.4/message_flight/plane_banner.py +359 -0
  30. messageflight-0.2.4/message_flight/plane_presets/__init__.py +26 -0
  31. messageflight-0.2.4/message_flight/plane_presets/airplane.py +103 -0
  32. messageflight-0.2.4/message_flight/plane_presets/base.py +35 -0
  33. messageflight-0.2.4/message_flight/plane_presets/bird.py +87 -0
  34. messageflight-0.2.4/message_flight/plane_presets/rocket.py +94 -0
  35. messageflight-0.2.4/message_flight/plane_presets/ufo.py +73 -0
  36. messageflight-0.2.4/message_flight/preset_editor.py +345 -0
  37. messageflight-0.2.4/message_flight/settings_dialog.py +266 -0
  38. messageflight-0.2.4/message_flight/tray_app.py +280 -0
  39. messageflight-0.2.4/message_flight/tts.py +298 -0
  40. messageflight-0.2.4/message_flight/tts_manager.py +98 -0
  41. messageflight-0.2.4/message_flight.py +21 -0
  42. messageflight-0.2.4/pyproject.toml +47 -0
  43. messageflight-0.2.4/screenshots/screen_other_color.png +0 -0
  44. messageflight-0.2.4/screenshots/screen_top_on_game01.png +0 -0
  45. messageflight-0.2.4/screenshots/screen_top_on_game02.png +0 -0
  46. messageflight-0.2.4/screenshots/screen_top_on_screen.png +0 -0
  47. messageflight-0.2.4/tests/__init__.py +0 -0
  48. messageflight-0.2.4/tests/test_autostart.py +24 -0
  49. messageflight-0.2.4/tests/test_config.py +306 -0
  50. messageflight-0.2.4/tests/test_demo_notifications.py +13 -0
  51. messageflight-0.2.4/tests/test_flight_widget.py +328 -0
  52. messageflight-0.2.4/tests/test_i18n.py +39 -0
  53. messageflight-0.2.4/tests/test_notification_queue.py +89 -0
  54. messageflight-0.2.4/tests/test_notification_worker.py +94 -0
  55. messageflight-0.2.4/tests/test_performance.py +45 -0
  56. messageflight-0.2.4/tests/test_plane_banner.py +150 -0
  57. messageflight-0.2.4/tests/test_preset_editor.py +39 -0
  58. messageflight-0.2.4/tests/test_presets.py +191 -0
  59. messageflight-0.2.4/tests/test_readme_badges.py +31 -0
  60. messageflight-0.2.4/tests/test_settings_dialog.py +151 -0
  61. messageflight-0.2.4/tests/test_tray_app.py +177 -0
  62. messageflight-0.2.4/tests/test_tts.py +57 -0
  63. messageflight-0.2.4/tests/test_tts_manager.py +32 -0
  64. messageflight-0.2.4/uv.lock +727 -0
@@ -0,0 +1,70 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ lint:
11
+ name: Static checks (Python ${{ matrix.python-version }})
12
+ runs-on: windows-latest
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
17
+
18
+ steps:
19
+ - name: Checkout repository
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Set up Python ${{ matrix.python-version }}
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: ${{ matrix.python-version }}
26
+ cache: pip
27
+
28
+ - name: Install dependencies
29
+ run: |
30
+ pip install --pre .[dev]
31
+
32
+ - name: Compile-check all Python files
33
+ run: |
34
+ Get-ChildItem -Recurse -Filter *.py | ForEach-Object { python -m py_compile $_.FullName }
35
+
36
+ - name: Run tests
37
+ run: pytest tests/ -v
38
+
39
+ - name: Validate pyproject.toml
40
+ run: |
41
+ pip install tomli
42
+ python -c "import tomli; tomli.loads(open('pyproject.toml').read())"
43
+
44
+ build-windows:
45
+ name: Build Windows .exe
46
+ runs-on: windows-latest
47
+ steps:
48
+ - name: Checkout repository
49
+ uses: actions/checkout@v4
50
+
51
+ - name: Set up Python 3.12
52
+ uses: actions/setup-python@v5
53
+ with:
54
+ python-version: '3.12'
55
+
56
+ - name: Install dependencies
57
+ run: |
58
+ python -m pip install --upgrade pip
59
+ pip install --pre .
60
+ pip install pyinstaller pywin32
61
+
62
+ - name: Build with PyInstaller
63
+ run: pyinstaller --noconfirm --clean MessageFlight.spec
64
+
65
+ - name: Upload artifact
66
+ uses: actions/upload-artifact@v4
67
+ with:
68
+ name: MessageFlight-windows-exe
69
+ path: dist/MessageFlight.exe
70
+ if-no-files-found: error
@@ -0,0 +1,52 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ concurrency:
12
+ group: release-${{ github.ref_name }}
13
+ cancel-in-progress: false
14
+
15
+ jobs:
16
+ build:
17
+ name: Build and publish release
18
+ runs-on: windows-latest
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ with:
22
+ fetch-depth: 0
23
+
24
+ - uses: actions/setup-python@v5
25
+ with:
26
+ python-version: '3.12'
27
+
28
+ - name: Install dependencies
29
+ run: |
30
+ python -m pip install --upgrade pip
31
+ pip install --pre .
32
+ pip install pyinstaller
33
+
34
+ - name: Build with PyInstaller
35
+ run: pyinstaller --noconfirm --clean MessageFlight.spec
36
+
37
+ - name: Download source archives
38
+ shell: bash
39
+ run: |
40
+ curl -L -o "source.zip" "https://github.com/${{ github.repository }}/archive/refs/tags/${{ github.ref_name }}.zip"
41
+ curl -L -o "source.tar.gz" "https://github.com/${{ github.repository }}/archive/refs/tags/${{ github.ref_name }}.tar.gz"
42
+
43
+ - name: Create GitHub Release
44
+ uses: softprops/action-gh-release@v2
45
+ with:
46
+ name: MessageFlight ${{ github.ref_name }}
47
+ generate_release_notes: true
48
+ fail_on_unmatched_files: true
49
+ files: |
50
+ dist/MessageFlight.exe
51
+ source.zip
52
+ source.tar.gz
@@ -0,0 +1,48 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ *.egg-info/
7
+ dist/
8
+ build/
9
+ *.egg
10
+
11
+ # PyQt
12
+ *.qm
13
+
14
+ # Project specific
15
+ publish/
16
+ dist/
17
+ build/
18
+
19
+ # IDE
20
+ .vscode/
21
+ .idea/
22
+ *.swp
23
+ *.swo
24
+
25
+ # OS
26
+ Thumbs.db
27
+ Desktop.ini
28
+ .DS_Store
29
+
30
+ # Logs
31
+ *.log
32
+
33
+ # tasks
34
+ docs/tasks/*.*
35
+ !docs/tasks/.gitkeep
36
+
37
+ # advice
38
+ docs/advice/
39
+
40
+ # superpowers workflow artifacts
41
+ # (specs/ is committed; everything else under superpowers/ is a local skill cache)
42
+ docs/superpowers/**/*.md
43
+ !docs/superpowers/specs/
44
+ !docs/superpowers/.gitkeep
45
+ !docs/superpowers/**/.gitkeep
46
+
47
+ # git worktrees
48
+ .worktrees/
@@ -0,0 +1 @@
1
+ 3.8
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 MessageFlight Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,57 @@
1
+ # -*- mode: python ; coding: utf-8 -*-
2
+
3
+ a = Analysis(
4
+ ['message_flight.py'],
5
+ pathex=['.'],
6
+ binaries=[],
7
+ datas=[],
8
+ hiddenimports=[
9
+ 'winsdk',
10
+ 'win32com.client',
11
+ 'pythoncom',
12
+ 'message_flight',
13
+ 'message_flight.autostart',
14
+ 'message_flight.demo_notifications',
15
+ 'message_flight.notification_worker',
16
+ 'message_flight.plane_banner',
17
+ 'message_flight.flight_widget',
18
+ 'message_flight.tray_app',
19
+ 'message_flight.tts',
20
+ 'message_flight.tts_manager',
21
+ 'message_flight.config',
22
+ 'message_flight.settings_dialog',
23
+ 'message_flight.plane_presets',
24
+ 'message_flight.plane_presets.airplane',
25
+ 'message_flight.plane_presets.rocket',
26
+ 'message_flight.plane_presets.ufo',
27
+ 'message_flight.plane_presets.bird',
28
+ 'message_flight.preset_editor',
29
+ 'pygame',
30
+ ],
31
+ hookspath=[],
32
+ hooksconfig={},
33
+ runtime_hooks=[],
34
+ excludes=[],
35
+ noarchive=False,
36
+ optimize=0,
37
+ )
38
+ pyz = PYZ(a.pure)
39
+
40
+ exe = EXE(
41
+ pyz,
42
+ a.scripts,
43
+ a.binaries,
44
+ a.datas,
45
+ [],
46
+ name='MessageFlight',
47
+ debug=False,
48
+ bootloader_ignore_signals=False,
49
+ strip=False,
50
+ upx=True,
51
+ console=False,
52
+ disable_windowed_traceback=False,
53
+ argv_emulation=False,
54
+ target_arch=None,
55
+ codesign_identity=None,
56
+ entitlements_file=None,
57
+ )
@@ -0,0 +1,94 @@
1
+ Metadata-Version: 2.4
2
+ Name: messageflight
3
+ Version: 0.2.4
4
+ Summary: Let Windows notifications fly across your screen like a little plane.
5
+ Project-URL: Homepage, https://github.com/wx528/MessageFlight
6
+ Project-URL: Issues, https://github.com/wx528/MessageFlight/issues
7
+ Author: MessageFlight Contributors
8
+ License: MIT License
9
+
10
+ Copyright (c) 2026 MessageFlight Contributors
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+ License-File: LICENSE
30
+ Requires-Python: >=3.8
31
+ Requires-Dist: pygame>=2.5.0
32
+ Requires-Dist: pyqt6>=6.5.0
33
+ Requires-Dist: pywin32>=227; sys_platform == 'win32'
34
+ Requires-Dist: winsdk>=1.0.0b10
35
+ Provides-Extra: dev
36
+ Requires-Dist: mypy<1.15,>=1.8; extra == 'dev'
37
+ Requires-Dist: pytest-qt>=4.0; extra == 'dev'
38
+ Requires-Dist: pytest<9,>=7.0; extra == 'dev'
39
+ Requires-Dist: types-pywin32>=311; (python_version >= '3.9') and extra == 'dev'
40
+ Description-Content-Type: text/markdown
41
+
42
+ # MessageFlight
43
+
44
+ [中文](README.zh.md) | English | [日本語](README.ja.md) | [한국어](README.ko.md) | [Bahasa Indonesia](README.id.md) | [ไทย](README.th.md) | [Tiếng Việt](README.vi.md) | [Bahasa Melayu](README.ms.md)
45
+
46
+ <p align="center">
47
+ <img src="https://img.shields.io/badge/Python-3.8%2B-3776AB?style=flat&logo=python&logoColor=white" alt="Python">
48
+ <img src="https://img.shields.io/badge/GUI-PyQt6-41CD52?style=flat" alt="PyQt6">
49
+ <img src="https://img.shields.io/badge/Platform-Windows%2010%2F11-0078D6?style=flat&logo=windows&logoColor=white" alt="Windows">
50
+ <a href="https://pypi.org/project/messageflight/"><img src="https://img.shields.io/pypi/v/messageflight?style=flat&logo=pypi&logoColor=white" alt="PyPI"></a>
51
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow?style=flat" alt="License"></a>
52
+ <a href="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml"><img src="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
53
+ <br>
54
+ <img src="https://img.shields.io/badge/Languages-zh%20%7C%20en%20%7C%20ja%20%7C%20ko%20%7C%20id%20%7C%20th%20%7C%20vi%20%7C%20ms-8A2BE2?style=flat" alt="Languages">
55
+ </p>
56
+
57
+ Let Windows notifications fly across your screen like a little plane.
58
+
59
+ ## Screenshots
60
+
61
+ | | | |
62
+ |:---:|:---:|:---:|
63
+ | ![Plane flying above a game window](screenshots/screen_top_on_game01.png) | ![Plane flying above a game window](screenshots/screen_top_on_game02.png) | ![Plane flying across the desktop](screenshots/screen_top_on_screen.png) |
64
+ | ![Plane in cyber preset](screenshots/screen_other_color.png) | | |
65
+
66
+ ## Features
67
+
68
+ - Animated plane overlay for real Windows notifications
69
+ - System tray controls for pause, demo notification, do-not-disturb, settings, autostart, and quit
70
+ - Lightweight UI languages: Chinese, English, Japanese, Korean, Indonesian, Thai, Vietnamese, and Malay
71
+ - Custom colors, flight paths, and vehicle presets
72
+ - Optional TTS support through SAPI or MiniMax
73
+
74
+ ## Quick Start
75
+
76
+ Requires Windows 10/11 and Python 3.8+.
77
+
78
+ ```bash
79
+ git clone https://github.com/wx528/MessageFlight.git
80
+ cd MessageFlight
81
+ python -m venv .venv
82
+ .venv\Scripts\activate
83
+ pip install .
84
+ python message_flight.py
85
+ ```
86
+
87
+ Using `uv`:
88
+
89
+ ```bash
90
+ uv sync
91
+ uv run python message_flight.py
92
+ ```
93
+
94
+ [MIT License](LICENSE)
@@ -0,0 +1,53 @@
1
+ # MessageFlight
2
+
3
+ [中文](README.zh.md) | [English](README.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | Bahasa Indonesia | [ไทย](README.th.md) | [Tiếng Việt](README.vi.md) | [Bahasa Melayu](README.ms.md)
4
+
5
+ <p align="center">
6
+ <img src="https://img.shields.io/badge/Python-3.8%2B-3776AB?style=flat&logo=python&logoColor=white" alt="Python">
7
+ <img src="https://img.shields.io/badge/GUI-PyQt6-41CD52?style=flat" alt="PyQt6">
8
+ <img src="https://img.shields.io/badge/Platform-Windows%2010%2F11-0078D6?style=flat&logo=windows&logoColor=white" alt="Windows">
9
+ <a href="https://pypi.org/project/messageflight/"><img src="https://img.shields.io/pypi/v/messageflight?style=flat&logo=pypi&logoColor=white" alt="PyPI"></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow?style=flat" alt="License"></a>
11
+ <a href="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml"><img src="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
12
+ <br>
13
+ <img src="https://img.shields.io/badge/Languages-zh%20%7C%20en%20%7C%20ja%20%7C%20ko%20%7C%20id%20%7C%20th%20%7C%20vi%20%7C%20ms-8A2BE2?style=flat" alt="Languages">
14
+ </p>
15
+
16
+ Membuat notifikasi Windows terbang di layar seperti pesawat kecil.
17
+
18
+ ## Tangkapan layar
19
+
20
+ | | | |
21
+ |:---:|:---:|:---:|
22
+ | ![Pesawat terbang di atas jendela game](screenshots/screen_top_on_game01.png) | ![Pesawat terbang di atas jendela game](screenshots/screen_top_on_game02.png) | ![Pesawat terbang melintasi desktop](screenshots/screen_top_on_screen.png) |
23
+ | ![Pesawat dengan preset warna cyber](screenshots/screen_other_color.png) | | |
24
+
25
+ ## Fitur
26
+
27
+ - Menampilkan notifikasi Windows nyata dengan animasi pesawat
28
+ - Menu tray untuk jeda, notifikasi demo, jangan ganggu, pengaturan, autostart, dan keluar
29
+ - Dukungan UI ringan untuk zh, en, ja, ko, id, th, vi, dan ms
30
+ - Kustomisasi warna, jalur terbang, dan preset wahana
31
+ - Dukungan TTS opsional melalui SAPI atau MiniMax
32
+
33
+ ## Mulai cepat
34
+
35
+ Membutuhkan Windows 10/11 dan Python 3.8+.
36
+
37
+ ```bash
38
+ git clone https://github.com/wx528/MessageFlight.git
39
+ cd MessageFlight
40
+ python -m venv .venv
41
+ .venv\Scripts\activate
42
+ pip install .
43
+ python message_flight.py
44
+ ```
45
+
46
+ Menggunakan `uv`:
47
+
48
+ ```bash
49
+ uv sync
50
+ uv run python message_flight.py
51
+ ```
52
+
53
+ [MIT License](LICENSE)
@@ -0,0 +1,53 @@
1
+ # MessageFlight
2
+
3
+ [中文](README.zh.md) | [English](README.md) | 日本語 | [한국어](README.ko.md) | [Bahasa Indonesia](README.id.md) | [ไทย](README.th.md) | [Tiếng Việt](README.vi.md) | [Bahasa Melayu](README.ms.md)
4
+
5
+ <p align="center">
6
+ <img src="https://img.shields.io/badge/Python-3.8%2B-3776AB?style=flat&logo=python&logoColor=white" alt="Python">
7
+ <img src="https://img.shields.io/badge/GUI-PyQt6-41CD52?style=flat" alt="PyQt6">
8
+ <img src="https://img.shields.io/badge/Platform-Windows%2010%2F11-0078D6?style=flat&logo=windows&logoColor=white" alt="Windows">
9
+ <a href="https://pypi.org/project/messageflight/"><img src="https://img.shields.io/pypi/v/messageflight?style=flat&logo=pypi&logoColor=white" alt="PyPI"></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow?style=flat" alt="License"></a>
11
+ <a href="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml"><img src="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
12
+ <br>
13
+ <img src="https://img.shields.io/badge/Languages-zh%20%7C%20en%20%7C%20ja%20%7C%20ko%20%7C%20id%20%7C%20th%20%7C%20vi%20%7C%20ms-8A2BE2?style=flat" alt="Languages">
14
+ </p>
15
+
16
+ Windows の通知を小さな飛行機のように画面上へ飛ばします。
17
+
18
+ ## スクリーンショット
19
+
20
+ | | | |
21
+ |:---:|:---:|:---:|
22
+ | ![ゲーム画面の上を飛ぶ飛行機](screenshots/screen_top_on_game01.png) | ![ゲーム画面の上を飛ぶ飛行機](screenshots/screen_top_on_game02.png) | ![デスクトップ上を飛ぶ飛行機](screenshots/screen_top_on_screen.png) |
23
+ | ![サイバー配色の飛行機](screenshots/screen_other_color.png) | | |
24
+
25
+ ## 機能
26
+
27
+ - 実際の Windows 通知を飛行機アニメーションで表示
28
+ - トレイメニューで一時停止、デモ通知、通知オフ、設定、自動起動、終了を操作
29
+ - 軽量 UI 言語: 中国語、英語、日本語、韓国語、インドネシア語、タイ語、ベトナム語、マレー語
30
+ - 配色、飛行ルート、機体プリセットをカスタマイズ可能
31
+ - SAPI または MiniMax による任意の TTS 対応
32
+
33
+ ## クイックスタート
34
+
35
+ Windows 10/11 と Python 3.8+ が必要です。
36
+
37
+ ```bash
38
+ git clone https://github.com/wx528/MessageFlight.git
39
+ cd MessageFlight
40
+ python -m venv .venv
41
+ .venv\Scripts\activate
42
+ pip install .
43
+ python message_flight.py
44
+ ```
45
+
46
+ `uv` を使う場合:
47
+
48
+ ```bash
49
+ uv sync
50
+ uv run python message_flight.py
51
+ ```
52
+
53
+ [MIT License](LICENSE)
@@ -0,0 +1,53 @@
1
+ # MessageFlight
2
+
3
+ [中文](README.zh.md) | [English](README.md) | [日本語](README.ja.md) | 한국어 | [Bahasa Indonesia](README.id.md) | [ไทย](README.th.md) | [Tiếng Việt](README.vi.md) | [Bahasa Melayu](README.ms.md)
4
+
5
+ <p align="center">
6
+ <img src="https://img.shields.io/badge/Python-3.8%2B-3776AB?style=flat&logo=python&logoColor=white" alt="Python">
7
+ <img src="https://img.shields.io/badge/GUI-PyQt6-41CD52?style=flat" alt="PyQt6">
8
+ <img src="https://img.shields.io/badge/Platform-Windows%2010%2F11-0078D6?style=flat&logo=windows&logoColor=white" alt="Windows">
9
+ <a href="https://pypi.org/project/messageflight/"><img src="https://img.shields.io/pypi/v/messageflight?style=flat&logo=pypi&logoColor=white" alt="PyPI"></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow?style=flat" alt="License"></a>
11
+ <a href="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml"><img src="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
12
+ <br>
13
+ <img src="https://img.shields.io/badge/Languages-zh%20%7C%20en%20%7C%20ja%20%7C%20ko%20%7C%20id%20%7C%20th%20%7C%20vi%20%7C%20ms-8A2BE2?style=flat" alt="Languages">
14
+ </p>
15
+
16
+ Windows 알림이 작은 비행기처럼 화면을 날아가게 합니다.
17
+
18
+ ## 스크린샷
19
+
20
+ | | | |
21
+ |:---:|:---:|:---:|
22
+ | ![게임 화면 위를 나는 비행기](screenshots/screen_top_on_game01.png) | ![게임 화면 위를 나는 비행기](screenshots/screen_top_on_game02.png) | ![데스크톱 위를 나는 비행기](screenshots/screen_top_on_screen.png) |
23
+ | ![사이버 색상 프리셋의 비행기](screenshots/screen_other_color.png) | | |
24
+
25
+ ## 기능
26
+
27
+ - 실제 Windows 알림을 비행기 애니메이션으로 표시
28
+ - 트레이 메뉴에서 일시정지, 데모 알림, 방해 금지, 설정, 자동 시작, 종료 제어
29
+ - 가벼운 UI 언어 지원: 중국어, 영어, 일본어, 한국어, 인도네시아어, 태국어, 베트남어, 말레이어
30
+ - 색상, 비행 경로, 비행체 프리셋 사용자 지정
31
+ - SAPI 또는 MiniMax 기반 선택적 TTS 지원
32
+
33
+ ## 빠른 시작
34
+
35
+ Windows 10/11 및 Python 3.8+가 필요합니다.
36
+
37
+ ```bash
38
+ git clone https://github.com/wx528/MessageFlight.git
39
+ cd MessageFlight
40
+ python -m venv .venv
41
+ .venv\Scripts\activate
42
+ pip install .
43
+ python message_flight.py
44
+ ```
45
+
46
+ `uv` 사용:
47
+
48
+ ```bash
49
+ uv sync
50
+ uv run python message_flight.py
51
+ ```
52
+
53
+ [MIT License](LICENSE)
@@ -0,0 +1,53 @@
1
+ # MessageFlight
2
+
3
+ [中文](README.zh.md) | English | [日本語](README.ja.md) | [한국어](README.ko.md) | [Bahasa Indonesia](README.id.md) | [ไทย](README.th.md) | [Tiếng Việt](README.vi.md) | [Bahasa Melayu](README.ms.md)
4
+
5
+ <p align="center">
6
+ <img src="https://img.shields.io/badge/Python-3.8%2B-3776AB?style=flat&logo=python&logoColor=white" alt="Python">
7
+ <img src="https://img.shields.io/badge/GUI-PyQt6-41CD52?style=flat" alt="PyQt6">
8
+ <img src="https://img.shields.io/badge/Platform-Windows%2010%2F11-0078D6?style=flat&logo=windows&logoColor=white" alt="Windows">
9
+ <a href="https://pypi.org/project/messageflight/"><img src="https://img.shields.io/pypi/v/messageflight?style=flat&logo=pypi&logoColor=white" alt="PyPI"></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow?style=flat" alt="License"></a>
11
+ <a href="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml"><img src="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
12
+ <br>
13
+ <img src="https://img.shields.io/badge/Languages-zh%20%7C%20en%20%7C%20ja%20%7C%20ko%20%7C%20id%20%7C%20th%20%7C%20vi%20%7C%20ms-8A2BE2?style=flat" alt="Languages">
14
+ </p>
15
+
16
+ Let Windows notifications fly across your screen like a little plane.
17
+
18
+ ## Screenshots
19
+
20
+ | | | |
21
+ |:---:|:---:|:---:|
22
+ | ![Plane flying above a game window](screenshots/screen_top_on_game01.png) | ![Plane flying above a game window](screenshots/screen_top_on_game02.png) | ![Plane flying across the desktop](screenshots/screen_top_on_screen.png) |
23
+ | ![Plane in cyber preset](screenshots/screen_other_color.png) | | |
24
+
25
+ ## Features
26
+
27
+ - Animated plane overlay for real Windows notifications
28
+ - System tray controls for pause, demo notification, do-not-disturb, settings, autostart, and quit
29
+ - Lightweight UI languages: Chinese, English, Japanese, Korean, Indonesian, Thai, Vietnamese, and Malay
30
+ - Custom colors, flight paths, and vehicle presets
31
+ - Optional TTS support through SAPI or MiniMax
32
+
33
+ ## Quick Start
34
+
35
+ Requires Windows 10/11 and Python 3.8+.
36
+
37
+ ```bash
38
+ git clone https://github.com/wx528/MessageFlight.git
39
+ cd MessageFlight
40
+ python -m venv .venv
41
+ .venv\Scripts\activate
42
+ pip install .
43
+ python message_flight.py
44
+ ```
45
+
46
+ Using `uv`:
47
+
48
+ ```bash
49
+ uv sync
50
+ uv run python message_flight.py
51
+ ```
52
+
53
+ [MIT License](LICENSE)
@@ -0,0 +1,53 @@
1
+ # MessageFlight
2
+
3
+ [中文](README.zh.md) | [English](README.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [Bahasa Indonesia](README.id.md) | [ไทย](README.th.md) | [Tiếng Việt](README.vi.md) | Bahasa Melayu
4
+
5
+ <p align="center">
6
+ <img src="https://img.shields.io/badge/Python-3.8%2B-3776AB?style=flat&logo=python&logoColor=white" alt="Python">
7
+ <img src="https://img.shields.io/badge/GUI-PyQt6-41CD52?style=flat" alt="PyQt6">
8
+ <img src="https://img.shields.io/badge/Platform-Windows%2010%2F11-0078D6?style=flat&logo=windows&logoColor=white" alt="Windows">
9
+ <a href="https://pypi.org/project/messageflight/"><img src="https://img.shields.io/pypi/v/messageflight?style=flat&logo=pypi&logoColor=white" alt="PyPI"></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow?style=flat" alt="License"></a>
11
+ <a href="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml"><img src="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
12
+ <br>
13
+ <img src="https://img.shields.io/badge/Languages-zh%20%7C%20en%20%7C%20ja%20%7C%20ko%20%7C%20id%20%7C%20th%20%7C%20vi%20%7C%20ms-8A2BE2?style=flat" alt="Languages">
14
+ </p>
15
+
16
+ Biarkan notifikasi Windows terbang merentasi skrin seperti pesawat kecil.
17
+
18
+ ## Tangkapan skrin
19
+
20
+ | | | |
21
+ |:---:|:---:|:---:|
22
+ | ![Pesawat terbang di atas tetingkap permainan](screenshots/screen_top_on_game01.png) | ![Pesawat terbang di atas tetingkap permainan](screenshots/screen_top_on_game02.png) | ![Pesawat terbang merentasi desktop](screenshots/screen_top_on_screen.png) |
23
+ | ![Pesawat dengan pratetap warna siber](screenshots/screen_other_color.png) | | |
24
+
25
+ ## Ciri-ciri
26
+
27
+ - Paparkan notifikasi Windows sebenar dengan animasi pesawat
28
+ - Menu dulang sistem untuk jeda, notifikasi demo, jangan ganggu, tetapan, mula automatik dan keluar
29
+ - Sokongan UI ringan untuk zh, en, ja, ko, id, th, vi dan ms
30
+ - Sesuaikan warna, laluan penerbangan dan pratetap kenderaan
31
+ - Sokongan TTS pilihan melalui SAPI atau MiniMax
32
+
33
+ ## Mula pantas
34
+
35
+ Memerlukan Windows 10/11 dan Python 3.8+.
36
+
37
+ ```bash
38
+ git clone https://github.com/wx528/MessageFlight.git
39
+ cd MessageFlight
40
+ python -m venv .venv
41
+ .venv\Scripts\activate
42
+ pip install .
43
+ python message_flight.py
44
+ ```
45
+
46
+ Menggunakan `uv`:
47
+
48
+ ```bash
49
+ uv sync
50
+ uv run python message_flight.py
51
+ ```
52
+
53
+ [MIT License](LICENSE)
@@ -0,0 +1,53 @@
1
+ # MessageFlight
2
+
3
+ [中文](README.zh.md) | [English](README.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [Bahasa Indonesia](README.id.md) | ไทย | [Tiếng Việt](README.vi.md) | [Bahasa Melayu](README.ms.md)
4
+
5
+ <p align="center">
6
+ <img src="https://img.shields.io/badge/Python-3.8%2B-3776AB?style=flat&logo=python&logoColor=white" alt="Python">
7
+ <img src="https://img.shields.io/badge/GUI-PyQt6-41CD52?style=flat" alt="PyQt6">
8
+ <img src="https://img.shields.io/badge/Platform-Windows%2010%2F11-0078D6?style=flat&logo=windows&logoColor=white" alt="Windows">
9
+ <a href="https://pypi.org/project/messageflight/"><img src="https://img.shields.io/pypi/v/messageflight?style=flat&logo=pypi&logoColor=white" alt="PyPI"></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow?style=flat" alt="License"></a>
11
+ <a href="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml"><img src="https://github.com/wx528/MessageFlight/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
12
+ <br>
13
+ <img src="https://img.shields.io/badge/Languages-zh%20%7C%20en%20%7C%20ja%20%7C%20ko%20%7C%20id%20%7C%20th%20%7C%20vi%20%7C%20ms-8A2BE2?style=flat" alt="Languages">
14
+ </p>
15
+
16
+ ทำให้การแจ้งเตือนของ Windows บินผ่านหน้าจอเหมือนเครื่องบินลำเล็ก
17
+
18
+ ## ภาพหน้าจอ
19
+
20
+ | | | |
21
+ |:---:|:---:|:---:|
22
+ | ![เครื่องบินบินเหนือหน้าต่างเกม](screenshots/screen_top_on_game01.png) | ![เครื่องบินบินเหนือหน้าต่างเกม](screenshots/screen_top_on_game02.png) | ![เครื่องบินบินผ่านเดสก์ท็อป](screenshots/screen_top_on_screen.png) |
23
+ | ![เครื่องบินในพรีเซ็ตสีไซเบอร์](screenshots/screen_other_color.png) | | |
24
+
25
+ ## คุณสมบัติ
26
+
27
+ - แสดงการแจ้งเตือน Windows จริงด้วยแอนิเมชันเครื่องบิน
28
+ - เมนูถาดระบบสำหรับหยุดชั่วคราว เดโม ห้ามรบกวน ตั้งค่า เริ่มอัตโนมัติ และออก
29
+ - รองรับภาษา UI แบบเบา: zh, en, ja, ko, id, th, vi และ ms
30
+ - ปรับแต่งสี เส้นทางบิน และพรีเซ็ตยานบินได้
31
+ - รองรับ TTS แบบเลือกใช้ผ่าน SAPI หรือ MiniMax
32
+
33
+ ## เริ่มต้นอย่างรวดเร็ว
34
+
35
+ ต้องใช้ Windows 10/11 และ Python 3.8+
36
+
37
+ ```bash
38
+ git clone https://github.com/wx528/MessageFlight.git
39
+ cd MessageFlight
40
+ python -m venv .venv
41
+ .venv\Scripts\activate
42
+ pip install .
43
+ python message_flight.py
44
+ ```
45
+
46
+ ใช้ `uv`:
47
+
48
+ ```bash
49
+ uv sync
50
+ uv run python message_flight.py
51
+ ```
52
+
53
+ [MIT License](LICENSE)