pymidi-controller 0.2.0__tar.gz → 0.3.1__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.
- {pymidi_controller-0.2.0/pymidi_controller.egg-info → pymidi_controller-0.3.1}/PKG-INFO +7 -1
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/README.md +6 -0
- pymidi_controller-0.3.1/pymidi_controller/data/systemd/pymidi-controller.service +16 -0
- pymidi_controller-0.2.0/pymidi_controller/data/systemd/pymidi-controller.service → pymidi_controller-0.3.1/pymidi_controller/data/systemd/pymidi-controller.system.service +3 -2
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/utils/service_manager.py +5 -1
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1/pymidi_controller.egg-info}/PKG-INFO +7 -1
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller.egg-info/SOURCES.txt +1 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pyproject.toml +1 -1
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/LICENSE +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/MANIFEST.in +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/__init__.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/actions/__init__.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/actions/elgato.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/actions/elgato_discovery.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/actions/hue.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/actions/hue_discovery.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/cli.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/config.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/core.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/data/default_config.yaml +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/utils/__init__.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/utils/color_cycle.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/utils/config_manager.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/utils/function_manager.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/utils/midi_utils.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/utils/state_manager.py +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller.egg-info/dependency_links.txt +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller.egg-info/entry_points.txt +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller.egg-info/requires.txt +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller.egg-info/top_level.txt +0 -0
- {pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pymidi-controller
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Daemon that maps MIDI events to system actions (Elgato, Hue, or custom functions).
|
|
5
5
|
Author-email: Alex Sandilands <sandilands.alex@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -306,6 +306,12 @@ To run automatically at login:
|
|
|
306
306
|
pymidi service install --user
|
|
307
307
|
```
|
|
308
308
|
|
|
309
|
+
The user service starts with your graphical session (`graphical-session.target`), after the desktop compositor is up. It does not pull that target in itself, so it can't make other autostart apps start early.
|
|
310
|
+
|
|
311
|
+
If your window manager doesn't start `graphical-session.target` (Plasma and GNOME do; some minimal setups such as i3, sway or Hyprland don't unless configured to), the service won't start at login. Start the target from your session startup, e.g. `systemctl --user start graphical-session.target`.
|
|
312
|
+
|
|
313
|
+
> **Upgrading from 0.3.0 or earlier?** Rerun `pymidi service install --user` (or `--system` for a system-wide install) once. It replaces the old unit and removes its stale `default.target` link. `pymidi service enable` alone doesn't refresh the unit file.
|
|
314
|
+
|
|
309
315
|
Logs:
|
|
310
316
|
|
|
311
317
|
```bash
|
|
@@ -282,6 +282,12 @@ To run automatically at login:
|
|
|
282
282
|
pymidi service install --user
|
|
283
283
|
```
|
|
284
284
|
|
|
285
|
+
The user service starts with your graphical session (`graphical-session.target`), after the desktop compositor is up. It does not pull that target in itself, so it can't make other autostart apps start early.
|
|
286
|
+
|
|
287
|
+
If your window manager doesn't start `graphical-session.target` (Plasma and GNOME do; some minimal setups such as i3, sway or Hyprland don't unless configured to), the service won't start at login. Start the target from your session startup, e.g. `systemctl --user start graphical-session.target`.
|
|
288
|
+
|
|
289
|
+
> **Upgrading from 0.3.0 or earlier?** Rerun `pymidi service install --user` (or `--system` for a system-wide install) once. It replaces the old unit and removes its stale `default.target` link. `pymidi service enable` alone doesn't refresh the unit file.
|
|
290
|
+
|
|
285
291
|
Logs:
|
|
286
292
|
|
|
287
293
|
```bash
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
[Unit]
|
|
2
|
+
Description=🎹 MIDI Controller Background Service
|
|
3
|
+
After=graphical-session.target sound.target
|
|
4
|
+
Wants=sound.target
|
|
5
|
+
|
|
6
|
+
[Service]
|
|
7
|
+
Type=simple
|
|
8
|
+
Environment=PATH=%h/.local/bin:/usr/local/bin:/usr/bin:/bin
|
|
9
|
+
ExecStart=/usr/bin/env pymidi-controller run --mode blocking
|
|
10
|
+
Restart=always
|
|
11
|
+
RestartSec=5
|
|
12
|
+
StandardOutput=journal
|
|
13
|
+
StandardError=journal
|
|
14
|
+
|
|
15
|
+
[Install]
|
|
16
|
+
WantedBy=graphical-session.target
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
[Unit]
|
|
2
2
|
Description=🎹 MIDI Controller Background Service
|
|
3
|
-
After=
|
|
3
|
+
After=sound.target
|
|
4
|
+
Wants=sound.target
|
|
4
5
|
|
|
5
6
|
[Service]
|
|
6
7
|
Type=simple
|
|
@@ -12,4 +13,4 @@ StandardOutput=journal
|
|
|
12
13
|
StandardError=journal
|
|
13
14
|
|
|
14
15
|
[Install]
|
|
15
|
-
WantedBy=
|
|
16
|
+
WantedBy=multi-user.target
|
{pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/utils/service_manager.py
RENAMED
|
@@ -22,20 +22,24 @@ def install(scope: ServiceScope):
|
|
|
22
22
|
if scope == ServiceScope.USER:
|
|
23
23
|
target_dir = Path.home() / ".config/systemd/user"
|
|
24
24
|
ctl = ["systemctl", "--user"]
|
|
25
|
+
src_name = "pymidi-controller.service"
|
|
25
26
|
elif scope == ServiceScope.SYSTEM:
|
|
26
27
|
target_dir = Path("/etc/systemd/system")
|
|
27
28
|
ctl = ["systemctl"]
|
|
29
|
+
src_name = "pymidi-controller.system.service"
|
|
28
30
|
else:
|
|
29
31
|
print("⚠️ Invalid scope for install.")
|
|
30
32
|
return
|
|
31
33
|
|
|
32
34
|
target_dir.mkdir(parents=True, exist_ok=True)
|
|
33
|
-
src = resources.files("pymidi_controller") / "data/systemd/
|
|
35
|
+
src = resources.files("pymidi_controller") / "data/systemd" / src_name
|
|
34
36
|
dst = target_dir / "pymidi-controller.service"
|
|
35
37
|
shutil.copy(src, dst)
|
|
36
38
|
print(f"✔️ Installed service unit to {dst}")
|
|
37
39
|
|
|
38
40
|
subprocess.run(ctl + ["daemon-reload"], check=True)
|
|
41
|
+
# Drop links from older units (e.g. default.target.wants) before enabling
|
|
42
|
+
subprocess.run(ctl + ["disable", "pymidi-controller.service"], check=False)
|
|
39
43
|
subprocess.run(ctl + ["enable", "--now", "pymidi-controller.service"], check=True)
|
|
40
44
|
print("✅ Service enabled and started.")
|
|
41
45
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pymidi-controller
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Daemon that maps MIDI events to system actions (Elgato, Hue, or custom functions).
|
|
5
5
|
Author-email: Alex Sandilands <sandilands.alex@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -306,6 +306,12 @@ To run automatically at login:
|
|
|
306
306
|
pymidi service install --user
|
|
307
307
|
```
|
|
308
308
|
|
|
309
|
+
The user service starts with your graphical session (`graphical-session.target`), after the desktop compositor is up. It does not pull that target in itself, so it can't make other autostart apps start early.
|
|
310
|
+
|
|
311
|
+
If your window manager doesn't start `graphical-session.target` (Plasma and GNOME do; some minimal setups such as i3, sway or Hyprland don't unless configured to), the service won't start at login. Start the target from your session startup, e.g. `systemctl --user start graphical-session.target`.
|
|
312
|
+
|
|
313
|
+
> **Upgrading from 0.3.0 or earlier?** Rerun `pymidi service install --user` (or `--system` for a system-wide install) once. It replaces the old unit and removes its stale `default.target` link. `pymidi service enable` alone doesn't refresh the unit file.
|
|
314
|
+
|
|
309
315
|
Logs:
|
|
310
316
|
|
|
311
317
|
```bash
|
|
@@ -19,6 +19,7 @@ pymidi_controller/actions/hue.py
|
|
|
19
19
|
pymidi_controller/actions/hue_discovery.py
|
|
20
20
|
pymidi_controller/data/default_config.yaml
|
|
21
21
|
pymidi_controller/data/systemd/pymidi-controller.service
|
|
22
|
+
pymidi_controller/data/systemd/pymidi-controller.system.service
|
|
22
23
|
pymidi_controller/utils/__init__.py
|
|
23
24
|
pymidi_controller/utils/color_cycle.py
|
|
24
25
|
pymidi_controller/utils/config_manager.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/actions/elgato_discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
{pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/actions/hue_discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/data/default_config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/utils/config_manager.py
RENAMED
|
File without changes
|
{pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/utils/function_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller/utils/state_manager.py
RENAMED
|
File without changes
|
{pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{pymidi_controller-0.2.0 → pymidi_controller-0.3.1}/pymidi_controller.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|