lumiview 0.1.0.dev2__tar.gz → 0.1.0.dev4__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 (63) hide show
  1. lumiview-0.1.0.dev4/.github/ISSUE_TEMPLATE/bug_report.yml +135 -0
  2. lumiview-0.1.0.dev4/.github/ISSUE_TEMPLATE/feature_request.yml +65 -0
  3. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/.github/workflows/publish-to-pypi.yml +4 -1
  4. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/Cargo.lock +278 -7
  5. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/Cargo.toml +3 -1
  6. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/PKG-INFO +15 -5
  7. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/README.md +14 -4
  8. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/README_zh.md +14 -4
  9. lumiview-0.1.0.dev4/docs/architecture.md +117 -0
  10. lumiview-0.1.0.dev4/docs/getting-started.md +157 -0
  11. lumiview-0.1.0.dev4/docs/integrations.md +120 -0
  12. lumiview-0.1.0.dev4/docs/plugins.md +153 -0
  13. lumiview-0.1.0.dev4/docs/serve.md +97 -0
  14. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/examples/bridge_demo.py +3 -3
  15. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/examples/custom_titlebar.py +3 -3
  16. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/examples/events.py +16 -16
  17. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/examples/fastapi_demo.py +3 -3
  18. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/examples/hello_world.py +21 -4
  19. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/examples/hello_world_sync.py +2 -2
  20. lumiview-0.1.0.dev4/examples/menu.py +109 -0
  21. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/examples/multi_window.py +5 -5
  22. lumiview-0.1.0.dev4/examples/tray.py +148 -0
  23. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/pyproject.toml +1 -1
  24. lumiview-0.1.0.dev4/python/lumiview/__init__.py +120 -0
  25. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/python/lumiview/_binding.py +5 -3
  26. lumiview-0.1.0.dev4/python/lumiview/_core.pyi +1214 -0
  27. lumiview-0.1.0.dev4/python/lumiview/app.py +943 -0
  28. lumiview-0.1.0.dev2/python/lumiview/_bridge.py → lumiview-0.1.0.dev4/python/lumiview/bridge.py +45 -10
  29. lumiview-0.1.0.dev4/python/lumiview/events.py +643 -0
  30. lumiview-0.1.0.dev4/python/lumiview/menu.py +636 -0
  31. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/python/lumiview/plugins/window_controls.py +26 -7
  32. lumiview-0.1.0.dev2/python/lumiview/_scope.py → lumiview-0.1.0.dev4/python/lumiview/scope.py +88 -87
  33. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/python/lumiview/serve/asgi.py +1 -1
  34. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/python/lumiview/serve/base.py +6 -4
  35. lumiview-0.1.0.dev2/python/lumiview/_task.py → lumiview-0.1.0.dev4/python/lumiview/task.py +71 -12
  36. lumiview-0.1.0.dev4/python/lumiview/tray.py +145 -0
  37. lumiview-0.1.0.dev4/python/lumiview/utils.py +97 -0
  38. lumiview-0.1.0.dev4/python/lumiview/window.py +1930 -0
  39. lumiview-0.1.0.dev4/src/event_loop.rs +396 -0
  40. lumiview-0.1.0.dev4/src/events.rs +1073 -0
  41. lumiview-0.1.0.dev4/src/lib.rs +113 -0
  42. lumiview-0.1.0.dev4/src/menu.rs +493 -0
  43. lumiview-0.1.0.dev4/src/monitor.rs +92 -0
  44. lumiview-0.1.0.dev4/src/tray.rs +362 -0
  45. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/src/types.rs +295 -9
  46. lumiview-0.1.0.dev4/src/window.rs +894 -0
  47. lumiview-0.1.0.dev2/python/lumiview/__init__.py +0 -143
  48. lumiview-0.1.0.dev2/python/lumiview/_app.py +0 -562
  49. lumiview-0.1.0.dev2/python/lumiview/_core.pyi +0 -501
  50. lumiview-0.1.0.dev2/python/lumiview/_events.py +0 -59
  51. lumiview-0.1.0.dev2/python/lumiview/_window.py +0 -1130
  52. lumiview-0.1.0.dev2/python/lumiview/utils.py +0 -43
  53. lumiview-0.1.0.dev2/src/event_loop.rs +0 -245
  54. lumiview-0.1.0.dev2/src/events.rs +0 -553
  55. lumiview-0.1.0.dev2/src/lib.rs +0 -54
  56. lumiview-0.1.0.dev2/src/window.rs +0 -556
  57. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/.gitignore +0 -0
  58. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/CONTRIBUTING.md +0 -0
  59. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/LICENSE +0 -0
  60. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/python/lumiview/plugins/__init__.py +0 -0
  61. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/python/lumiview/serve/__init__.py +0 -0
  62. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/python/lumiview/serve/static.py +0 -0
  63. {lumiview-0.1.0.dev2 → lumiview-0.1.0.dev4}/python/lumiview/serve/wsgi.py +0 -0
