6 Commits

Author SHA1 Message Date
a3fa227ac1 patch bump 2025-01-22 16:38:52 +00:00
b1b6c66828 reduce the time vban menus are re-enabled after a disconnect 2025-01-22 16:38:44 +00:00
cb00de36f0 add _internal/configs to config paths.
vm-compact dirs now override _internal/config

upd README TOML Files section
2025-01-22 16:30:06 +00:00
ae200068d0 upd vban-cmd dep 2025-01-17 03:06:55 +00:00
b720494c68 add gui scripts 2025-01-16 20:38:29 +00:00
6e6308a17f patch bump 2025-01-15 21:03:40 +00:00
11 changed files with 69 additions and 24 deletions

View File

@@ -65,15 +65,18 @@ Set the kind of Voicemeeter, KIND_ID may be:
## TOML Files ## TOML Files
This is how your files should be organised. Wherever your `__main__.py` file is located (after install this can be any location), `configs` should be in the same location. If you've downloaded the binary from [Releases][releases] you can find configs included in the `_internal/configs` directory.
Directly inside of configs directory you may place an app.toml, vban.toml and a directory for each kind.
Inside each kind directory you may place as many custom toml configurations as you wish. You may override these configs by placing a directory `vm-compact` in one of the following locations:
- `user home directory / .config`
- `user home directory / Documents / Voicemeeter`
The contents should match the following directory structure:
. .
├── `__main__.py` ├── vm-compact
├── configs
        ├── app.toml         ├── app.toml
