From 0b27ffa9e5bf18d75c2111f1f201bdc7b19d0465 Mon Sep 17 00:00:00 2001 From: nekename <63245705+nekename@users.noreply.github.com> Date: Sat, 17 May 2025 12:13:05 +0100 Subject: [PATCH] refactor: bring starter pack plugin source in-tree --- .gitattributes | 1 + .gitignore | 2 +- .gitmodules | 3 - deno.json | 2 +- .../com.amansprojects.starterpack.sdPlugin | 1 - .../Cargo.lock | 1258 ++++++++++++ .../Cargo.toml | 18 + .../build.ts | 18 + .../files/icons/inputSimulation.png | Bin 0 -> 2136 bytes .../files/icons/plugin.png | Bin 0 -> 2837 bytes .../files/icons/runCommand.png | Bin 0 -> 3035 bytes .../files/icons/switchProfile.png | Bin 0 -> 3633 bytes .../files/manifest.json | 56 + .../files/propertyInspector/check.svg | 3 + .../propertyInspector/inputSimulation.html | 77 + .../files/propertyInspector/runCommand.html | 62 + .../files/propertyInspector/sdpi.css | 1747 +++++++++++++++++ .../propertyInspector/switchProfile.html | 46 + .../rustfmt.toml | 3 + .../src/input_simulation.rs | 38 + .../src/main.rs | 51 + .../src/run_command.rs | 85 + .../src/switch_profile.rs | 39 + 23 files changed, 3504 insertions(+), 6 deletions(-) create mode 100644 .gitattributes delete mode 160000 plugins/com.amansprojects.starterpack.sdPlugin create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/Cargo.lock create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/Cargo.toml create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/build.ts create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/files/icons/inputSimulation.png create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/files/icons/plugin.png create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/files/icons/runCommand.png create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/files/icons/switchProfile.png create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/files/manifest.json create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/check.svg create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/inputSimulation.html create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/runCommand.html create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/sdpi.css create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/switchProfile.html create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/rustfmt.toml create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/src/input_simulation.rs create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/src/main.rs create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/src/run_command.rs create mode 100644 plugins/com.amansprojects.starterpack.sdPlugin/src/switch_profile.rs diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ccf65b4 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/sdpi.css linguist-vendored diff --git a/.gitignore b/.gitignore index 3f3f0e6..8b9b576 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ node_modules /build /.svelte-kit -/src-tauri/target +**/target /src-tauri/gen .env .env.* diff --git a/.gitmodules b/.gitmodules index 749d4fd..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "plugins/com.amansprojects.starterpack.sdPlugin"] - path = plugins/com.amansprojects.starterpack.sdPlugin - url = https://github.com/nekename/opendeck-starterpack.git diff --git a/deno.json b/deno.json index 8403c23..b03e811 100644 --- a/deno.json +++ b/deno.json @@ -1,6 +1,6 @@ { "fmt": { - "exclude": ["src-tauri/", "plugins/", "*.md"], + "exclude": ["src-tauri/", "*.md"], "useTabs": true, "lineWidth": 200 }, diff --git a/plugins/com.amansprojects.starterpack.sdPlugin b/plugins/com.amansprojects.starterpack.sdPlugin deleted file mode 160000 index 7bc1110..0000000 --- a/plugins/com.amansprojects.starterpack.sdPlugin +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7bc111010245a4e361eb79bf833ec8e5df2aa25a diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/Cargo.lock b/plugins/com.amansprojects.starterpack.sdPlugin/Cargo.lock new file mode 100644 index 0000000..c1d00b3 --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/Cargo.lock @@ -0,0 +1,1258 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +dependencies = [ + "serde", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "enigo" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cf6f550bbbdd5fe66f39d429cb2604bcdacbf00dca0f5bbe2e9306a0009b7c6" +dependencies = [ + "core-foundation", + "core-graphics", + "foreign-types-shared", + "libc", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "serde", + "windows", + "x11rb", + "xkbcommon", + "xkeysym", +] + +[[package]] +name = "errno" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "libc" +version = "0.2.172" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "openaction" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93a4320238eee9462ddc43c1feb66d41bda984a908e30138fd20ba7460554b5" +dependencies = [ + "anyhow", + "futures-util", + "log", + "serde", + "serde_json", + "tokio", + "tokio-tungstenite", +] + +[[package]] +name = "opendeck-starterpack" +version = "1.4.1" +dependencies = [ + "enigo", + "log", + "openaction", + "os_pipe", + "ron", + "serde", + "serde_json", + "simplelog", + "tokio", + "tungstenite", +] + +[[package]] +name = "os_pipe" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +dependencies = [ + "bitflags", +] + +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64", + "bitflags", + "serde", + "serde_derive", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +dependencies = [ + "libc", +] + +[[package]] +name = "simplelog" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16257adbfaef1ee58b1363bdc0664c9b8e1e30aed86049635fb5f147d065a9c0" +dependencies = [ + "log", + "termcolor", + "time", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" + +[[package]] +name = "socket2" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "syn" +version = "2.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tokio" +version = "1.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + +[[package]] +name = "tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +dependencies = [ + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "sha1", + "thiserror", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "x11rb" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +dependencies = [ + "gethostname", + "rustix", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" + +[[package]] +name = "xkbcommon" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d66ca9352cbd4eecbbc40871d8a11b4ac8107cfc528a6e14d7c19c69d0e1ac9" +dependencies = [ + "libc", + "memmap2", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/Cargo.toml b/plugins/com.amansprojects.starterpack.sdPlugin/Cargo.toml new file mode 100644 index 0000000..690730f --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "opendeck-starterpack" +version = "1.4.1" +authors = ["Aman Khanna (nekename)"] +license = "GPL-3.0-or-later" +edition = "2021" + +[dependencies] +openaction = "1.1" +log = "0.4" +simplelog = "0.12" +serde = "1.0" +serde_json = "1.0" +ron = "0.8" +enigo = { version = "0.3", features = ["serde", "x11rb"] } +tokio = { version = "1.42", features = ["full"] } +tungstenite = "0.26" +os_pipe = "1.2" diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/build.ts b/plugins/com.amansprojects.starterpack.sdPlugin/build.ts new file mode 100644 index 0000000..fc9ec7b --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/build.ts @@ -0,0 +1,18 @@ +import { copy } from "jsr:@std/fs"; +import { join } from "jsr:@std/path"; + +if (Deno.args.length < 1) Deno.exit(1); +const outDir = Deno.args[0]; +try { + Deno.remove(outDir, { recursive: true }); +} catch (error: any) { + if (!(error instanceof Deno.errors.NotFound)) { + throw error; + } +} +copy("files", outDir); + +if (!(await new Deno.Command("cargo", { args: ["build", "--release"] }).spawn().status).success) Deno.exit(1); +const builtExec = Deno.build.os == "windows" ? "opendeck-starterpack.exe" : "opendeck-starterpack"; +const targetExec = Deno.build.os == "windows" ? "opendeck-starterpack.exe" : Deno.build.os == "darwin" ? "opendeck-starterpack-mac" : "opendeck-starterpack"; +copy(join("target", "release", builtExec), join(outDir, targetExec)); diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/files/icons/inputSimulation.png b/plugins/com.amansprojects.starterpack.sdPlugin/files/icons/inputSimulation.png new file mode 100644 index 0000000000000000000000000000000000000000..04f1f935e54edef0fdfb063340daf9b521c0d13b GIT binary patch literal 2136 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 literal 0 HcmV?d00001 diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/files/icons/runCommand.png b/plugins/com.amansprojects.starterpack.sdPlugin/files/icons/runCommand.png new file mode 100644 index 0000000000000000000000000000000000000000..054558cb2e8cfccf5dd09f827000de45c1cf44d5 GIT binary patch literal 3035 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 literal 0 HcmV?d00001 diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/files/icons/switchProfile.png b/plugins/com.amansprojects.starterpack.sdPlugin/files/icons/switchProfile.png new file mode 100644 index 0000000000000000000000000000000000000000..0c56cb1663c1fd56270fe5851ce5f5b6e1041f07 GIT binary patch literal 3633 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 D{FJxX literal 0 HcmV?d00001 diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/files/manifest.json b/plugins/com.amansprojects.starterpack.sdPlugin/files/manifest.json new file mode 100644 index 0000000..6de88a5 --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/files/manifest.json @@ -0,0 +1,56 @@ +{ + "Name": "OpenDeck Starter Pack", + "Description": "OpenDeck starter pack plugin", + "Author": "Aman Khanna (nekename)", + "Version": "1.4.1", + "CodePathWin": "opendeck-starterpack.exe", + "CodePathMac": "opendeck-starterpack-mac", + "CodePathLin": "opendeck-starterpack", + "Icon": "icons/plugin", + "Category": "OpenDeck", + "OS": [ + { + "Platform": "mac", + "MinimumVersion": "10.11" + }, + { + "Platform": "windows", + "MinimumVersion": "10" + }, + { + "Platform": "linux" + } + ], + "Actions": [ + { + "Icon": "icons/runCommand", + "Name": "Run Command", + "States": [{ "Image": "actionDefaultImage" }], + "Controllers": ["Keypad"], + "SupportedInMultiActions": true, + "Tooltip": "Run a command", + "UUID": "com.amansprojects.starterpack.runcommand", + "PropertyInspectorPath": "propertyInspector/runCommand.html" + }, + { + "Icon": "icons/inputSimulation", + "Name": "Input Simulation", + "States": [{ "Image": "actionDefaultImage" }], + "Controllers": ["Keypad"], + "SupportedInMultiActions": true, + "Tooltip": "Simulate mouse or keyboard input", + "UUID": "com.amansprojects.starterpack.inputsimulation", + "PropertyInspectorPath": "propertyInspector/inputSimulation.html" + }, + { + "Icon": "icons/switchProfile", + "Name": "Switch Profile", + "States": [{ "Image": "actionDefaultImage" }], + "Controllers": ["Keypad"], + "SupportedInMultiActions": true, + "Tooltip": "Switch the selected profile", + "UUID": "com.amansprojects.starterpack.switchprofile", + "PropertyInspectorPath": "propertyInspector/switchProfile.html" + } + ] +} diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/check.svg b/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/check.svg new file mode 100644 index 0000000..bbfec96 --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/check.svg @@ -0,0 +1,3 @@ + + + diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/inputSimulation.html b/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/inputSimulation.html new file mode 100644 index 0000000..bf05219 --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/inputSimulation.html @@ -0,0 +1,77 @@ + + + + + + + +
+
Key down
+ + + +
+
+
Key up
+ + + +
+
+ Details + [t("hello world!"),m(10,10,r),s(5),b(l),k(ctrl,p),k(uni('a')),k(ctrl,r)] +