@@ -0,0 +1,135 @@
1
+ name: Bug Report - Bug反馈
2
+ description: Create a report to help us improve. - 反馈问题,帮助我们改进
3
+ title: "[Bug] "
4
+ labels:
5
+ - 🐛 bug
6
+
7
+ body:
8
+ - type: markdown
9
+ attributes:
10
+ value: |
11
+ Before filling in this `issue`, please make sure that there are no similar or duplicate `issues` that have been opened.
12
+ 填写此 `issue` 前,请先确认已经开启的 `issue` 没有类似或重复的 `issue`。
13
+
14
+ - type: dropdown
15
+ id: system
16
+ attributes:
17
+ label: OS - 操作系统
18
+ options:
19
+ - Windows
20
+ - macOS
21
+ - Linux
22
+ validations:
23
+ required: true
24
+
25
+ - type: input
26
+ id: os_version
27
+ attributes:
28
+ label: OS Version - 操作系统版本
29
+ description: |
30
+ e.g. Windows 11 24H2 / macOS 15 Sequoia / Ubuntu 24.04
31
+ 例如:Windows 11 24H2 / macOS 15 Sequoia / Ubuntu 24.04
32
+ placeholder: Windows 11 24H2
33
+ validations:
34
+ required: true
35
+
36
+ - type: input
37
+ id: python_version
38
+ attributes:
39
+ label: Python Version - Python 版本
40
+ description: |
41
+ LumiView requires Python >= 3.10.
42
+ LumiView 要求 Python >= 3.10。
43
+ placeholder: "3.12"
44
+ validations:
45
+ required: true
46
+
47
+ - type: input
48
+ id: version
49
+ attributes:
50
+ label: LumiView Version - LumiView 版本
51
+ description: |
52
+ Run `pip show lumiview` to check. LumiView is still in pre-release (0.1.0-dev), so please always test with the latest version first.
53
+ 运行 `pip show lumiview` 查看。LumiView 仍处于预发布阶段(0.1.0-dev),请务必先测试最新版本再提交。
54
+ placeholder: 0.1.0-dev4
55
+ validations:
56
+ required: true
57
+
58
+ - type: dropdown
59
+ id: area
60
+ attributes:
61
+ label: Affected Area - 影响范围
62
+ description: |
63
+ Which part of LumiView is involved? You can select multiple.
64
+ 涉及 LumiView 的哪个部分?可多选。
65
+ multiple: true
66
+ options:
67
+ - Window / 窗口管理(几何、状态、特效、全屏)
68
+ - WebView / 网页加载与渲染
69
+ - JS Bridge (IPC) / 桥接通信
70
+ - Event system / 事件系统
71
+ - Plugins / 插件
72
+ - serve protocol / 协议处理
73
+ - Installation & build / 安装与构建
74
+ - Other / 其他
75
+ validations:
76
+ required: false
77
+
78
+ - type: textarea
79
+ id: exist
80
+ attributes:
81
+ label: Existing behavior - 现有行为
82
+ description: |
83
+ Please describe the problem you have encountered carefully.
84
+ 请仔细描述你所遇到的问题。
85
+ validations:
86
+ required: true
87
+
88
+ - type: textarea
89
+ id: expect
90
+ attributes:
91
+ label: Expected behavior - 预期行为
92
+ description: |
93
+ Please describe in detail the results you wish to achieve.
94
+ 请仔细描述你要得到的结果。
95
+ validations:
96
+ required: true
97
+
98
+ - type: textarea
99
+ id: reproduce
100
+ attributes:
101
+ label: To Reproduce - 复现问题
102
+ description: |
103
+ How do you trigger this bug? Please walk us through it step by step, and provide a minimal reproduction script if possible.
104
+ 这个 bug 是怎么触发的?请详细告诉我们是怎样出现这个情况的,如果可能请提供最小复现脚本。
105
+ placeholder: |
106
+ ```python
107
+ from lumiview import App, Window, WindowOptions
108
+
109
+ # minimal reproduction code
110
+ ```
111
+ validations:
112
+ required: false
113
+
114
+ - type: textarea
115
+ id: logs
116
+ attributes:
117
+ label: Logs & Screenshots - 日志与截图
118
+ description: |
119
+ Please provide the full traceback, console output, or screenshots. If the window crashes, try running with `RUST_BACKTRACE=1`.
120
+ 请提供完整的 traceback、控制台输出或截图。若窗口崩溃,可尝试以 `RUST_BACKTRACE=1` 运行。
121
+ validations:
122
+ required: false
123
+
124
+ - type: checkboxes
125
+ id: know
126
+ attributes:
127
+ label: This issue is unique - 这个 issue 是唯一的
128
+ options:
129
+ - label: I have searched the issue tracker and confirmed that there is no identical issue. 我已经搜索问题追踪器并且确认没有相同的 Issue。
130
+ required: true
131
+ - label: I admit that I previously checked all options without thorough verification and directly submitted this Issue, and I agree that it can be closed directly. 我承认此前未充分核实便勾选了所有选项并直接提交此 Issue ,且同意该 Issue 可被直接关闭。
132
+ - label: I confirm that I am currently using the latest version of LumiView. If not, this issue can be closed directly. 我确认当前使用的是最新版本的 LumiView,若非如此,此 Issue 可被直接关闭。
133
+ required: true
134
+ - label: I promise to provide a detailed description of the encountered issue, along with relevant logs and screenshots, rather than offering incomplete or vague information. 我承诺将详细描述遇到的问题,并提供相关日志与截图,而非提供不完整或模糊的信息。
135
+ required: true
@@ -0,0 +1,65 @@
1
+ name: Feature request - 功能请求
2
+ description: Suggest an idea for this project - 为这个项目推荐一个新想法
3
+ title: "[Feature] "
4
+ labels:
5
+ - 🪁 enhancement
6
+
7
+ body:
8
+ - type: markdown
9
+ attributes:
10
+ value: |
11
+ Before filling in this `issue`, please make sure that there are no similar or duplicate `issues` that have been opened.
12
+ 填写此 `issue` 前,请先确认已经开启的 `issue` 没有类似或重复的 `issue`。
13
+
14
+ - type: textarea
15
+ id: feature
16
+ attributes:
17
+ label: What new features do you want? - 你想要什么新功能?
18
+ description: |
19
+ What new feature or change you want? How it improves? Please tell us the requirements is with a clear and detailed description, put your screenshots if possible.
20
+ 你想要什么新功能或者什么改变?这会带来什么提升?请清晰而详细地描述你的需求,如果可以的话最好附带截图。
21
+ validations:
22
+ required: true
23
+
24
+ - type: textarea
25
+ id: use_case
26
+ attributes:
27
+ label: Use Case - 使用场景
28
+ description: |
29
+ What is your application scenario and how do you use LumiView? (e.g. a desktop app you are building with LumiView)
30
+ 你的应用场景是什么?你如何使用 LumiView?(例如:你正在用 LumiView 构建的桌面应用)
31
+ placeholder: |
32
+ I'm building a desktop app with LumiView, and I need...
33
+ validations:
34
+ required: false
35
+
36
+ - type: dropdown
37
+ id: area
38
+ attributes:
39
+ label: Related Area - 相关范围
40
+ description: |
41
+ Which part of LumiView is involved? You can select multiple.
42
+ 涉及 LumiView 的哪个部分?可多选。
43
+ multiple: true
44
+ options:
45
+ - Window / 窗口管理
46
+ - WebView
47
+ - JS Bridge (IPC)
48
+ - Event system / 事件系统
49
+ - Plugins / 插件
50
+ - serve protocol / 协议处理
51
+ - Packaging / 打包分发
52
+ - Other / 其他
53
+ validations:
54
+ required: false
55
+
56
+ - type: checkboxes
57
+ id: know
58
+ attributes:
59
+ label: This issue is unique - 这个 issue 是唯一的
60
+ options:
61
+ - label: I have searched the issue tracker and confirmed that there is no identical issue. 我已经搜索问题追踪器并且确认没有相同的 Issue。
62
+ required: true
63
+ - label: I admit that I previously checked all options without thorough verification and directly submitted this Issue, and I agree that it can be closed directly. 我承认此前未充分核实便勾选了所有选项并直接提交此 Issue ,且同意该 Issue 可被直接关闭。
64
+ - label: I promise to provide a detailed description of the new feature I want, along with reasonable justification, rather than offering incomplete or vague information. 我承诺我会详细描述我想要的新功能,并附上合理的理由,而非提供不完整或模糊的信息。
65
+ required: true
@@ -22,7 +22,10 @@ jobs:
22
22
  - name: Install webkit2gtk