@@ -111,7 +114,7 @@ Configure certain startup states for the app.
Configure a user config to load on app startup. Don't include the .toml extension in the config name. Configure a user config to load on app startup. Don't include the .toml extension in the config name.
- `theme` - `theme`
By default the app loads up the [Sun Valley light or dark theme][def] by @rdbende. You have the option to load up the app without any theme loaded. Simply set `enabled` to false and `mode` will take no effect. By default the app loads up the [Sun Valley light or dark theme][releases] by @rdbende. You have the option to load up the app without any theme loaded. Simply set `enabled` to false and `mode` will take no effect.
- `extends` - `extends`
Extending the app will show both strips and buses. In reduced mode only one or the other. This app will extend both horizontally and vertically, simply set `extends_horizontal` true or false accordingly. Extending the app will show both strips and buses. In reduced mode only one or the other. This app will extend both horizontally and vertically, simply set `extends_horizontal` true or false accordingly.
@@ -164,4 +167,5 @@ User configs may be loaded at any time via the menu.
[Rdbende](https://github.com/rdbende) for creating the beautiful [Sun Valley theme][sv-theme]. [Rdbende](https://github.com/rdbende) for creating the beautiful [Sun Valley theme][sv-theme].
[sv-theme]: https://github.com/rdbende/Sun-Valley-ttk-theme [sv-theme]: https://github.com/rdbende/Sun-Valley-ttk-theme
[releases]: https://github.com/onyx-and-iris/voicemeeter-compact/releases

12
poetry.lock generated
View File

@@ -223,18 +223,18 @@ files = [
[[package]] [[package]]
name = "vban-cmd" name = "vban-cmd"
version = "2.4.12" version = "2.5.0"
description = "Python interface for the VBAN RT Packet Service (Sendtext)" description = "Python interface for the VBAN RT Packet Service (Sendtext)"
optional = false optional = false
python-versions = "<4.0,>=3.10" python-versions = ">=3.10"
groups = ["main"] groups = ["main"]
files = [ files = [
{file = "vban_cmd-2.4.12-py3-none-any.whl", hash = "sha256:418f97a22b474f97e985149eedcd66756e2a192c92225cdf5c37640f235e46e8"}, {file = "vban_cmd-2.5.0-py3-none-any.whl", hash = "sha256:22a19037066487d464a61941a3b85a0331b498a9efb1bcacdc932e9d06c5bf87"},
{file = "vban_cmd-2.4.12.tar.gz", hash = "sha256:3bc1b0ff584d1c3e611d9f0c29d4a8a1a017ebcb891bf0c8ee458a95e711ec06"}, {file = "vban_cmd-2.5.0.tar.gz", hash = "sha256:691a852e5052e50103839b06a0a9d0746b90df3346545c2cf4f10b099d9666e4"},
] ]
[package.dependencies] [package.dependencies]
tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} tomli = {version = ">=2.0.1,<3.0", markers = "python_version < \"3.11\""}
[[package]] [[package]]
name = "voicemeeter-api" name = "voicemeeter-api"
@@ -254,4 +254,4 @@ tomli = {version = ">=2.0.1,<3.0", markers = "python_version < \"3.11\""}
[metadata] [metadata]
lock-version = "2.1" lock-version = "2.1"
python-versions = ">=3.10,<3.14" python-versions = ">=3.10,<3.14"
content-hash = "dcdeea1bbc5ce5b15a8aa22261b8958926d8ee28a9651544260df76887dea8cc" content-hash = "19c384acd36868a5bfdc3f3173f444858136603694c3f1134c0d30cd17157651"

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "voicemeeter-compact" name = "voicemeeter-compact"
version = "1.9.5" version = "1.9.8"
description = "A Compact Voicemeeter Remote App" description = "A Compact Voicemeeter Remote App"
authors = [ authors = [
{name = "Onyx and Iris",email = "code@onyxandiris.online"} {name = "Onyx and Iris",email = "code@onyxandiris.online"}
@@ -10,11 +10,16 @@ readme = "README.md"
requires-python = ">=3.10,<3.14" requires-python = ">=3.10,<3.14"
dependencies = [ dependencies = [
"voicemeeter-api (>=2.6.1,<3.0.0)", "voicemeeter-api (>=2.6.1,<3.0.0)",
"vban-cmd (>=2.4.12,<3.0.0)", "vban-cmd (>=2.5.0,<3.0.0)",
"sv-ttk (>=2.6.0,<3.0.0)", "sv-ttk (>=2.6.0,<3.0.0)",
"tomli (>=2.0.1,<3.0) ; python_version < '3.11'", "tomli (>=2.0.1,<3.0) ; python_version < '3.11'",
] ]
[project.scripts]
gui-basic = "vmcompact.gui.basic:run"
gui-banana = "vmcompact.gui.banana:run"
gui-potato = "vmcompact.gui.potato:run"
[tool.poetry] [tool.poetry]
packages = [{ include = "vmcompact" }] packages = [{ include = "vmcompact" }]
include = ["vmcompact/img/cat.ico"] include = ["vmcompact/img/cat.ico"]

View File

@@ -12,14 +12,14 @@ configuration = {}
def get_configpath(): def get_configpath():
configpaths = [ for pn in (
Path.home() / '.config' / 'vm-compact',
Path.home() / 'Documents' / 'Voicemeeter' / 'vm-compact',
Path.cwd() / '_internal' / 'configs',
Path.cwd() / 'configs', Path.cwd() / 'configs',
Path.home() / '.config' / 'vm-compact' / 'configs', ):
Path.home() / 'Documents' / 'Voicemeeter' / 'configs', if pn.exists():
] return pn
for configpath in configpaths:
if configpath.exists():
return configpath
if configpath := get_configpath(): if configpath := get_configpath():

View File

@@ -0,0 +1 @@
from .main import run

View File

@@ -0,0 +1,11 @@
import voicemeeterlib
import vmcompact
def run():
KIND_ID = 'banana'
with voicemeeterlib.api(KIND_ID) as vmr:
app = vmcompact.connect(KIND_ID, vmr)
app.mainloop()

View File

@@ -0,0 +1 @@
from .main import run

View File

@@ -0,0 +1,11 @@
import voicemeeterlib
import vmcompact
def run():
KIND_ID = 'basic'
with voicemeeterlib.api(KIND_ID) as vmr:
app = vmcompact.connect(KIND_ID, vmr)
app.mainloop()

View File

@@ -0,0 +1 @@
from .main import run

View File

@@ -0,0 +1,11 @@
import voicemeeterlib
import vmcompact
def run():
KIND_ID = 'potato'
with voicemeeterlib.api(KIND_ID) as vmr:
app = vmcompact.connect(KIND_ID, vmr)
app.mainloop()

View File

@@ -421,7 +421,7 @@ class Menus(tk.Menu):
del self.parent.__dict__['userconfigs'] del self.parent.__dict__['userconfigs']
self.menu_setup() self.menu_setup()
self.after(15000, self.enable_vban_menus) self.after(500, self.enable_vban_menus)
def documentation(self): def documentation(self):
webbrowser.open_new(r'https://voicemeeter.com/') webbrowser.open_new(r'https://voicemeeter.com/')