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.
- messageflight-0.2.4/.github/workflows/ci.yml +70 -0
- messageflight-0.2.4/.github/workflows/release.yml +52 -0
- messageflight-0.2.4/.gitignore +48 -0
- messageflight-0.2.4/.python-version +1 -0
- messageflight-0.2.4/LICENSE +21 -0
- messageflight-0.2.4/MessageFlight.spec +57 -0
- messageflight-0.2.4/PKG-INFO +94 -0
- messageflight-0.2.4/README.id.md +53 -0
- messageflight-0.2.4/README.ja.md +53 -0
- messageflight-0.2.4/README.ko.md +53 -0
- messageflight-0.2.4/README.md +53 -0
- messageflight-0.2.4/README.ms.md +53 -0
- messageflight-0.2.4/README.th.md +53 -0
- messageflight-0.2.4/README.vi.md +53 -0
- messageflight-0.2.4/README.zh.md +53 -0
- messageflight-0.2.4/docs/plan/2026-06-10-codebase-fixes.md +593 -0
- messageflight-0.2.4/docs/plan/2026-06-10-performance-optimization.md +368 -0
- messageflight-0.2.4/docs/review/2026-06-10-full-codebase-review.md +299 -0
- messageflight-0.2.4/docs/superpowers/.gitkeep +0 -0
- messageflight-0.2.4/docs/tasks/.gitkeep +0 -0
- messageflight-0.2.4/message_flight/__init__.py +0 -0
- messageflight-0.2.4/message_flight/autostart.py +41 -0
- messageflight-0.2.4/message_flight/config.py +457 -0
- messageflight-0.2.4/message_flight/demo_notifications.py +12 -0
- messageflight-0.2.4/message_flight/flight_widget.py +470 -0
- messageflight-0.2.4/message_flight/i18n.py +370 -0
- messageflight-0.2.4/message_flight/notification_queue.py +72 -0
- messageflight-0.2.4/message_flight/notification_worker.py +98 -0
- messageflight-0.2.4/message_flight/plane_banner.py +359 -0
- messageflight-0.2.4/message_flight/plane_presets/__init__.py +26 -0
- messageflight-0.2.4/message_flight/plane_presets/airplane.py +103 -0
- messageflight-0.2.4/message_flight/plane_presets/base.py +35 -0
- messageflight-0.2.4/message_flight/plane_presets/bird.py +87 -0
- messageflight-0.2.4/message_flight/plane_presets/rocket.py +94 -0
- messageflight-0.2.4/message_flight/plane_presets/ufo.py +73 -0
- messageflight-0.2.4/message_flight/preset_editor.py +345 -0
- messageflight-0.2.4/message_flight/settings_dialog.py +266 -0
- messageflight-0.2.4/message_flight/tray_app.py +280 -0
- messageflight-0.2.4/message_flight/tts.py +298 -0
- messageflight-0.2.4/message_flight/tts_manager.py +98 -0
- messageflight-0.2.4/message_flight.py +21 -0
- messageflight-0.2.4/pyproject.toml +47 -0
- messageflight-0.2.4/screenshots/screen_other_color.png +0 -0
- messageflight-0.2.4/screenshots/screen_top_on_game01.png +0 -0
- messageflight-0.2.4/screenshots/screen_top_on_game02.png +0 -0
- messageflight-0.2.4/screenshots/screen_top_on_screen.png +0 -0
- messageflight-0.2.4/tests/__init__.py +0 -0
- messageflight-0.2.4/tests/test_autostart.py +24 -0
- messageflight-0.2.4/tests/test_config.py +306 -0
- messageflight-0.2.4/tests/test_demo_notifications.py +13 -0
- messageflight-0.2.4/tests/test_flight_widget.py +328 -0
- messageflight-0.2.4/tests/test_i18n.py +39 -0
- messageflight-0.2.4/tests/test_notification_queue.py +89 -0
- messageflight-0.2.4/tests/test_notification_worker.py +94 -0
- messageflight-0.2.4/tests/test_performance.py +45 -0
- messageflight-0.2.4/tests/test_plane_banner.py +150 -0
- messageflight-0.2.4/tests/test_preset_editor.py +39 -0
- messageflight-0.2.4/tests/test_presets.py +191 -0
- messageflight-0.2.4/tests/test_readme_badges.py +31 -0
- messageflight-0.2.4/tests/test_settings_dialog.py +151 -0
- messageflight-0.2.4/tests/test_tray_app.py +177 -0
- messageflight-0.2.4/tests/test_tts.py +57 -0
- messageflight-0.2.4/tests/test_tts_manager.py +32 -0
- 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
|
+
|  |  |  |
|
|
64
|
+
|  | | |
|
|
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
|
+
|  |  |  |
|
|
23
|
+
|  | | |
|
|
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
|
+
|  |  |  |
|
|
23
|
+
|  | | |
|
|
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
|
+
|  |  |  |
|
|
23
|
+
|  | | |
|
|
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
|
+
|  |  |  |
|
|
23
|
+
|  | | |
|
|
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
|
+
|  |  |  |
|
|
23
|
+
|  | | |
|
|
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
|
+
|  |  |  |
|
|
23
|
+
|  | | |
|
|
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)
|