23
23
  run: |
24
24
  sudo apt-get update
25
- sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libglib2.0-dev
25
+ # libxdo-dev: muda's GTK backend sends predefined-item shortcuts
26
+ # (copy/paste/...) through xdo; bundled into the wheel by
27
+ # auditwheel (no GTK-style global-type-registry concern).
28
+ sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libglib2.0-dev libxdo-dev
26
29
  - uses: actions/setup-python@v5
27
30
  with:
28
31
  python-version: "3.12"
@@ -2,6 +2,12 @@
2
2
  # It is not intended for manual editing.
3
3
  version = 4
4
4
 
5
+ [[package]]
6
+ name = "adler2"
7
+ version = "2.0.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
10
+
5
11
  [[package]]
6
12
  name = "atk"
7
13
  version = "0.18.2"
@@ -36,6 +42,9 @@ name = "bitflags"
36
42
  version = "2.13.0"
37
43
  source = "registry+https://github.com/rust-lang/crates.io-index"
38
44
  checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
45
+ dependencies = [
46
+ "serde_core",
47
+ ]
39
48
 
40
49
  [[package]]
41
50
  name = "block2"
@@ -75,7 +84,7 @@ dependencies = [
75
84
  "glib",
76
85
  "libc",
77
86
  "once_cell",
78
- "thiserror",
87
+ "thiserror 1.0.69",
79
88
  ]