The example above becomes something like this:

+ + [ + Text("hello world!"), + MoveMouse(10, 10, Relative), + Scroll(5, Vertical), + Button(Left, Click), + Key(Control, Press), + Key(Unicode('a'), Click), + Key(Control, Release), +] +

+ As you can see, Vertical is the default for the Scroll action if an axis is not specified, + Click (press followed by release) is the default for the Button and Key actions if a direction is not specified, and so on. +

+ +

+ You can find a list of all of the keycodes + here. + Please note that not all keycodes are available on all operating systems, as is marked on each such keycode on the line above it. + You can find the possible buttons, directions, axis and coordinate types + here. +

+
+ + diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/runCommand.html b/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/runCommand.html new file mode 100644 index 0000000..9165582 --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/runCommand.html @@ -0,0 +1,62 @@ + + + + + + + +
+
Key down
+ +
+
+
Key up
+ +
+
+
+
Write to path
+ +
+
+
Show on key
+ + +
+ + diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/sdpi.css b/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/sdpi.css new file mode 100644 index 0000000..2b216bf --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/sdpi.css @@ -0,0 +1,1747 @@ +html { + --sdpi-bgcolor: #2d2d2d; + --sdpi-background: #3d3d3d; + --sdpi-color: #d8d8d8; + --sdpi-bordercolor: #3a3a3a; + --sdpi-buttonbordercolor: #969696; + --sdpi-borderradius: 0px; + --sdpi-width: 224px; + --sdpi-fontweight: 600; + --sdpi-letterspacing: -0.25pt; + --sdpi-tab-color: #969696; + --sdpi-tab-left-margin: 1px; + --sdpi-tab-top-offset: 1px; + --sdpi-tab-selected-color: #333333; + --sdpi-tab-selected-top-offset: 0px; + --sdpi-tab-font-size: 9pt; + --sdpi-tab-container-left-offset: 5px; + --sdpi-tab-padding-horizontal: 12px; + --sdpi-tab-padding-vertical: 5px; + --sdpi-linecolor: #454545; + height: 100%; + width: 100%; + overflow: hidden; + touch-action: none; +} + +html, +body { + font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 9pt; + background-color: var(--sdpi-bgcolor); + color: #9a9a9a; +} + +body { + height: 100%; + padding: 0; + overflow-x: hidden; + overflow-y: auto; + margin: 0; + -webkit-overflow-scrolling: touch; + -webkit-text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; +} + +mark { + background-color: var(--sdpi-bgcolor); + color: var(--sdpi-color); +} + +hr, +hr2 { + -webkit-margin-before: 1em; + -webkit-margin-after: 1em; + border-style: none; + background: var(--sdpi-background); + height: 1px; +} + +hr2, +.sdpi-heading { + display: flex; + flex-basis: 100%; + align-items: center; + color: inherit; + font-size: 9pt; + margin: 8px 0px; +} + +h1 { + font-size: 1.3em; + font-weight: 500; + text-align: center; + margin-bottom: 12px; +} + +.sdpi-heading::before, +.sdpi-heading::after { + content: ""; + flex-grow: 1; + background: var(--sdpi-background); + height: 1px; + font-size: 0px; + line-height: 0px; + margin: 0px 16px; +} + +hr2 { + height: 2px; +} + +hr, +hr2 { + margin-left: 16px; + margin-right: 16px; +} + +.sdpi-item-value, +option, +input, +select, +button { + font-size: 10pt; + font-weight: var(--sdpi-fontweight); + letter-spacing: var(--sdpi-letterspacing); +} + +.sdpi-item-value > :last-of-type, +.sdpi-item-value:last-child { + margin-bottom: 4px; +} + +.win .sdpi-item-value, +.win option, +.win input, +.win select, +.win button { + font-size: 11px; + font-style: normal; + letter-spacing: inherit; + font-weight: 100; +} + +.win button { + font-size: 12px; +} + +::-webkit-progress-value, +meter::-webkit-meter-optimum-value { + border-radius: 2px; + /* background: linear-gradient(#ccf, #99f 20%, #77f 45%, #77f 55%, #cdf); */ +} + +::-webkit-progress-bar, +meter::-webkit-meter-bar { + border-radius: 3px; + background: var(--sdpi-background); +} + +::-webkit-progress-bar:active, +meter::-webkit-meter-bar:active { + border-radius: 3px; + background: #222222; +} + +::-webkit-progress-value:active, +meter::-webkit-meter-optimum-value:active { + background: #99f; +} + +progress, +progress.sdpi-item-value { + min-height: 5px !important; + height: 5px; + background-color: #303030; +} + +progress { + margin-top: 8px !important; + margin-bottom: 8px !important; +} + +.full progress, +progress.full { + margin-top: 3px !important; +} + +::-webkit-progress-inner-element { + background-color: transparent; +} + +.sdpi-item[type="progress"] { + margin-top: 4px !important; + margin-bottom: 12px; + min-height: 15px; +} + +.sdpi-item-child.full:last-child { + margin-bottom: 4px; +} + +/* TABS */ + +.tabs { + /** + * Setting display to flex makes this container lay + * out its children using flexbox, the exact same + * as in the above "Stepper input" example. + */ + display: flex; + border-bottom: 1px solid rgba(255, 255, 255, 0.0); + flex-wrap: nowrap; + white-space: nowrap; + overflow-x: auto; + text-transform: capitalize; + background-color: transparent; + margin-left: var(--sdpi-tab-container-left-offset); +} + +.tabs::-webkit-scrollbar { + height: 4px; + display: none; +} + +.tabs::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + border-radius: 8px; +} + +.tabs::-webkit-scrollbar-thumb { + background-color: #444; + outline: 1px solid #444; + border-radius: 8px; +} + +.tab-separator { + margin-left: 100px; + max-width: 234px; + margin-bottom: 20px; + margin-top: -4px; +} + +.tab { + cursor: pointer; + padding: var(--sdpi-tab-padding-vertical) var(--sdpi-tab-padding-horizontal); + color: var(--sdpi-tab-color); + font-size: var(--sdpi-tab-font-size); + font-weight: var(--title-font-weight); + background-color: rgba(0, 0, 0, 0.1); + margin: 0px; + margin-top: var(--sdpi-tab-top-offset); + margin-left: var(--sdpi-tab-left-margin); + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border: 1px solid rgba(255, 255, 255, 0.1); + border-bottom: 1px solid var(--sdpi-linecolor); + -webkit-user-select: none; + user-select: none; +} + +.tab:first-child { + margin-left: 0px; +} + +.tab-container { + margin-top: -14px; +} + +.tab-container > hr { + margin-left: 100px; + max-width: 234px; +} + +.tabs + hr { + margin-left: 0px; + max-width: 234px; + margin-top: -6px; +} + +.tab.selected { + color: white; + background-color: var(--sdpi-tab-selected-color); + border-bottom: 2px solid var(--sdpi-tab-selected-color); + margin-top: var(--sdpi-tab-selected-top-offset); +} + +.sdpi-item.tabgroup { + margin-top: 0px; +} + +.istab { + background-color: rgba(0, 0, 0, 0.2); + margin-bottom: 20px; + padding: 4px; +} + +select { + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + background: url(../assets/caret.svg) no-repeat 97% center; +} + +label.sdpi-file-label, +input[type="button"], +input[type="submit"], +input[type="reset"], +input[type="file"], +input[type="file"]::-webkit-file-upload-button, +button, +select { + color: var(--sdpi-color); + border: 1pt solid #303030; + font-size: 8pt; + background-color: var(--sdpi-background); + border-radius: var(--sdpi-borderradius); +} + +label.sdpi-file-label, +input[type="button"], +input[type="submit"], +input[type="reset"], +input[type="file"], +input[type="file"]::-webkit-file-upload-button, +button { + border: 1pt solid var(--sdpi-buttonbordercolor); + border-radius: var(--sdpi-borderradius); + border-color: var(--sdpi-buttonbordercolor); + min-height: 23px !important; + height: 23px !important; + margin-right: 8px; +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} + +input[type="file"] { + border-radius: var(--sdpi-borderradius); + max-width: 220px; +} + +option { + height: 1.5em; + padding: 4px; +} + +/* SDPI */ + +.sdpi-wrapper { + overflow-x: hidden; + height: 100%; + margin-right: 1px; /* ensure scroller thumb is not clipped */ +} + +.sdpi-item { + display: flex; + flex-direction: row; + min-height: 30px; + align-items: first baseline; + margin-top: 2px; + max-width: 344px; + -webkit-user-drag: none; +} + +.sdpi-item[type="textarea"], +.sdpi-item[type="color"], +.sdpi-item[type="canvas"], +.sdpi-item .aligncenter { + align-items: center; +} + +.sdpi-item[type="color"] > .sdpi-item-label { + line-height: 22px; +} + +.sdpi-item:first-child { + margin-top: -1px; +} + +.sdpi-item:first-of-type { + margin-top: 2px; +} + +.sdpi-item[type="radio"]:first-of-type, +.sdpi-item[type="checkbox"]:first-of-type { + margin-top: -4px; +} + +.sdpi-item:last-child { + margin-bottom: 0px; +} + +.sdpi-item > *:not(.sdpi-item-label):not(meter):not(details):not(canvas) { + min-height: 26px; +} + +.sdpi-item > *:not(.sdpi-item-label.empty):not(meter) { + min-height: 26px; +} + +.sdpi-item > input { + padding: 0px 4px; +} + +.sdpi-item-group { + padding: 0 !important; +} + +meter.sdpi-item-value { + margin-left: 6px; +} + +.sdpi-item[type="group"] { + display: block; + margin-top: 12px; + margin-bottom: 12px; + /* border: 1px solid white; */ + flex-direction: unset; + text-align: left; +} + +.sdpi-item[type="group"] > .sdpi-item-label, +.sdpi-item[type="group"].sdpi-item-label { + width: 96%; + text-align: left; + font-weight: 700; + margin-bottom: 4px; + padding-left: 4px; +} + +dl, +ul, +ol { + -webkit-margin-before: 0px; + -webkit-margin-after: 4px; + -webkit-padding-start: 1em; + max-height: 90px; + overflow-y: scroll; + cursor: pointer; + user-select: none; +} + +table.sdpi-item-value, +dl.sdpi-item-value, +ul.sdpi-item-value, +ol.sdpi-item-value { + -webkit-margin-before: 4px; + -webkit-margin-after: 8px; + -webkit-padding-start: 1em; + width: var(--sdpi-width); + text-align: center; +} + +table > caption { + margin: 2px; +} + +.list, +.sdpi-item[type="list"] { + align-items: baseline; +} + +.sdpi-item-label { + text-align: right; + flex: none; + width: 94px; + padding-right: 5px; + font-weight: 600; + -webkit-user-select: none; + line-height: normal; + margin-left: -1px; +} + +.win .sdpi-item-label, +.sdpi-item-label > small { + font-weight: normal; +} + +.sdpi-item-label:after { + content: ": "; +} + +.sdpi-item-label.empty:after { + content: ""; +} + +.sdpi-test, +.sdpi-item-value { + flex: 1 0 0; + /* flex-grow: 1; + flex-shrink: 0; */ + margin-right: 14px; + margin-left: 4px; + justify-content: space-evenly; +} + +canvas.sdpi-item-value { + max-width: 144px; + max-height: 144px; + width: 144px; + height: 144px; + margin: 0 auto; + cursor: pointer; +} + +input.sdpi-item-value { + margin-left: 5px; +} + +.sdpi-item-value button, +button.sdpi-item-value { + margin-left: 6px; + margin-right: 14px; +} + +.sdpi-item-value.range { + margin-left: 0px; +} + +table, +dl.sdpi-item-value, +ul.sdpi-item-value, +ol.sdpi-item-value, +.sdpi-item-value > dl, +.sdpi-item-value > ul, +.sdpi-item-value > ol { + list-style-type: none; + list-style-position: outside; + margin-left: -4px; + margin-right: -4px; + padding: 4px; + border: 1px solid var(--sdpi-bordercolor); +} + +dl.sdpi-item-value, +ul.sdpi-item-value, +ol.sdpi-item-value, +.sdpi-item-value > ol { + list-style-type: none; + list-style-position: inside; + margin-left: 5px; + margin-right: 12px; + padding: 4px !important; + /* display: flex; + flex-direction: column; */ +} + +.two-items li { + display: flex; +} + +.two-items li > *:first-child { + flex: 0 0 50%; + text-align: left; +} + +.two-items.thirtyseventy li > *:first-child { + flex: 0 0 30%; +} + +ol.sdpi-item-value, +.sdpi-item-value > ol[listtype="none"] { + list-style-type: none; +} + +ol.sdpi-item-value[type="decimal"], +.sdpi-item-value > ol[type="decimal"] { + list-style-type: decimal; +} + +ol.sdpi-item-value[type="decimal-leading-zero"], +.sdpi-item-value > ol[type="decimal-leading-zero"] { + list-style-type: decimal-leading-zero; +} + +ol.sdpi-item-value[type="lower-alpha"], +.sdpi-item-value > ol[type="lower-alpha"] { + list-style-type: lower-alpha; +} + +ol.sdpi-item-value[type="upper-alpha"], +.sdpi-item-value > ol[type="upper-alpha"] { + list-style-type: upper-alpha; +} + +ol.sdpi-item-value[type="upper-roman"], +.sdpi-item-value > ol[type="upper-roman"] { + list-style-type: upper-roman; +} + +ol.sdpi-item-value[type="lower-roman"], +.sdpi-item-value > ol[type="lower-roman"] { + list-style-type: upper-roman; +} + +tr:nth-child(even), +.sdpi-item-value > ul > li:nth-child(even), +.sdpi-item-value > ol > li:nth-child(even), +li:nth-child(even) { + background-color: rgba(0, 0, 0, 0.2); +} + +td:hover, +.sdpi-item-value > ul > li:hover:nth-child(even), +.sdpi-item-value > ol > li:hover:nth-child(even), +li:hover:nth-child(even), +li:hover { + background-color: rgba(255, 255, 255, 0.1); +} + +td.selected, +td.selected:hover, +li.selected:hover, +li.selected { + color: white; + background-color: #77f; +} + +tr { + border: 1px solid var(--sdpi-bordercolor); +} + +td { + border-right: 1px solid var(--sdpi-bordercolor); + -webkit-user-select: none; +} + +tr:last-child, +td:last-child { + border: none; +} + +.sdpi-item-value.select, +.sdpi-item-value > select { + margin-right: 13px; + margin-left: 4px; + padding: 0px 4px; +} + +.sdpi-item-child, +.sdpi-item-group > .sdpi-item > input[type="color"] { + margin-top: 0.4em; + margin-right: 4px; + margin-left: 4px; +} + +.full, +.full *, +.sdpi-item-value.full, +.sdpi-item-child > full > *, +.sdpi-item-child.full, +.sdpi-item-child.full > *, +.full > .sdpi-item-child, +.full > .sdpi-item-child > * { + display: flex; + flex: 1 1 0; + margin-bottom: 4px; + margin-left: 0px; + width: 100%; + justify-content: space-evenly; +} + +.sdpi-item-group > .sdpi-item > input[type="color"] { + margin-top: 0px; +} + +::-webkit-calendar-picker-indicator:focus, +input[type="file"]::-webkit-file-upload-button:focus, +button:focus, +textarea:focus, +input:focus, +select:focus, +option:focus, +details:focus, +summary:focus, +.custom-select select { + outline: none; +} + +summary { + cursor: default; + -webkit-user-select: none; +} + +.pointer, +summary .pointer { + cursor: pointer; +} + +.sdpi-item.details { + align-items: first baseline; +} + +/* needs Chromium update 2023 +.sdpi-item:has(>details) { + align-items: first baseline; +} +*/ + +details * { + font-size: 12px; + font-weight: normal; +} + +details.message { + padding: 4px 18px 4px 12px; +} + +details.message summary { + font-size: 10pt; + font-weight: 600; + min-height: 18px; +} + +details.message:first-child { + margin-top: 4px; + margin-left: 0; + padding-left: 102px !important; +} + +details.message > summary:first-of-type { + line-height: 20px; +} + +details.message h1 { + text-align: left; +} + +/* details:not(.pointer)>summary { + list-style: none; +} + +details > summary::-webkit-details-marker, +.message > summary::-webkit-details-marker { + display: none; +} */ + +.info20, +.question, +.caution, +.info { + background-repeat: no-repeat; + background-position: 72px center; +} + +.info20 { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23999' d='M10,20 C4.4771525,20 0,15.5228475 0,10 C0,4.4771525 4.4771525,0 10,0 C15.5228475,0 20,4.4771525 20,10 C20,15.5228475 15.5228475,20 10,20 Z M10,8 C8.8954305,8 8,8.84275812 8,9.88235294 L8,16.1176471 C8,17.1572419 8.8954305,18 10,18 C11.1045695,18 12,17.1572419 12,16.1176471 L12,9.88235294 C12,8.84275812 11.1045695,8 10,8 Z M10,3 C8.8954305,3 8,3.88165465 8,4.96923077 L8,5.03076923 C8,6.11834535 8.8954305,7 10,7 C11.1045695,7 12,6.11834535 12,5.03076923 L12,4.96923077 C12,3.88165465 11.1045695,3 10,3 Z'/%3E%3C/svg%3E%0A"); +} + +.info { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23999' d='M10,18 C5.581722,18 2,14.418278 2,10 C2,5.581722 5.581722,2 10,2 C14.418278,2 18,5.581722 18,10 C18,14.418278 14.418278,18 10,18 Z M10,8 C9.44771525,8 9,8.42137906 9,8.94117647 L9,14.0588235 C9,14.5786209 9.44771525,15 10,15 C10.5522847,15 11,14.5786209 11,14.0588235 L11,8.94117647 C11,8.42137906 10.5522847,8 10,8 Z M10,5 C9.44771525,5 9,5.44082732 9,5.98461538 L9,6.01538462 C9,6.55917268 9.44771525,7 10,7 C10.5522847,7 11,6.55917268 11,6.01538462 L11,5.98461538 C11,5.44082732 10.5522847,5 10,5 Z'/%3E%3C/svg%3E%0A"); +} + +.info2 { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 15 15'%3E%3Cpath fill='%23999' d='M7.5,15 C3.35786438,15 0,11.6421356 0,7.5 C0,3.35786438 3.35786438,0 7.5,0 C11.6421356,0 15,3.35786438 15,7.5 C15,11.6421356 11.6421356,15 7.5,15 Z M7.5,2 C6.67157287,2 6,2.66124098 6,3.47692307 L6,3.52307693 C6,4.33875902 6.67157287,5 7.5,5 C8.32842705,5 9,4.33875902 9,3.52307693 L9,3.47692307 C9,2.66124098 8.32842705,2 7.5,2 Z M5,6 L5,7.02155172 L6,7 L6,12 L5,12.0076778 L5,13 L10,13 L10,12 L9,12.0076778 L9,6 L5,6 Z'/%3E%3C/svg%3E%0A"); +} + +.sdpi-more-info { + background-image: + linear-gradient(to right, #00000000 0%, #00000040 80%), + url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpolygon fill='%23999' points='4 7 8 7 8 5 12 8 8 11 8 9 4 9'/%3E%3C/svg%3E%0A"); +} + +.caution { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23999' fill-rule='evenodd' d='M9.03952676,0.746646542 C9.57068894,-0.245797319 10.4285735,-0.25196227 10.9630352,0.746646542 L19.7705903,17.2030214 C20.3017525,18.1954653 19.8777595,19 18.8371387,19 L1.16542323,19 C0.118729947,19 -0.302490098,18.2016302 0.231971607,17.2030214 L9.03952676,0.746646542 Z M10,2.25584053 L1.9601405,17.3478261 L18.04099,17.3478261 L10,2.25584053 Z M10,5.9375 C10.531043,5.9375 10.9615385,6.37373537 10.9615385,6.91185897 L10.9615385,11.6923077 C10.9615385,12.2304313 10.531043,12.6666667 10,12.6666667 C9.46895697,12.6666667 9.03846154,12.2304313 9.03846154,11.6923077 L9.03846154,6.91185897 C9.03846154,6.37373537 9.46895697,5.9375 10,5.9375 Z M10,13.4583333 C10.6372516,13.4583333 11.1538462,13.9818158 11.1538462,14.6275641 L11.1538462,14.6641026 C11.1538462,15.3098509 10.6372516,15.8333333 10,15.8333333 C9.36274837,15.8333333 8.84615385,15.3098509 8.84615385,14.6641026 L8.84615385,14.6275641 C8.84615385,13.9818158 9.36274837,13.4583333 10,13.4583333 Z'/%3E%3C/svg%3E%0A"); +} + +.question { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23999' d='M10,18 C5.581722,18 2,14.418278 2,10 C2,5.581722 5.581722,2 10,2 C14.418278,2 18,5.581722 18,10 C18,14.418278 14.418278,18 10,18 Z M6.77783203,7.65332031 C6.77783203,7.84798274 6.85929281,8.02888914 7.0222168,8.19604492 C7.18514079,8.36320071 7.38508996,8.44677734 7.62207031,8.44677734 C8.02409055,8.44677734 8.29703704,8.20768468 8.44091797,7.72949219 C8.59326248,7.27245865 8.77945854,6.92651485 8.99951172,6.69165039 C9.2195649,6.45678594 9.56233491,6.33935547 10.027832,6.33935547 C10.4256205,6.33935547 10.7006836,6.37695313 11.0021973,6.68847656 C11.652832,7.53271484 10.942627,8.472229 10.3750916,9.1321106 C9.80755615,9.79199219 8.29492188,11.9897461 10.027832,12.1347656 C10.4498423,12.1700818 10.7027991,11.9147157 10.7832031,11.4746094 C11.0021973,9.59857178 13.1254883,8.82415771 13.1254883,7.53271484 C13.1254883,7.07568131 12.9974785,6.65250846 12.7414551,6.26318359 C12.4854317,5.87385873 12.1225609,5.56600048 11.652832,5.33959961 C11.1831031,5.11319874 10.6414419,5 10.027832,5 C9.36767248,5 8.79004154,5.13541531 8.29492187,5.40625 C7.79980221,5.67708469 7.42317837,6.01879677 7.16503906,6.43139648 C6.90689975,6.8439962 6.77783203,7.25130007 6.77783203,7.65332031 Z M10.0099668,15 C10.2713191,15 10.5016601,14.9108147 10.7009967,14.7324415 C10.9003332,14.5540682 11,14.3088087 11,13.9966555 C11,13.7157177 10.9047629,13.4793767 10.7142857,13.2876254 C10.5238086,13.0958742 10.2890379,13 10.0099668,13 C9.72646591,13 9.48726565,13.0958742 9.2923588,13.2876254 C9.09745196,13.4793767 9,13.7157177 9,13.9966555 C9,14.313268 9.10077419,14.5596424 9.30232558,14.735786 C9.50387698,14.9119295 9.73975502,15 10.0099668,15 Z'/%3E%3C/svg%3E%0A"); +} + +.sdpi-more-info { + position: fixed; + left: 0px; + right: 0px; + bottom: 0px; + min-height: 16px; + padding-right: 16px; + text-align: right; + -webkit-touch-callout: none; + cursor: pointer; + user-select: none; + background-position: right center; + background-repeat: no-repeat; + border-radius: var(--sdpi-borderradius); + text-decoration: none; + color: var(--sdpi-color); +} + +.sdpi-more-info-button { + display: flex; + align-self: right; + margin-left: auto; + position: fixed; + right: 17px; + bottom: 0px; + user-select: none; +} + +.sdpi-bottom-bar { + display: flex; + align-self: right; + margin-left: auto; + position: fixed; + right: 17px; + bottom: 0px; + user-select: none; +} + +.sdpi-bottom-bar.right { + right: 0px; +} + +.sdpi-bottom-bar button { + min-height: 20px !important; + height: 20px !important; +} + +details a { + background-position: right !important; + min-height: 24px; + display: inline-block; + line-height: 24px; + padding-right: 28px; +} + +input:not([type="range"]), +textarea { + -webkit-appearance: none; + background: var(--sdpi-background); + color: var(--sdpi-color); + font-weight: normal; + font-size: 9pt; + border: none; + margin-top: 2px; + margin-bottom: 2px; + min-width: 219px; +} + +textarea + label { + display: flex; + justify-content: flex-end; +} + +input[type="radio"], +input[type="checkbox"] { + display: none; +} + +input[type="radio"] + label, +input[type="checkbox"] + label { + font-size: 9pt; + color: var(--sdpi-color); + font-weight: normal; + margin-right: 8px; + -webkit-user-select: none; +} + +input[type="radio"] + label:after, +input[type="checkbox"] + label:after { + content: " " !important; +} + +.sdpi-item[type="radio"] > .sdpi-item-value, +.sdpi-item[type="checkbox"] > .sdpi-item-value { + padding-top: 2px; +} + +.sdpi-item[type="checkbox"] > .sdpi-item-value > * { + margin-top: 4px; +} + +.sdpi-item[type="checkbox"] .sdpi-item-child, +.sdpi-item[type="radio"] .sdpi-item-child { + display: inline-block; +} + +.sdpi-item[type="range"] .sdpi-item-value, +.sdpi-item[type="meter"] .sdpi-item-child, +.sdpi-item[type="progress"] .sdpi-item-child { + display: flex; +} + +.sdpi-item[type="range"] .sdpi-item-value { + min-height: 26px; +} + +.sdpi-item[type="range"] .sdpi-item-value span, +.sdpi-item[type="meter"] .sdpi-item-child span, +.sdpi-item[type="progress"] .sdpi-item-child span { + margin-top: -2px; + min-width: 8px; + text-align: right; + cursor: pointer; + -webkit-user-select: none; + user-select: none; +} + +.sdpi-item[type="range"] .sdpi-item-value span { + margin-top: 7px; + text-align: right; +} + +span + input[type="range"] { + display: flex; +} + +span + .range-container > input[type="range"], +span + input[type="range"] { + max-width: 168px; +} + +.sdpi-item[type="range"] .sdpi-item-value span:first-child, +.sdpi-item[type="meter"] .sdpi-item-child span:first-child, +.sdpi-item[type="progress"] .sdpi-item-child span:first-child { + margin-right: 4px; +} + +.sdpi-item[type="range"] .sdpi-item-value span:last-child, +.sdpi-item[type="meter"] .sdpi-item-child span:last-child, +.sdpi-item[type="progress"] .sdpi-item-child span:last-child { + margin-left: 4px; +} + +.reverse { + transform: rotate(180deg); +} + +.sdpi-item[type="meter"] .sdpi-item-child meter + span:last-child { + margin-left: -10px; +} + +.sdpi-item[type="progress"] .sdpi-item-child meter + span:last-child { + margin-left: -14px; +} + +.sdpi-item[type="radio"] > .sdpi-item-value > * { + margin-top: 2px; +} + +details { + padding: 8px 18px 8px 12px; + min-width: 86px; +} + +details > h4 { + border-bottom: 1px solid var(--sdpi-bordercolor); +} + +legend { + display: none; +} + +.sdpi-item-value > textarea { + padding: 0px; + width: 219px; + margin-left: 1px; + margin-top: 3px; + padding: 4px; +} + +input[type="radio"] + label span, +input[type="checkbox"] + label span { + display: inline-block; + width: 16px; + height: 16px; + margin: 2px 4px 2px 0; + border-radius: 3px; + vertical-align: middle; + background: var(--sdpi-background); + cursor: pointer; + border: 1px solid rgb(0, 0, 0, 0.2); +} + +input[type="radio"] + label span { + border-radius: 100%; +} + +input[type="radio"]:checked + label span, +input[type="checkbox"]:checked + label span { + background-color: #77f; + background-image: url(./check.svg); + background-repeat: no-repeat; + background-position: center center; + border: 1px solid rgb(0, 0, 0, 0.4); +} + +input[type="radio"]:active:checked + label span, +input[type="radio"]:active + label span, +input[type="checkbox"]:active:checked + label span, +input[type="checkbox"]:active + label span { + background-color: #303030; +} + +input[type="radio"]:checked + label span { + background-image: url(../assets/rcheck.svg); +} + +input[type="range"] { + width: var(--sdpi-width); + height: 30px; + overflow: hidden; + cursor: pointer; + background: transparent !important; +} + +.sdpi-item > input[type="range"] { + margin-left: 2px; + max-width: var(--sdpi-width); + width: var(--sdpi-width); + padding: 0px; + margin-top: 2px; +} + +/* +input[type="range"], +input[type="range"]::-webkit-slider-runnable-track, +input[type="range"]::-webkit-slider-thumb { + -webkit-appearance: none; +} +*/ + +input[type="range"]::-webkit-slider-runnable-track { + height: 5px; + background: #979797; + border-radius: 3px; + padding: 0px !important; + border: 1px solid var(--sdpi-background); +} + +input[type="range"]::-webkit-slider-thumb { + position: relative; + -webkit-appearance: none; + background-color: var(--sdpi-color); + width: 12px; + height: 12px; + border-radius: 20px; + margin-top: -5px; + border: none; +} + +input[type="range" i] { + margin: 0; +} + +input[type="range"]::-webkit-slider-thumb::before { + position: absolute; + content: ""; + height: 5px; /* equal to height of runnable track or 1 less */ + width: 500px; /* make this bigger than the widest range input element */ + left: -502px; /* this should be -2px - width */ + top: 8px; /* don't change this */ + background: #77f; +} + +input[type="color"] { + min-width: 32px; + min-height: 32px; + width: 32px; + height: 32px; + padding: 0; + background-color: var(--sdpi-bgcolor); + flex: none; +} + +::-webkit-color-swatch { + min-width: 24px; +} + +textarea { + height: 3em; + word-break: break-word; + line-height: 1.5em; +} + +.textarea { + padding: 0px !important; +} + +textarea { + width: 219px; /*98%;*/ + height: 96%; + min-height: 6em; + resize: none; + border-radius: var(--sdpi-borderradius); +} + +/* CAROUSEL */ + +.sdpi-item[type="carousel"] {} + +.sdpi-item.card-carousel-wrapper, +.sdpi-item > .card-carousel-wrapper { + padding: 0; +} + +.card-carousel-wrapper { + display: flex; + align-items: center; + justify-content: center; + margin: 12px auto; + color: #666a73; +} + +.card-carousel { + display: flex; + justify-content: center; + width: 278px; +} + +.card-carousel--overflow-container { + overflow: hidden; +} + +.card-carousel--nav__left, +.card-carousel--nav__right { + /* display: inline-block; */ + width: 12px; + height: 12px; + border-top: 2px solid #42b883; + border-right: 2px solid #42b883; + cursor: pointer; + margin: 0 4px; + transition: transform 150ms linear; +} + +.card-carousel--nav__left[disabled], +.card-carousel--nav__right[disabled] { + opacity: 0.2; + border-color: black; +} + +.card-carousel--nav__left { + transform: rotate(-135deg); +} + +.card-carousel--nav__left:active { + transform: rotate(-135deg) scale(0.85); +} + +.card-carousel--nav__right { + transform: rotate(45deg); +} + +.card-carousel--nav__right:active { + transform: rotate(45deg) scale(0.85); +} + +.card-carousel-cards { + display: flex; + transition: transform 150ms ease-out; + transform: translatex(0px); +} + +.card-carousel-cards .card-carousel--card { + margin: 0 5px; + cursor: pointer; + /* box-shadow: 0 4px 15px 0 rgba(40, 44, 53, 0.06), 0 2px 2px 0 rgba(40, 44, 53, 0.08); */ + /* background-color: #fff; */ + text-align: center; + border-radius: 4px; + z-index: 3; +} + +.xxcard-carousel-cards .card-carousel--card:first-child { + margin-left: 0; +} + +.xxcard-carousel-cards .card-carousel--card:last-child { + margin-right: 0; +} + +.card-carousel-cards .card-carousel--card img { + vertical-align: bottom; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + transition: opacity 150ms linear; + width: 60px; +} + +.card-carousel-cards .card-carousel--card img:hover { + opacity: 0.5; + background-color: rgba(255, 255, 255, 0.1); +} + +.card-carousel-cards .card-carousel--card--footer { + border-top: 0; + max-width: 80px; + overflow: hidden; + display: flex; + height: 100%; + flex-direction: column; +} + +.card-carousel-cards .card-carousel--card--footer p { + padding: 3px 0; + margin: 0; + margin-bottom: 2px; + font-size: 15px; + font-weight: 500; + color: #2c3e50; +} + +.card-carousel-cards .card-carousel--card--footer p:nth-of-type(2) { + font-size: 12px; + font-weight: 300; + padding: 6px; + color: #666a73; +} + +::-webkit-calendar-picker-indicator { + background: url(../assets/elg_calendar_inv.svg) no-repeat center; + font-size: 17px; +} + +::-webkit-calendar-picker-indicator:focus { + background-color: rgba(0, 0, 0, 0.2); +} + +input[type="text"]::-webkit-calendar-picker-indicator { + background: transparent; + font-size: 12px; +} + +input[type="date"] { + -webkit-align-items: center; + align-items: center; + display: -webkit-inline-flex; + overflow: hidden; + -webkit-padding-start: 1px; +} + +input::-webkit-datetime-edit { + flex: 1; + -webkit-user-modify: read-only !important; + user-modify: read-only !important; + display: inline-block; + min-width: 0; + overflow: hidden; + padding: 4px; + font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} + +input[type="file"] { + opacity: 0; + display: none; +} + +.sdpi-item > input[type="file"] { + opacity: 1; + display: flex; +} + +input[type="file"] + span { + display: flex; + flex: 0 1 auto; + background-color: #0000ff50; +} + +label.sdpi-file-label { + cursor: pointer; + user-select: none; + display: inline-block; + min-height: 21px !important; + height: 21px !important; + line-height: 20px; + padding: 0px 4px; + margin: auto; + margin-right: 0px; + float: right; +} + +.sdpi-file-label > label:active, +.sdpi-file-label.file:active, +label.sdpi-file-label:active, +label.sdpi-file-info:active, +input[type="file"]::-webkit-file-upload-button:active, +button:active { + background-color: var(--sdpi-color); + color: #303030; +} + +input:required:invalid, +input:focus:invalid { + background: var(--sdpi-background) + url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIHZpZXdCb3g9IjAgMCA5IDkiPgogICAgPHBhdGggZmlsbD0iI0Q4RDhEOCIgZD0iTTQuNSwwIEM2Ljk4NTI4MTM3LC00LjU2NTM4NzgyZS0xNiA5LDIuMDE0NzE4NjMgOSw0LjUgQzksNi45ODUyODEzNyA2Ljk4NTI4MTM3LDkgNC41LDkgQzIuMDE0NzE4NjMsOSAzLjA0MzU5MTg4ZS0xNiw2Ljk4NTI4MTM3IDAsNC41IEMtMy4wNDM1OTE4OGUtMTYsMi4wMTQ3MTg2MyAyLjAxNDcxODYzLDQuNTY1Mzg3ODJlLTE2IDQuNSwwIFogTTQsMSBMNCw2IEw1LDYgTDUsMSBMNCwxIFogTTQuNSw4IEM0Ljc3NjE0MjM3LDggNSw3Ljc3NjE0MjM3IDUsNy41IEM1LDcuMjIzODU3NjMgNC43NzYxNDIzNyw3IDQuNSw3IEM0LjIyMzg1NzYzLDcgNCw3LjIyMzg1NzYzIDQsNy41IEM0LDcuNzc2MTQyMzcgNC4yMjM4NTc2Myw4IDQuNSw4IFoiLz4KICA8L3N2Zz4) + no-repeat 98% center; +} + +input:required:valid { + background: var(--sdpi-background) + url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIHZpZXdCb3g9IjAgMCA5IDkiPjxwb2x5Z29uIGZpbGw9IiNEOEQ4RDgiIHBvaW50cz0iNS4yIDEgNi4yIDEgNi4yIDcgMy4yIDcgMy4yIDYgNS4yIDYiIHRyYW5zZm9ybT0icm90YXRlKDQwIDQuNjc3IDQpIi8+PC9zdmc+) + no-repeat 98% center; +} + +.tooltip, +:tooltip, +:title { + color: yellow; +} + +.sdpi-item-group.file { + width: 232px; + display: flex; + align-items: center; +} + +.sdpi-file-info { + overflow-wrap: break-word; + word-wrap: break-word; + hyphens: auto; + min-width: 132px; + max-width: 144px; + max-height: 32px; + margin-top: 0px; + margin-left: 5px; + display: inline-block; + overflow: hidden; + padding: 6px 4px; + background-color: var(--sdpi-background); +} + +::-webkit-scrollbar { + width: 8px; +} + +::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + margin: 4px; + border-radius: 8px; +} + +::-webkit-scrollbar-thumb { + background-color: #999999; + outline: 1px solid slategrey; + border-radius: 8px; +} + +a { + color: #7397d2; +} + +input[type="week"] { + -webkit-appearance: auto !important; + appearance: auto !important; +} + +input[type="month"] + datalist, +input[type="day"] + datalist, +input[type="week"] + datalist, +input[type="text"] + datalist { + display: none !important; +} + +input[type="range"] { + -webkit-appearance: auto; + appearance: auto; + height: 6px; + margin-top: 12px; + z-index: 0; + overflow: visible; +} + +input[type="range"]::-webkit-slider-runnable-track { + border: 0px solid transparent; +} + +.sdpi-item[type="range"] .sdpi-item-value.datalist { + flex-direction: column; +} + +datalist { + --sdpi-datalist-margin: 7px; + display: flex; + justify-content: space-between; + margin-top: 0px; + padding-top: 0px; + font-size: 12px; + margin-left: var(--sdpi-datalist-margin); + width: calc(100% - calc(var(--sdpi-datalist-margin) * 2.5)); +} + +datalist > option { + display: flex; + justify-content: center; + align-items: end; + /* background-image: url(../assets/tick.svg); */ + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='8' viewBox='0 0 1 8'%3E%3Crect width='1' height='6' x='0' y='1' fill='%23555'/%3E%3C/svg%3E%0A"); + padding: 0; + font-weight: 400; + font-size: 12px; + color: #9a9a99; + width: 1px; + height: 30px; + z-index: 1; + margin-top: -6px; + background-position: top 6px right 5px; + background-repeat: repeat no-repeat; /* fallback */ + background-repeat-y: no-repeat; + user-select: none; + -webkit-user-select: none; +} + +[role="spinbutton"] { + -webkit-appearance: auto; + appearance: auto; +} + +/* +input[type="range"]::-webkit-slider-thumb { + -webkit-appearance: none; + background-color: var(--sdpi-color); + width: 12px; + height: 12px; + border-radius: 20px; + margin-top: -6px; + border: none; +} */ + +:-webkit-slider-thumb { + -webkit-appearance: none; + background-color: var(--sdpi-color); + width: 16px; + height: 16px; + border-radius: 20px; + margin-top: -6px; + border: 1px solid #999999; +} + +.sdpi-item[type="range"] .sdpi-item-group { + display: flex; + flex-direction: column; +} + +.xxsdpi-item[type="range"] .sdpi-item-group input { + max-width: 204px; +} + +.sdpi-item[type="range"] .sdpi-item-group span { + margin-left: 0px !important; +} + +.sdpi-item[type="range"] .sdpi-item-group > .sdpi-item-child { + display: flex; + flex-direction: row; +} + +.rangeLabel { + position: absolute; + font-weight: normal; + margin-top: 24px; +} + +:disabled { + color: #993333; +} + +select, +select option { + color: var(--sdpi-color); +} + +select.disabled, +select option:disabled { + color: #fd9494; + font-style: italic; +} + +.runningAppsContainer { + display: none; +} + +.one-line { + min-height: 1.5em; +} + +.two-lines { + min-height: 3em; +} + +.three-lines { + min-height: 4.5em; +} + +.four-lines { + min-height: 6em; +} + +.min80 > .sdpi-item-child { + min-width: 80px; +} + +.min100 > .sdpi-item-child { + min-width: 100px; +} + +.min120 > .sdpi-item-child { + min-width: 120px; +} + +.min140 > .sdpi-item-child { + min-width: 140px; +} + +.min160 > .sdpi-item-child { + min-width: 160px; +} + +.min200 > .sdpi-item-child { + min-width: 200px; +} + +.max40 { + flex-basis: 40%; + flex-grow: 0; +} + +.max30 { + flex-basis: 30%; + flex-grow: 0; +} + +.max20 { + flex-basis: 20%; + flex-grow: 0; +} + +.up20 { + margin-top: -20px; +} + +.alignCenter { + align-items: center; +} + +.alignTop { + align-items: flex-start; +} + +.alignBaseline { + align-items: baseline; +} + +.noMargins, +.noMargins *, +.noInnerMargins * { + margin: 0; + padding: 0; +} + +.hidden { + display: none !important; +} + +.icon-help, +.icon-help-line, +.icon-help-fill, +.icon-help-inv, +.icon-brighter, +.icon-darker, +.icon-warmer, +.icon-cooler { + min-width: 20px; + width: 20px; + background-repeat: no-repeat; + opacity: 1; +} + +.icon-help:active, +.icon-help-line:active, +.icon-help-fill:active, +.icon-help-inv:active, +.icon-brighter:active, +.icon-darker:active, +.icon-warmer:active, +.icon-cooler:active { + opacity: 0.5; +} + +.icon-brighter, +.icon-darker, +.icon-warmer, +.icon-cooler { + margin-top: 5px !important; +} + +.icon-help, +.icon-help-line, +.icon-help-fill, +.icon-help-inv { + cursor: pointer; + margin: 0px; + margin-left: 4px; +} + +.icon-brighter { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cg fill='%23999' fill-rule='evenodd'%3E%3Ccircle cx='10' cy='10' r='4'/%3E%3Cpath d='M14.8532861,7.77530426 C14.7173255,7.4682615 14.5540843,7.17599221 14.3666368,6.90157083 L16.6782032,5.5669873 L17.1782032,6.4330127 L14.8532861,7.77530426 Z M10.5,4.5414007 C10.2777625,4.51407201 10.051423,4.5 9.82179677,4.5 C9.71377555,4.5 9.60648167,4.50311409 9.5,4.50925739 L9.5,2 L10.5,2 L10.5,4.5414007 Z M5.38028092,6.75545367 C5.18389364,7.02383457 5.01124349,7.31068015 4.86542112,7.61289977 L2.82179677,6.4330127 L3.32179677,5.5669873 L5.38028092,6.75545367 Z M4.86542112,12.3871002 C5.01124349,12.6893198 5.18389364,12.9761654 5.38028092,13.2445463 L3.32179677,14.4330127 L2.82179677,13.5669873 L4.86542112,12.3871002 Z M9.5,15.4907426 C9.60648167,15.4968859 9.71377555,15.5 9.82179677,15.5 C10.051423,15.5 10.2777625,15.485928 10.5,15.4585993 L10.5,18 L9.5,18 L9.5,15.4907426 Z M14.3666368,13.0984292 C14.5540843,12.8240078 14.7173255,12.5317385 14.8532861,12.2246957 L17.1782032,13.5669873 L16.6782032,14.4330127 L14.3666368,13.0984292 Z'/%3E%3C/g%3E%3C/svg%3E"); +} + +.icon-darker { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cg fill='%23999' fill-rule='evenodd'%3E%3Cpath d='M10 14C7.790861 14 6 12.209139 6 10 6 7.790861 7.790861 6 10 6 12.209139 6 14 7.790861 14 10 14 12.209139 12.209139 14 10 14zM10 13C11.6568542 13 13 11.6568542 13 10 13 8.34314575 11.6568542 7 10 7 8.34314575 7 7 8.34314575 7 10 7 11.6568542 8.34314575 13 10 13zM14.8532861 7.77530426C14.7173255 7.4682615 14.5540843 7.17599221 14.3666368 6.90157083L16.6782032 5.5669873 17.1782032 6.4330127 14.8532861 7.77530426zM10.5 4.5414007C10.2777625 4.51407201 10.051423 4.5 9.82179677 4.5 9.71377555 4.5 9.60648167 4.50311409 9.5 4.50925739L9.5 2 10.5 2 10.5 4.5414007zM5.38028092 6.75545367C5.18389364 7.02383457 5.01124349 7.31068015 4.86542112 7.61289977L2.82179677 6.4330127 3.32179677 5.5669873 5.38028092 6.75545367zM4.86542112 12.3871002C5.01124349 12.6893198 5.18389364 12.9761654 5.38028092 13.2445463L3.32179677 14.4330127 2.82179677 13.5669873 4.86542112 12.3871002zM9.5 15.4907426C9.60648167 15.4968859 9.71377555 15.5 9.82179677 15.5 10.051423 15.5 10.2777625 15.485928 10.5 15.4585993L10.5 18 9.5 18 9.5 15.4907426zM14.3666368 13.0984292C14.5540843 12.8240078 14.7173255 12.5317385 14.8532861 12.2246957L17.1782032 13.5669873 16.6782032 14.4330127 14.3666368 13.0984292z'/%3E%3C/g%3E%3C/svg%3E"); +} + +.icon-warmer { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cg fill='%23999' fill-rule='evenodd'%3E%3Cpath d='M12.3247275 11.4890349C12.0406216 11.0007637 11.6761954 10.5649925 11.2495475 10.1998198 11.0890394 9.83238991 11 9.42659309 11 9 11 7.34314575 12.3431458 6 14 6 15.6568542 6 17 7.34314575 17 9 17 10.6568542 15.6568542 12 14 12 13.3795687 12 12.8031265 11.8116603 12.3247275 11.4890349zM17.6232392 11.6692284C17.8205899 11.4017892 17.9890383 11.1117186 18.123974 10.8036272L20.3121778 12.0669873 19.8121778 12.9330127 17.6232392 11.6692284zM18.123974 7.19637279C17.9890383 6.88828142 17.8205899 6.5982108 17.6232392 6.33077158L19.8121778 5.0669873 20.3121778 5.9330127 18.123974 7.19637279zM14.5 4.52746439C14.3358331 4.50931666 14.1690045 4.5 14 4.5 13.8309955 4.5 13.6641669 4.50931666 13.5 4.52746439L13.5 2 14.5 2 14.5 4.52746439zM13.5 13.4725356C13.6641669 13.4906833 13.8309955 13.5 14 13.5 14.1690045 13.5 14.3358331 13.4906833 14.5 13.4725356L14.5 16 13.5 16 13.5 13.4725356zM14 11C15.1045695 11 16 10.1045695 16 9 16 7.8954305 15.1045695 7 14 7 12.8954305 7 12 7.8954305 12 9 12 10.1045695 12.8954305 11 14 11zM9.5 11C10.6651924 11.4118364 11.5 12.5 11.5 14 11.5 16 10 17.5 8 17.5 6 17.5 4.5 16 4.5 14 4.5 12.6937812 5 11.5 6.5 11L6.5 7 9.5 7 9.5 11z'/%3E%3Cpath d='M12,14 C12,16.209139 10.209139,18 8,18 C5.790861,18 4,16.209139 4,14 C4,12.5194353 4.80439726,11.2267476 6,10.5351288 L6,4 C6,2.8954305 6.8954305,2 8,2 C9.1045695,2 10,2.8954305 10,4 L10,10.5351288 C11.1956027,11.2267476 12,12.5194353 12,14 Z M11,14 C11,12.6937812 10.1651924,11.5825421 9,11.1707057 L9,4 C9,3.44771525 8.55228475,3 8,3 C7.44771525,3 7,3.44771525 7,4 L7,11.1707057 C5.83480763,11.5825421 5,12.6937812 5,14 C5,15.6568542 6.34314575,17 8,17 C9.65685425,17 11,15.6568542 11,14 Z'/%3E%3C/g%3E%3C/svg%3E"); +} + +.icon-cooler { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cg fill='%23999' fill-rule='evenodd'%3E%3Cpath d='M10.4004569 11.6239517C10.0554735 10.9863849 9.57597206 10.4322632 9 9.99963381L9 9.7450467 9.53471338 9.7450467 10.8155381 8.46422201C10.7766941 8.39376637 10.7419749 8.32071759 10.7117062 8.2454012L9 8.2454012 9 6.96057868 10.6417702 6.96057868C10.6677696 6.86753378 10.7003289 6.77722682 10.7389179 6.69018783L9.44918707 5.40045694 9 5.40045694 9 4.34532219 9.32816127 4.34532219 9.34532219 2.91912025 10.4004569 2.91912025 10.4004569 4.53471338 11.6098599 5.74411634C11.7208059 5.68343597 11.8381332 5.63296451 11.9605787 5.59396526L11.9605787 3.8884898 10.8181818 2.74609294 11.5642748 2 12.5727518 3.00847706 13.5812289 2 14.3273218 2.74609294 13.2454012 3.82801356 13.2454012 5.61756719C13.3449693 5.65339299 13.4408747 5.69689391 13.5324038 5.74735625L14.7450467 4.53471338 14.7450467 2.91912025 15.8001815 2.91912025 15.8001815 4.34532219 17.2263834 4.34532219 17.2263834 5.40045694 15.6963166 5.40045694 14.4002441 6.69652946C14.437611 6.78161093 14.4692249 6.86979146 14.4945934 6.96057868L16.2570138 6.96057868 17.3994107 5.81818182 18.1455036 6.56427476 17.1370266 7.57275182 18.1455036 8.58122888 17.3994107 9.32732182 16.3174901 8.2454012 14.4246574 8.2454012C14.3952328 8.31861737 14.3616024 8.38969062 14.3240655 8.45832192L15.6107903 9.7450467 17.2263834 9.7450467 17.2263834 10.8001815 15.8001815 10.8001815 15.8001815 12.2263834 14.7450467 12.2263834 14.7450467 10.6963166 13.377994 9.32926387C13.3345872 9.34850842 13.2903677 9.36625331 13.2454012 9.38243281L13.2454012 11.3174901 14.3273218 12.3994107 13.5812289 13.1455036 12.5848864 12.1491612 11.5642748 13.1455036 10.8181818 12.3994107 11.9605787 11.2570138 11.9605787 9.40603474C11.8936938 9.38473169 11.828336 9.36000556 11.7647113 9.33206224L10.4004569 10.6963166 10.4004569 11.6239517zM12.75 8.5C13.3022847 8.5 13.75 8.05228475 13.75 7.5 13.75 6.94771525 13.3022847 6.5 12.75 6.5 12.1977153 6.5 11.75 6.94771525 11.75 7.5 11.75 8.05228475 12.1977153 8.5 12.75 8.5zM9.5 14C8.5 16.3333333 7.33333333 17.5 6 17.5 4.66666667 17.5 3.5 16.3333333 2.5 14L9.5 14z'/%3E%3Cpath d='M10,14 C10,16.209139 8.209139,18 6,18 C3.790861,18 2,16.209139 2,14 C2,12.5194353 2.80439726,11.2267476 4,10.5351288 L4,4 C4,2.8954305 4.8954305,2 6,2 C7.1045695,2 8,2.8954305 8,4 L8,10.5351288 C9.19560274,11.2267476 10,12.5194353 10,14 Z M9,14 C9,12.6937812 8.16519237,11.5825421 7,11.1707057 L7,4 C7,3.44771525 6.55228475,3 6,3 C5.44771525,3 5,3.44771525 5,4 L5,11.1707057 C3.83480763,11.5825421 3,12.6937812 3,14 C3,15.6568542 4.34314575,17 6,17 C7.65685425,17 9,15.6568542 9,14 Z'/%3E%3C/g%3E%3C/svg%3E"); +} + +.icon-help { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20'%3E%3Cpath fill='%23999' d='M11.292 12.516l.022 1.782H9.07v-1.804c0-1.98 1.276-2.574 2.662-3.278h-.022c.814-.44 1.65-.88 1.694-2.2.044-1.386-1.122-2.728-3.234-2.728-1.518 0-2.662.902-3.366 2.354L5 5.608C5.946 3.584 7.662 2 10.17 2c3.564 0 5.632 2.442 5.588 5.06-.066 2.618-1.716 3.41-3.102 4.158-.704.374-1.364.682-1.364 1.298zm-1.122 2.442c.858 0 1.452.594 1.452 1.452 0 .682-.594 1.408-1.452 1.408-.77 0-1.386-.726-1.386-1.408 0-.858.616-1.452 1.386-1.452z'/%3E%3C/svg%3E"); +} + +.icon-help-line { + background-image: url("data:image/svg+xml,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23999' fill-rule='evenodd'%3E%3Cpath d='M10 20C4.477 20 0 15.523 0 10S4.477 0 10 0s10 4.477 10 10-4.477 10-10 10zm0-1a9 9 0 1 0 0-18 9 9 0 0 0 0 18z'/%3E%3Cpath d='M10.848 12.307l.02 1.578H8.784v-1.597c0-1.753 1.186-2.278 2.474-2.901h-.02c.756-.39 1.533-.78 1.574-1.948.041-1.226-1.043-2.414-3.006-2.414-1.41 0-2.474.798-3.128 2.083L5 6.193C5.88 4.402 7.474 3 9.805 3 13.118 3 15.04 5.161 15 7.478c-.061 2.318-1.595 3.019-2.883 3.68-.654.332-1.268.604-1.268 1.15zM9.805 14.47c.798 0 1.35.525 1.35 1.285 0 .603-.552 1.246-1.35 1.246-.715 0-1.288-.643-1.288-1.246 0-.76.573-1.285 1.288-1.285z' fill-rule='nonzero'/%3E%3C/g%3E%3C/svg%3E"); +} + +.icon-help-fill { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='10' cy='10' r='10' fill='%23999'/%3E%3Cpath fill='%23FFF' fill-rule='nonzero' d='M8.368 7.189H5C5 3.5 7.668 2 10.292 2 13.966 2 16 4.076 16 7.012c0 3.754-3.849 3.136-3.849 5.211v1.656H8.455v-1.832c0-2.164 1.4-2.893 2.778-3.6.437-.242 1.006-.574 1.006-1.236 0-2.208-3.871-2.142-3.871-.022zM10.25 18a1.75 1.75 0 1 1 0-3.5 1.75 1.75 0 0 1 0 3.5z'/%3E%3C/g%3E%3C/svg%3E"); +} + +.icon-help-inv { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20'%3E%3Cpath fill='%23999' fill-rule='evenodd' d='M10 20C4.477 20 0 15.523 0 10S4.477 0 10 0s10 4.477 10 10-4.477 10-10 10zM8.368 7.189c0-2.12 3.87-2.186 3.87.022 0 .662-.568.994-1.005 1.236-1.378.707-2.778 1.436-2.778 3.6v1.832h3.696v-1.656c0-2.075 3.849-1.457 3.849-5.21C16 4.075 13.966 2 10.292 2 7.668 2 5 3.501 5 7.189h3.368zM10.25 18a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z'/%3E%3C/svg%3E"); +} + +.kelvin::after { + content: "K"; +} + +.mired::after { + content: " Mired"; +} + +.percent::after { + content: "%"; +} + +.sdpi-item-value + .icon-cooler, +.sdpi-item-value + .icon-warmer { + margin-left: 0px !important; + margin-top: 15px !important; +} + +/** + CONTROL-CENTER STYLES +*/ +input[type="range"].colorbrightness::-webkit-slider-runnable-track, +input[type="range"].colortemperature::-webkit-slider-runnable-track { + height: 8px; + background: #979797; + border-radius: 4px; + background-image: linear-gradient(to right, #94d0ec, #ffb165); +} + +input[type="range"].colorbrightness.greyscale::-webkit-slider-runnable-track, +input[type="range"].colorbrightness.grayscale::-webkit-slider-runnable-track { + background-color: #efefef; + background-image: linear-gradient(to right, black, rgba(0, 0, 0, 0)); +} + +input[type="range"].colorbrightness::-webkit-slider-thumb, +input[type="range"].colortemperature::-webkit-slider-thumb { + width: 16px; + height: 16px; + border-radius: 20px; + margin-top: -5px; + background-color: #86c6e8; + box-shadow: 0px 0px 1px #000000; + border: 1px solid #d8d8d8; +} + +.sdpi-info-label { + display: inline-block; + user-select: none; + position: absolute; + height: 15px; + width: auto; + text-align: center; + border-radius: 4px; + min-width: 44px; + max-width: 80px; + background: white; + font-size: 11px; + color: black; + z-index: 1000; + box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.8); + padding: 2px; +} + +.sdpi-info-label.hidden { + opacity: 0; + transition: opacity 0.25s linear; +} + +.sdpi-info-label.shown { + position: absolute; + opacity: 1; + transition: opacity 0.25s ease-out; +} + +/* adding some styles here that override sdpi things so we can use this as notes for sdpi updates*/ +select { + min-width: 0px; + + /* this is a clunky fix for using background image as select arrow with long text options */ + -webkit-appearance: media-slider; + text-overflow: ellipsis; +} + +/*--------- context menu ----------*/ + +.context-menu { + display: none; + position: absolute; + z-index: 10; + padding: 12px 0; + width: 120px; + background-color: #3d3d3d; + border: solid 1px #dfdfdf; + box-shadow: 1px 1px 2px #cfcfcf; +} + +.context-menu--active { + display: block; +} + +.context-menu__items { + list-style: none; + margin: 0; + padding: 0; + overflow-y: auto; +} + +.context-menu__item { + display: block; + margin-bottom: 4px; + background-color: #3d3d3d !important; +} + +.context-menu__item:last-child { + margin-bottom: 0; +} + +.context-menu__link { + display: block; + padding: 4px 12px; + color: #ffff; + text-decoration: none; + white-space: nowrap; +} + +.context-menu__link:hover { + color: #fff; + background-color: #0066aa; +} + +.context-menu_message { + cursor: default; +} diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/switchProfile.html b/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/switchProfile.html new file mode 100644 index 0000000..338764e --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/files/propertyInspector/switchProfile.html @@ -0,0 +1,46 @@ + + + + + + + +
+
Device ID
+ +
+
+
Profile
+ +
+ + diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/rustfmt.toml b/plugins/com.amansprojects.starterpack.sdPlugin/rustfmt.toml new file mode 100644 index 0000000..751a0aa --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/rustfmt.toml @@ -0,0 +1,3 @@ +edition = "2021" +hard_tabs = true +newline_style = "Unix" diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/src/input_simulation.rs b/plugins/com.amansprojects.starterpack.sdPlugin/src/input_simulation.rs new file mode 100644 index 0000000..13abe6f --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/src/input_simulation.rs @@ -0,0 +1,38 @@ +use openaction::*; + +use enigo::{ + agent::{Agent, Token}, + Enigo, Settings, +}; + +pub fn key_down(event: KeyEvent) -> EventHandlerResult { + if let Some(value) = event.payload.settings.as_object().unwrap().get("down") { + let value = value.as_str().unwrap(); + if value.trim().is_empty() { + return Ok(()); + } + let mut enigo = Enigo::new(&Settings::default())?; + let tokens: Vec = ron::from_str(value)?; + for token in tokens { + enigo.execute(&token).unwrap(); + } + } + + Ok(()) +} + +pub fn key_up(event: KeyEvent) -> EventHandlerResult { + if let Some(value) = event.payload.settings.as_object().unwrap().get("up") { + let value = value.as_str().unwrap(); + if value.trim().is_empty() { + return Ok(()); + } + let mut enigo = Enigo::new(&Settings::default())?; + let tokens: Vec = ron::from_str(value)?; + for token in tokens { + enigo.execute(&token).unwrap(); + } + } + + Ok(()) +} diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/src/main.rs b/plugins/com.amansprojects.starterpack.sdPlugin/src/main.rs new file mode 100644 index 0000000..5e8cb22 --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/src/main.rs @@ -0,0 +1,51 @@ +mod input_simulation; +mod run_command; +mod switch_profile; + +use openaction::*; + +struct GlobalEventHandler {} +impl openaction::GlobalEventHandler for GlobalEventHandler {} + +struct ActionEventHandler {} +impl openaction::ActionEventHandler for ActionEventHandler { + async fn key_down( + &self, + event: KeyEvent, + _outbound: &mut openaction::OutboundEventManager, + ) -> EventHandlerResult { + match &event.action[..] { + "com.amansprojects.starterpack.runcommand" => run_command::key_down(event), + "com.amansprojects.starterpack.inputsimulation" => input_simulation::key_down(event), + _ => Ok(()), + } + } + + async fn key_up( + &self, + event: KeyEvent, + _outbound: &mut openaction::OutboundEventManager, + ) -> EventHandlerResult { + match &event.action[..] { + "com.amansprojects.starterpack.runcommand" => run_command::key_up(event), + "com.amansprojects.starterpack.inputsimulation" => input_simulation::key_up(event), + "com.amansprojects.starterpack.switchprofile" => switch_profile::key_up(event), + _ => Ok(()), + } + } +} + +#[tokio::main] +async fn main() { + simplelog::TermLogger::init( + simplelog::LevelFilter::Debug, + simplelog::Config::default(), + simplelog::TerminalMode::Stdout, + simplelog::ColorChoice::Never, + ) + .unwrap(); + + if let Err(error) = init_plugin(GlobalEventHandler {}, ActionEventHandler {}).await { + log::error!("Failed to initialise plugin: {}", error); + } +} diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/src/run_command.rs b/plugins/com.amansprojects.starterpack.sdPlugin/src/run_command.rs new file mode 100644 index 0000000..cb5e81b --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/src/run_command.rs @@ -0,0 +1,85 @@ +use std::io::Read; +use std::process::{Command, Stdio}; + +use openaction::*; + +async fn run_command(event: KeyEvent, action: &str) -> EventHandlerResult { + let settings = event.payload.settings.as_object().unwrap(); + let Some(value) = settings.get(action).map(|v| v.as_str().unwrap()) else { + return Ok(()); + }; + if value.is_empty() { + return Ok(()); + } + + #[cfg(unix)] + let command = if std::env::var("container").is_ok() { + "flatpak-spawn" + } else { + "sh" + }; + #[cfg(unix)] + let extra_args = if std::env::var("container").is_ok() { + vec!["--host", "sh", "-c"] + } else { + vec!["-c"] + }; + + #[cfg(windows)] + let command = "cmd"; + #[cfg(windows)] + let extra_args = ["/C"]; + + let (mut reader, writer) = os_pipe::pipe()?; + let mut command = Command::new(command); + command + .args(extra_args) + .arg(value) + .stdout(Stdio::from(writer.try_clone()?)) + .stderr(Stdio::from(writer)); + command.spawn()?.wait()?; + drop(command); + let mut output = String::new(); + reader.read_to_string(&mut output)?; + + if let Some(path) = settings.get("file").map(|v| v.as_str().unwrap()) { + if !path.is_empty() { + tokio::fs::write(path, &output).await?; + } + } + + if settings + .get("show") + .unwrap_or(&serde_json::Value::Bool(false)) + .as_bool() + .unwrap() + { + let mut lock = OUTBOUND_EVENT_MANAGER.lock().await; + let outbound = lock.as_mut().unwrap(); + outbound + .set_title(event.context, Some(output.trim().to_owned()), None) + .await?; + } + + Ok(()) +} + +pub fn key_down(event: KeyEvent) -> EventHandlerResult { + tokio::spawn(async move { + if let Err(error) = run_command(event, "down").await { + log::warn!("Failed to run command: {error}"); + } + }); + + Ok(()) +} + +pub fn key_up(event: KeyEvent) -> EventHandlerResult { + tokio::spawn(async move { + if let Err(error) = run_command(event, "up").await { + log::warn!("Failed to run command: {error}"); + } + }); + + Ok(()) +} diff --git a/plugins/com.amansprojects.starterpack.sdPlugin/src/switch_profile.rs b/plugins/com.amansprojects.starterpack.sdPlugin/src/switch_profile.rs new file mode 100644 index 0000000..e1c90fe --- /dev/null +++ b/plugins/com.amansprojects.starterpack.sdPlugin/src/switch_profile.rs @@ -0,0 +1,39 @@ +use openaction::*; + +// Non-spec OpenDeck-specific protocols are used in this file. + +#[derive(serde::Serialize)] +struct SwitchProfileEvent { + event: &'static str, + device: String, + profile: String, +} + +pub fn key_up(event: KeyEvent) -> EventHandlerResult { + if let Some(value) = event.payload.settings.as_object().unwrap().get("profile") { + let (mut stream, _) = tungstenite::connect(format!( + "ws://localhost:{}", + std::env::args().nth(2).unwrap() + ))?; + stream.write(tungstenite::Message::text(serde_json::to_string( + &SwitchProfileEvent { + event: "switchProfile", + device: event + .payload + .settings + .as_object() + .unwrap() + .get("device") + .unwrap() + .as_str() + .unwrap() + .to_owned(), + profile: value.as_str().unwrap().to_owned(), + }, + )?))?; + stream.close(None)?; + stream.flush()?; + } + + Ok(()) +}