80
89
 
81
90
  [[package]]
@@ -161,6 +170,15 @@ dependencies = [
161
170
  "libc",
162
171
  ]
163
172
 
173
+ [[package]]
174
+ name = "crc32fast"
175
+ version = "1.5.0"
176
+ source = "registry+https://github.com/rust-lang/crates.io-index"
177
+ checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
178
+ dependencies = [
179
+ "cfg-if",
180
+ ]
181
+
164
182
  [[package]]
165
183
  name = "crossbeam-channel"
166
184
  version = "0.5.16"
@@ -187,6 +205,27 @@ dependencies = [
187
205
  "windows-sys 0.61.2",
188
206
  ]
189
207
 
208
+ [[package]]
209
+ name = "dirs"
210
+ version = "6.0.0"
211
+ source = "registry+https://github.com/rust-lang/crates.io-index"
212
+ checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
213
+ dependencies = [
214
+ "dirs-sys",
215
+ ]
216
+
217
+ [[package]]
218
+ name = "dirs-sys"
219
+ version = "0.5.0"
220
+ source = "registry+https://github.com/rust-lang/crates.io-index"
221
+ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
222
+ dependencies = [
223
+ "libc",
224
+ "option-ext",
225
+ "redox_users",
226
+ "windows-sys 0.61.2",
227
+ ]
228
+
190
229
  [[package]]
191
230
  name = "dispatch2"
192
231
  version = "0.3.1"
@@ -245,6 +284,15 @@ version = "1.0.2"
245
284
  source = "registry+https://github.com/rust-lang/crates.io-index"
246
285
  checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
247
286
 
287
+ [[package]]
288
+ name = "fdeflate"
289
+ version = "0.3.7"
290
+ source = "registry+https://github.com/rust-lang/crates.io-index"
291
+ checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
292
+ dependencies = [
293
+ "simd-adler32",
294
+ ]
295
+
248
296
  [[package]]
249
297
  name = "field-offset"
250
298
  version = "0.3.6"
@@ -255,6 +303,16 @@ dependencies = [
255
303
  "rustc_version",
256
304
  ]
257
305
 
306
+ [[package]]
307
+ name = "flate2"
308
+ version = "1.1.9"
309
+ source = "registry+https://github.com/rust-lang/crates.io-index"
310
+ checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
311
+ dependencies = [
312
+ "crc32fast",
313
+ "miniz_oxide",
314
+ ]
315
+
258
316
  [[package]]
259
317
  name = "foreign-types"
260
318
  version = "0.5.0"
@@ -438,6 +496,17 @@ dependencies = [
438
496
  "x11",
439
497
  ]
440
498
 
499
+ [[package]]
500
+ name = "getrandom"
501
+ version = "0.2.17"
502
+ source = "registry+https://github.com/rust-lang/crates.io-index"
503
+ checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
504
+ dependencies = [
505
+ "cfg-if",
506
+ "libc",
507
+ "wasi",
508
+ ]
509
+
441
510
  [[package]]
442
511
  name = "gio"
443
512
  version = "0.18.4"
@@ -454,7 +523,7 @@ dependencies = [
454
523
  "once_cell",
455
524
  "pin-project-lite",
456
525
  "smallvec",
457
- "thiserror",
526
+ "thiserror 1.0.69",
458
527
  ]
459
528
 
460
529
  [[package]]
@@ -490,7 +559,7 @@ dependencies = [
490
559
  "memchr",
491
560
  "once_cell",
492
561
  "smallvec",
493
- "thiserror",
562
+ "thiserror 1.0.69",
494
563
  ]
495
564
 
496
565
  [[package]]
@@ -722,7 +791,7 @@ dependencies = [
722
791
  "combine",
723
792
  "jni-sys 0.3.1",
724
793
  "log",
725
- "thiserror",
794
+ "thiserror 1.0.69",
726
795
  "walkdir",
727
796
  "windows-sys 0.45.0",
728
797
  ]
@@ -766,6 +835,41 @@ dependencies = [
766
835
  "wasm-bindgen",
767
836
  ]
768
837
 
838
+ [[package]]
839
+ name = "keyboard-types"
840
+ version = "0.7.0"
841
+ source = "registry+https://github.com/rust-lang/crates.io-index"
842
+ checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
843
+ dependencies = [
844
+ "bitflags",
845
+ "serde",
846
+ "unicode-segmentation",
847
+ ]
848
+
849
+ [[package]]
850
+ name = "libappindicator"
851
+ version = "0.9.0"
852
+ source = "registry+https://github.com/rust-lang/crates.io-index"
853
+ checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a"
854
+ dependencies = [
855
+ "glib",
856
+ "gtk",
857
+ "gtk-sys",
858
+ "libappindicator-sys",
859
+ "log",
860
+ ]
861
+
862
+ [[package]]
863
+ name = "libappindicator-sys"
864
+ version = "0.9.0"
865
+ source = "registry+https://github.com/rust-lang/crates.io-index"
866
+ checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf"
867
+ dependencies = [
868
+ "gtk-sys",
869
+ "libloading",
870
+ "once_cell",
871
+ ]
872
+
769
873
  [[package]]
770
874
  name = "libc"
771
875
  version = "0.2.186"
@@ -781,6 +885,44 @@ dependencies = [
781
885
  "pkg-config",
782
886
  ]
783
887
 
888
+ [[package]]
889
+ name = "libloading"
890
+ version = "0.7.4"
891
+ source = "registry+https://github.com/rust-lang/crates.io-index"
892
+ checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
893
+ dependencies = [
894
+ "cfg-if",
895
+ "winapi",
896
+ ]
897
+
898
+ [[package]]
899
+ name = "libredox"
900
+ version = "0.1.19"
901
+ source = "registry+https://github.com/rust-lang/crates.io-index"
902
+ checksum = "2026a5056764a10b2bf5d56488cba40da507f5493a6a429340e2004d9ed085fa"
903
+ dependencies = [
904
+ "libc",
905
+ ]
906
+
907
+ [[package]]
908
+ name = "libxdo"
909
+ version = "0.6.0"
910
+ source = "registry+https://github.com/rust-lang/crates.io-index"
911
+ checksum = "00333b8756a3d28e78def82067a377de7fa61b24909000aeaa2b446a948d14db"
912
+ dependencies = [
913
+ "libxdo-sys",
914
+ ]
915
+
916
+ [[package]]
917
+ name = "libxdo-sys"
918
+ version = "0.11.0"
919
+ source = "registry+https://github.com/rust-lang/crates.io-index"
920
+ checksum = "db23b9e7e2b7831bbd8aac0bbeeeb7b68cbebc162b227e7052e8e55829a09212"
921
+ dependencies = [
922
+ "libc",
923
+ "x11",
924
+ ]
925
+
784
926
  [[package]]
785
927
  name = "litemap"
786
928
  version = "0.8.2"
@@ -804,13 +946,15 @@ checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
804
946
 
805
947
  [[package]]
806
948
  name = "lumiview"
807
- version = "0.1.0-dev2"
949
+ version = "0.1.0-dev4"
808
950
  dependencies = [
809
951
  "gtk",
952
+ "muda",
810
953
  "pyo3",
811
954
  "raw-window-handle",
812
955
  "softbuffer",
813
956
  "tao",
957
+ "tray-icon",
814
958
  "window-vibrancy",
815
959
  ]
816
960
 
@@ -829,6 +973,37 @@ dependencies = [
829
973
  "autocfg",
830
974
  ]
831
975
 
976
+ [[package]]
977
+ name = "miniz_oxide"
978
+ version = "0.8.9"
979
+ source = "registry+https://github.com/rust-lang/crates.io-index"
980
+ checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
981
+ dependencies = [
982
+ "adler2",
983
+ "simd-adler32",
984
+ ]
985
+
986
+ [[package]]
987
+ name = "muda"
988
+ version = "0.19.3"
989
+ source = "registry+https://github.com/rust-lang/crates.io-index"
990
+ checksum = "1dd04e60bc0b07438a6771710ee1698f98f6ebbc7f89b61264af1563b8aeb878"
991
+ dependencies = [
992
+ "crossbeam-channel",
993
+ "dpi",
994
+ "gtk",
995
+ "keyboard-types",
996
+ "libxdo",
997
+ "objc2",
998
+ "objc2-app-kit",
999
+ "objc2-core-foundation",
1000
+ "objc2-foundation",
1001
+ "once_cell",
1002
+ "png",
1003
+ "thiserror 2.0.19",
1004
+ "windows-sys 0.61.2",
1005
+ ]
1006
+
832
1007
  [[package]]
833
1008
  name = "ndk"
834
1009
  version = "0.9.0"
@@ -841,7 +1016,7 @@ dependencies = [
841
1016
  "ndk-sys",
842
1017
  "num_enum",
843
1018
  "raw-window-handle",
844
- "thiserror",
1019
+ "thiserror 1.0.69",
845
1020
  ]
846
1021
 
847
1022
  [[package]]
@@ -993,6 +1168,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
993
1168
  checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
994
1169
  dependencies = [
995
1170
  "bitflags",
1171
+ "block2",
996
1172
  "objc2",
997
1173
  "objc2-core-foundation",
998
1174
  ]
@@ -1057,6 +1233,12 @@ version = "1.21.4"
1057
1233
  source = "registry+https://github.com/rust-lang/crates.io-index"
1058
1234
  checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
1059
1235
 
1236
+ [[package]]
1237
+ name = "option-ext"
1238
+ version = "0.2.0"
1239
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1240
+ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
1241
+
1060
1242
  [[package]]
1061
1243
  name = "pango"
1062
1244
  version = "0.18.3"
@@ -1123,6 +1305,19 @@ version = "0.3.33"
1123
1305
  source = "registry+https://github.com/rust-lang/crates.io-index"
1124
1306
  checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
1125
1307
 
1308
+ [[package]]
1309
+ name = "png"
1310
+ version = "0.18.1"
1311
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1312
+ checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
1313
+ dependencies = [
1314
+ "bitflags",
1315
+ "crc32fast",
1316
+ "fdeflate",
1317
+ "flate2",
1318
+ "miniz_oxide",
1319
+ ]
1320
+
1126
1321
  [[package]]
1127
1322
  name = "portable-atomic"
1128
1323
  version = "1.13.1"
@@ -1281,6 +1476,17 @@ dependencies = [
1281
1476
  "bitflags",
1282
1477
  ]
1283
1478
 
1479
+ [[package]]
1480
+ name = "redox_users"
1481
+ version = "0.5.2"
1482
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1483
+ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
1484
+ dependencies = [
1485
+ "getrandom",
1486
+ "libredox",
1487
+ "thiserror 2.0.19",
1488
+ ]
1489
+
1284
1490
  [[package]]
1285
1491
  name = "rustc_version"
1286
1492
  version = "0.4.1"
@@ -1324,6 +1530,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1324
1530
  checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
1325
1531
  dependencies = [
1326
1532
  "serde_core",
1533
+ "serde_derive",
1327
1534
  ]
1328
1535
 
1329
1536
  [[package]]
@@ -1355,6 +1562,12 @@ dependencies = [
1355
1562
  "serde",
1356
1563
  ]
1357
1564
 
1565
+ [[package]]
1566
+ name = "simd-adler32"
1567
+ version = "0.3.10"
1568
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1569
+ checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
1570
+
1358
1571
  [[package]]
1359
1572
  name = "slab"
1360
1573
  version = "0.4.12"
@@ -1416,6 +1629,17 @@ dependencies = [
1416
1629
  "unicode-ident",
1417
1630
  ]
1418
1631
 
1632
+ [[package]]
1633
+ name = "syn"
1634
+ version = "3.0.3"
1635
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1636
+ checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3"
1637
+ dependencies = [
1638
+ "proc-macro2",
1639
+ "quote",
1640
+ "unicode-ident",
1641
+ ]
1642
+
1419
1643
  [[package]]
1420
1644
  name = "synstructure"
1421
1645
  version = "0.13.2"
@@ -1510,7 +1734,16 @@ version = "1.0.69"
1510
1734
  source = "registry+https://github.com/rust-lang/crates.io-index"
1511
1735
  checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
1512
1736
  dependencies = [
1513
- "thiserror-impl",
1737
+ "thiserror-impl 1.0.69",
1738
+ ]
1739
+
1740
+ [[package]]
1741
+ name = "thiserror"
1742
+ version = "2.0.19"
1743
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1744
+ checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9"
1745
+ dependencies = [
1746
+ "thiserror-impl 2.0.19",
1514
1747
  ]
1515
1748
 
1516
1749
  [[package]]
@@ -1524,6 +1757,17 @@ dependencies = [
1524
1757
  "syn 2.0.118",
1525
1758
  ]
1526
1759
 
1760
+ [[package]]
1761
+ name = "thiserror-impl"
1762
+ version = "2.0.19"
1763
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1764
+ checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd"
1765
+ dependencies = [
1766
+ "proc-macro2",
1767
+ "quote",
1768
+ "syn 3.0.3",
1769
+ ]
1770
+
1527
1771
  [[package]]
1528
1772
  name = "tinystr"
1529
1773
  version = "0.8.3"
@@ -1625,6 +1869,27 @@ version = "0.1.36"
1625
1869
  source = "registry+https://github.com/rust-lang/crates.io-index"
1626
1870
  checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
1627
1871
 
1872
+ [[package]]
1873
+ name = "tray-icon"
1874
+ version = "0.24.2"
1875
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1876
+ checksum = "045979e3f037cd18ad1cb2a419dfda133c5c29c9f3453370079f2255d46c257e"
1877
+ dependencies = [
1878
+ "crossbeam-channel",
1879
+ "dirs",
1880
+ "libappindicator",
1881
+ "muda",
1882
+ "objc2",
1883
+ "objc2-app-kit",
1884
+ "objc2-core-foundation",
1885
+ "objc2-core-graphics",
1886
+ "objc2-foundation",
1887
+ "once_cell",
1888
+ "png",
1889
+ "thiserror 2.0.19",
1890
+ "windows-sys 0.61.2",
1891
+ ]
1892
+
1628
1893
  [[package]]
1629
1894
  name = "unicode-ident"
1630
1895
  version = "1.0.24"
@@ -1677,6 +1942,12 @@ dependencies = [
1677
1942
  "winapi-util",
1678
1943
  ]
1679
1944
 
1945
+ [[package]]
1946
+ name = "wasi"
1947
+ version = "0.11.1+wasi-snapshot-preview1"
1948
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1949
+ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
1950
+
1680
1951
  [[package]]
1681
1952
  name = "wasm-bindgen"
1682
1953
  version = "0.2.126"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "lumiview"
3
- version = "0.1.0-dev2"
3
+ version = "0.1.0-dev4"
4
4
  edition = "2021"
5
5
  description = "Python binding for tao — cross-platform window management."
6
6
  readme = "README.md"
@@ -14,6 +14,8 @@ pyo3 = { version = "0.29", features = ["extension-module"] }
14
14
  tao = "0.36"
15
15
  raw-window-handle = "0.6"
16
16
  window-vibrancy = "0.8"
17
+ muda = "0.19"
18
+ tray-icon = "0.24"
17
19
 
18
20
  [target.'cfg(target_os = "windows")'.dependencies]
19
21
  # Tao marks a window as transparent at the DWM level, but it does not draw an