Compare commits

...

808 Commits

Author SHA1 Message Date
galister 6dc76c881f update deps 2026-06-03 18:25:47 +09:00
galister 4b78e39af7
glyph upload fixes (#531)
* remove unused pass cache, cache imageviews instead

* glyph upload batching

* image upload batching (wip)
2026-06-03 17:29:31 +09:00
oo8dev 7f97dc884f
wayvr: Space gravity (#520)
* wayvr: Space gravity (wip)

* dash-frontend: dedicated "Space drag" settings tab, deduplicate overlay shift code in xr&vr, account for gravity shift for static overlays

* space reset & gravity conflict bugfix, add ground friction slider

* Space gravity UI improvements

* space gravity: floor level

* wayvr: space gravity: hide in openvr
2026-06-03 09:51:22 +02:00
art0007i 9806027e19
add watch toggle setting (#526)
* add watch toggle setting

* previous commit broke monado workaround, this fixes it

* use active_state to toggle watch

* use the other monado workaround

* fix whitespace

* cargo fmt
2026-06-03 16:22:09 +09:00
Hiina 066f033a91
fix: preserve screencopy transforms for rotated outputs (#530) 2026-06-03 15:55:50 +09:00
galister 1591466a8d fix some supported settings getting hidden 2026-05-17 18:02:47 +09:00
galister 901c18520e hide unsupported settings depending on backend 2026-05-17 12:46:54 +09:00
Sapphire e39085aa2b openvr: Hide lasers and unblock input when dashboard is open 2026-05-17 12:10:44 +09:00
Sapphire 48d58f61d2 openvr: Hide devices without battery status from battery panel 2026-05-17 12:10:44 +09:00
galister 8691cf99d2 clippy + fmt 2026-05-13 16:39:15 +09:00
galister 80bfb177be range sliders in settings 2026-05-13 16:38:15 +09:00
Aleksander 20743f91eb clippy 2026-05-12 21:59:54 +02:00
Aleksander 5cf7b986f3 wayvr: Remember skymap texture across restarts 2026-05-12 21:39:04 +02:00
Aleksander 3d71746ff2 dash-frontend: watch_view_angle setting (Closes #505), re-format language files 2026-05-12 21:21:04 +02:00
Snemby c7b16c5713 fix space rotate
the change in rotation is computed in the untransformed stage space. To produce the correct rotation change the quaternion needs to be rotated using the space offset
2026-05-13 00:59:27 +09:00
galister ed1d708802 mnd playspace: fetch offset on drag/rotate start 2026-05-12 22:58:42 +09:00
steve hocktail 557a0775c3
add a toast for uinput errors (#494)
* add a toast for uinput errors

this makes it more obvious if missing uinput permissions are the reason your keyboard and mouse aren't working.

* uinput toaster part 2: the cargo formattening

* increase uinput error toast's timeout to 30 seconds

---------

Co-authored-by: galister <22305755+galister@users.noreply.github.com>
2026-05-12 22:53:14 +09:00
galister 2309f89701
update issue template 2026-05-12 17:11:15 +09:00
oo8dev cdd658d4ea
wayvr: IPC: Fix dangling fds (#513) 2026-05-07 22:06:54 +02:00
Aleksander ec2e0501c1 wayvr: skip unsupported config files (Closes #510) 2026-05-03 19:35:49 +02:00
Aleksander f30c650bba wgui: add `EventResult::ConsumedExclusive` for Slider components
This prevents us from accidentally swipe-scrolling the content if the user tries to change a slider value.
2026-05-03 19:13:45 +02:00
Aleksander 45af52ddf9 wgui: Range sliders, fix swipe scrolling <-> slider conflict 2026-05-03 18:54:31 +02:00
galister 10b14794ed
update to upstream pipewire-rs (#508)
* update to upstream pipewire-rs

* CI to use 24.04 without no pipewire ppa

* fix build without openxr feature
2026-05-03 14:36:49 +09:00
oo8dev 6b81f07cc8
wgui: Swipe kinetic scrolling support (#504)
* wgui: use DeviceBitmask instead of usize

* wgui: Swipe logic works (wip)

* wgui: Kinetic scrolling, rubberband effect
2026-05-02 19:21:30 +02:00
galister 9734955ebb dont show skymap tab if not openxr 2026-04-23 19:58:02 +09:00
galister dd3108d423 new built-in sky shader 2026-04-23 19:14:05 +09:00
galister bf7276b2dd skybox downloader: apply button for downloaded skymaps 2026-04-23 19:14:05 +09:00
galister 90c4567505 shuffle some options around 2026-04-23 19:14:03 +09:00
galister 6cddb43b0f default skybox is shader skybox 2026-04-23 19:12:32 +09:00
Aleksander f3732c7087 wayvr: improve grid shader, dash-frontend: make pop-up title non-scrollable 2026-04-22 20:22:45 +02:00
Aleksander 07bd841bc6 dash-frontend: skymap browser ui improvements, wayvr: fix context menus not working 2026-04-22 19:03:47 +02:00
galister 9986b71b26 skybox selector 2026-04-22 19:09:26 +09:00
galister 16446f7808 Merge remote-tracking branch 'origin/feat-skybox-catalog' 2026-04-22 18:24:12 +09:00
galister 5615186654 revert: feat: swipe to type (#451) 2026-04-22 17:43:38 +09:00
galister 244822ffb3 add --no-autostart arg 2026-04-22 17:36:04 +09:00
galister 266b0fd507 reconfigure_environment_blend to handle chroma + skybox + alpha 2026-04-17 14:44:25 +09:00
Aleksander 0d8937ff80 dash-frontend: Dialog boxes, Skymap removal dialog, Skymap resolution selector dialog 2026-04-17 12:10:18 +09:00
Aleksander c59e195d94 dash-frontend: Re-work skymap list, show downloaded resolution pips 2026-04-17 12:10:18 +09:00
galister 994dffc4fb png → dds 2026-04-17 12:10:18 +09:00
Aleksander 701e41296b dash-frontend: Remote skymap downloader finished and fully working 2026-04-17 12:10:18 +09:00
Aleksander b0dba25f36 dash-frontend: File saving, close callbacks 2026-04-17 12:10:18 +09:00
Aleksander 1bee41aea9 dash-frontend: http_client: Progress callback, display download status 2026-04-17 12:10:18 +09:00
Aleksander 2035d9ba76 dash-frontend: ViewTrait, refactoring, `download_file::View` (wip) 2026-04-17 12:10:18 +09:00
Aleksander 24e3099b7b dash-frontend: remove dangling popups immediately 2026-04-17 12:10:18 +09:00
Aleksander aee5bf69da wgui: Simplify Popup usage 2026-04-17 12:10:18 +09:00
Aleksander 62881c08b3 rebase changes from feat/chroma-key 2026-04-17 12:10:18 +09:00
Aleksander 0c87d47ce6 wgui: Simplify usage and code, no more start_common(), Layout processes alterables 2026-04-17 12:10:18 +09:00
Aleksander 47bb5ab7a2 dash-frontend: skymap downloader dialog 2026-04-17 12:10:18 +09:00
Aleksander e5e798b599 dash-frontend: rename download_skymaps -> remote_skymap_list 2026-04-17 12:10:18 +09:00
Aleksander 68daa5b3df dash-frontend: skymap preview fetch (done), reformat Cargo.toml files 2026-04-17 12:10:18 +09:00
Aleksander f2dcdcc6c3 dash-frontend: list skymaps from the server (wip), loading spinner, wgui: animation bugfix 2026-04-17 12:10:18 +09:00
Aleksander a3460fbe70 dash-frontend: use SettingsTab trait for each settings tab 2026-04-17 12:10:18 +09:00
Aleksander 7f822b6787 dash-frontend: Skymap catalog fetch 2026-04-17 12:10:18 +09:00
Aleksander 1d8b22d992 dash-frontend: "Skybox" tab 2026-04-17 12:10:18 +09:00
galister 1238808d87 fix chroma_key_params not saving 2026-04-14 12:32:54 +09:00
Aleksander 26f5be36b6 dash-frontend: Chroma key settings 2026-04-11 13:48:49 +02:00
Aleksander 0c1b0906c1 wgui: Add `ColorSelector` component 2026-04-11 00:22:24 +02:00
galister 5eb258e310 update libmonado-rs & oxr chroma key 2026-04-10 20:01:39 +09:00
galister bec00c6f48 fmt 2026-04-10 14:47:36 +09:00
Diamond White db1675d399
feat: swipe to type (#451)
* start to integrate swipetype with keyboardstate

* successful debug implementation

* change to git dependency

* add manual trigger to app image build to test

* use latest swipeType lib to test including binaries

* use clipboard to paste swipe output

* use new prediction engine, move swipe type related logic to its own module

* update appimage bulid to support building ort runtime

* implement swipe selection ui in keyboard overlay

* only add motion data for the device that started the swipe

* process swipes on separate thread to not block ui

* add toggle to settings.rs

* default swipe to type config to false

* remove println, minor fix

* use correct key_dimensions

* use latest swipe_type library version

* optionally use wayvr compositor clipboard when pasting

* remove unused imports

* fix typo in log::error

* fix within key positioning

* run swipes on AltGr keycaps
2026-04-10 14:46:22 +09:00
Aleksander 18f99b5daf dash-frontend: settings: use generics instead of macros, separate each settings tab by a separate file 2026-04-03 00:11:26 +02:00
oo8dev 543f157895
Merge pull request #445 from wayvr-org/feat-monado-timings
feat: Monado debug timings graph
2026-04-02 17:57:46 +02:00
Aleksander 8ad31cfa28 Add `feat-monado-timings` build feature 2026-04-02 17:43:26 +02:00
Aleksander 80277e0c12 ParserState: add `realize_template`, fix sliders not being updated 2026-04-02 17:43:26 +02:00
Aleksander 0a4fc34fac dash-interface: fetch client IDs, toggle filter 2026-04-02 17:43:10 +02:00
Aleksander e035fb9d27 separate debug graphs by session ID, selectable session ID list 2026-04-02 17:43:10 +02:00
Aleksander 97fcde1a3b rebase 2026-04-02 17:43:10 +02:00
Aleksander c16c403966 display debug graphs 2026-04-02 17:43:10 +02:00
Aleksander d5148e2107 wgui: `ComponentBarGraph`, `WidgetCustomDraw` 2026-04-02 17:43:10 +02:00
Aleksander 0f6f344c97 protobuf parser, read metrics, move async executor to wlx_common 2026-04-02 17:43:10 +02:00
Aleksander 41c6f43a3c dash-frontend: Monado runtime: Tabs, add stub DebugTimings tab 2026-04-02 17:42:38 +02:00
Aleksander f44c4b78bc cargo clippy 2026-03-31 22:15:14 +02:00
Aleksander 5420efa4d3 wayvr: Fix default locale fallback not working properly (regression caused by PR #411) 2026-03-31 21:02:44 +02:00
Aleksander 89f43b95ef Update FUNDING.yml
[skip ci]
2026-03-28 16:57:40 +01:00
founta 00bc179655
Add space reset to openvr actions (#475)
* Add space reset to openvr actions

* remove additional reset state storage
2026-03-28 14:44:14 +09:00
oo8dev a4115f5e4b
Merge pull request #478 from wayvr-org/move-doc
docs: move out docs to a separate repo/website, fix typos
2026-03-25 18:39:59 +00:00
Aleksander 6c896bb956 fix typo 2026-03-25 19:39:20 +01:00
galister d9c8689c18
docs move: continuation
Updated links and references to the new GitHub organization.
2026-03-26 03:33:45 +09:00
Aleksander 5df6ce93f8 docs: move out docs to a separate repo/website, fix typos
[skip ci]
2026-03-24 00:19:27 +01:00
Earthgames ee4bb5ca29
Allow the checkbox to be themed (#462) 2026-03-23 12:24:16 +09:00
hare_ware b89ae4726c Revert "fix bindings for wmr controllers"
This reverts commit 285f6db134.
2026-03-23 12:23:01 +09:00
galister b0bbc25083 dont die if autostart app cant be started 2026-03-20 12:48:52 +09:00
Craig McLure 635df298fe Updated the pipewire reference in Cargo.lock 2026-03-18 22:22:00 +09:00
galister 786847cc2f update pipewire-rs to fix build on arch 2026-03-18 12:31:42 +09:00
Aleksander d9f89faf33 wayvr: "Fix floor" countdown timer and sound
- 5-second timeout sound with countdown timer
- sort locale JSON
- modify toast lerp amount
2026-03-16 13:47:51 +09:00
galister 769978560e oops 2026-03-16 13:46:23 +09:00
galister bebc39e766 dbus notify timeout is ms 2026-03-16 13:38:10 +09:00
oo8dev bb15a4e867
Merge pull request #466 from wlx-team/toast-mp3-update
update toast.mp3 sound
2026-03-14 12:23:30 +00:00
Aleksander 84015c7972 update toast.mp3 sound
[skip ci]
2026-03-14 13:20:48 +01:00
galister f2c34fba8f
sticky modifier keys explanation in README 2026-03-11 10:44:01 +09:00
Earthgames 1a74eb1507 Use a more common name 2026-03-08 01:18:35 +09:00
Earthgames 6b3f8a7b42 Only convert locale one time 2026-03-08 01:18:35 +09:00
Earthgames ad78fdab24 Hack in full lang codes
Add British
2026-03-08 01:18:35 +09:00
Earthgames 12ceebec6d Used locale in chrono 2026-03-08 01:18:35 +09:00
Earthgames 6f9ca5b3b7 Added documentation for default colors 2026-03-06 12:23:50 +09:00
oo8dev c54b211872
Merge pull request #460 from wlx-team/defaults-globals-refactor
wgui: separate globals from themes
2026-03-05 21:55:46 +00:00
Aleksander cb899235b4 wgui: separate globals and themes 2026-03-05 19:28:42 +01:00
Aleksander a83af3d833 translations 2026-03-05 12:42:04 +01:00
galister e8c8a67fc0
add wiki links to readme 2026-03-03 02:52:51 +09:00
Earthgames 2b4a0b6a0d Changed old link to the new one 2026-03-01 13:53:49 +09:00
galister 5ffa5e59bf skybox cleanups 2026-02-28 13:33:54 +09:00
galister ed8ca1e068 fix copy-paste fail causing stuck images 2026-02-28 13:33:27 +09:00
galister f21776b123 box CompositionLayerColorScaleBiasKHR 2026-02-28 13:10:02 +09:00
Torge Matthies ab3f873a38 fix grid opacity not updating live 2026-02-27 12:30:27 +09:00
oo8dev de6047107e
Merge pull request #450 from openglfreak/feat-grid-opacity
add option for grid opacity
2026-02-25 21:14:11 +01:00
Torge Matthies 39152b8548
add option for grid opacity 2026-02-25 20:59:17 +01:00
Kresny b517afc379
Rebind toggle_dashboard and show_hide (#449) 2026-02-25 14:58:30 +09:00
oo8dev b84d565b1e
Merge pull request #443 from wlx-team/feat-editbox
Editbox, wgui fixes, doc
2026-02-21 12:23:49 +01:00
Sapphire 46f3a54203 don't block inputs for headless sessions 2026-02-21 14:13:31 +09:00
Sapphire 4afaa6d048 reduce indentations in block_inputs 2026-02-21 14:13:31 +09:00
Sapphire 26f078d512 unblock inputs on exit 2026-02-21 14:13:31 +09:00
Aleksander 124d817752 fix logic bug in push_scissor_stack 2026-02-16 20:33:43 +01:00
Aleksander 2ddb419676 editbox keyboard input, scrollbars fix (scissoring broken atm), clippy 2026-02-14 22:20:51 +01:00
Aleksander 841241a7e6 wgui: Editbox basics, component focus, minor refactoring 2026-02-14 19:24:36 +01:00
Aleksander c902f0cd44 wgui: widgets.md: document tabs 2026-02-14 19:24:36 +01:00
Aleksander 756c42609d use SlotMap 2026-02-14 16:04:36 +01:00
Aleksander 4fc439abe2 uidev: fix color formats
Current implementation picks up the first available color format, which could be HDR (A2R10G10B10_UNORM_PACK32 in my case), but we don't have any color profiles. Stick back to SDR-only instead.
2026-02-14 10:18:41 +01:00
oo8dev 9685576272
Merge pull request #438 from wlx-team/feat-language-selector
Settings: Language selector, "Requires restart" info
2026-02-13 08:33:32 +01:00
galister d2f01c06ec
Add Open Collective link 2026-02-13 13:29:53 +09:00
Aleksander 94c36076af Language selector and "requires restart" info 2026-02-12 20:53:06 +01:00
galister a4134030fe Release 26.2.1 2026-02-11 02:58:18 +09:00
Aleksander ebacbf175a Update lang
[skip ci]
2026-02-10 17:59:27 +01:00
Sefa Eyeoglu 6c987b4492
Add Nix package to README (#432)
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2026-02-10 21:29:01 +09:00
SpookySkeletons 8acb2236bd
fix: delete hand bindings from openxr_actions.json5 (#429)
* fix: delete hand bindings from openxr_actions.json5

Presumably fixes handtracking causing laser offsets to tear off of controllers when hands switch to and from handtrack.

* Comment out fallback controller
2026-02-10 17:20:35 +09:00
Sapphire 5dae6f8387
fix openxr aspect ratio calculation (#430) 2026-02-10 17:20:07 +09:00
Sapphire 5ab242f8e0
fix size of set buttons (#431) 2026-02-10 17:19:51 +09:00
galister fcbb5fab73 update workflow for vendor tarball 2026-02-09 02:38:16 +09:00
galister f9a57e58bb Release 26.2.0 2026-02-09 02:34:31 +09:00
Sapphire d713302d0d add option to block poses when using keyboard (OpenXR only) 2026-02-08 01:13:56 +09:00
Sapphire d398e6fb5a update libmonado and use better input blocking when available 2026-02-08 01:13:56 +09:00
Sapphire 903a6b351c
allow hotswitch between 12h and 24h clock for keyboard (#426) 2026-02-07 10:21:47 +09:00
galister b3e09b330f screen.frag: force alpha to 1.0 2026-02-06 10:56:33 +09:00
dependabot[bot] c63089b944 Bump time from 0.3.44 to 0.3.47
Bumps [time](https://github.com/time-rs/time) from 0.3.44 to 0.3.47.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.44...v0.3.47)

---
updated-dependencies:
- dependency-name: time
  dependency-version: 0.3.47
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 09:55:25 +09:00
Sapphire ca770c1c05 disable grabbing for watch in default state
watch should only be grabbable in edit mode
2026-02-06 09:54:52 +09:00
galister ac65bca05a only write non-default attributes to state 2026-02-05 11:55:03 +09:00
Sapphire e61fd66210 remove libmonado active client workaround 2026-02-05 10:25:27 +09:00
Sapphire 1dc7d4340c better filtering for monado app switcher 2026-02-05 10:25:27 +09:00
galister a22bb2bf1a
KHR_composition_layer_color_scale_bias instead of raster alpha (#407) 2026-02-04 09:39:57 +09:00
dependabot[bot] e1c72fa446
Bump bytes from 1.11.0 to 1.11.1 (#419)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.11.0...v1.11.1)

---
updated-dependencies:
- dependency-name: bytes
  dependency-version: 1.11.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-04 09:39:21 +09:00
galister 676a96b2cd
fix KeySymbol font size 2026-02-02 12:56:20 +09:00
oo8dev 4821123c73
Merge pull request #417 from wlx-team/staging
dash-frontend: UX improvements
2026-01-28 10:47:37 +01:00
galister 32c8b7ae62 uidev: query surface format + color space from gpu 2026-01-28 11:25:18 +09:00
Aleksander d97bbfc796 dash-frontend: games: pagination 2026-01-27 19:49:27 +01:00
Aleksander 19083cfd83 dash-frontend: Top panel title 2026-01-27 19:49:27 +01:00
oo8dev 2c60196ead
Merge pull request #416 from wlx-team/staging
wgui: perf: Scissor render culling
2026-01-27 17:53:26 +01:00
Aleksander b17de39ef0 wgui: perf: scissor render culling
Greatly increases rendering performance and minimizes drawcall count for large lists.
2026-01-27 00:36:23 +01:00
ZokuTe 46e54db969
Fix: Refine locale matching logic to support region-specific tags (#411)
* wgui(i18n): Fix language matching logic

* wgui(i18n): Fix locale prefix match
2026-01-25 03:22:59 +00:00
galister 554029aacf fix dropdowns being stuck open; multi button events 2026-01-25 12:21:57 +09:00
galister a5146e0396 fix color bias behavior 2026-01-25 11:44:42 +09:00
galister 6960652379 reset playspace button in settings 2026-01-25 11:44:17 +09:00
galister 3ec1dd7f4e mouse-motion-only handsfree modes 2026-01-25 11:43:44 +09:00
oo8dev 157c88127f
Merge pull request #412 from wlx-team/staging
Update ovr_overlay
2026-01-24 15:24:45 +01:00
Aleksander 18e628f083 Update ovr_overlay 2026-01-24 14:32:40 +01:00
ZokuTe ab83d44a5e
i18n: add support for zh_CN locale (#409) 2026-01-23 01:30:40 +00:00
galister fa6492a422 fix build without openxr feature 2026-01-22 16:16:59 +09:00
galister 160e84120d fix monado no-layer bug 2026-01-22 01:14:04 +09:00
galister c222c25ddf angle fade (partial, need monado fix) 2026-01-22 01:00:44 +09:00
galister ee8391a45f refactor skybox & passthru realtime switching 2026-01-21 18:26:18 +09:00
Sapphire 3ac6f70725 allow toggling skybox during runtime 2026-01-21 03:47:20 +00:00
Sapphire d23b058d0e allow toggling passthrough during runtime 2026-01-21 03:47:20 +00:00
Orion 37fde4c642
scale grab offset together with the overlay/anchor (#404)
fixes #397
2026-01-21 02:22:12 +00:00
Sapphire 2ade8c542e
fix active modifier border color not sticking on unhover (#405) 2026-01-21 02:21:27 +00:00
Aleksander 03a1f449b5 Running games list (Closes #398) 2026-01-18 03:20:29 +00:00
Aleksander 7b3a2a1e48 UI gradient intensity slider, update wgui Defaults for dashboard, prepend ui-related config entries with `ui_` 2026-01-18 03:20:29 +00:00
Aleksander dabd122a1d translations, minor refactoring, wgui: gradient intensity in globals, dash-frontend: remove unused window_list, process_list and window_options 2026-01-18 03:20:29 +00:00
Orion 0181119393
input blocking improvements (#399)
* move input blocking hover logic into InteractionState

* add per-window input blocking setting

* OpenVR: per-hand input blocking

* move block_input setting into OverlayWindowState
2026-01-18 03:09:22 +00:00
Orion 2e1d07abc2
fix 2D scroll in apps spawned inside wayvr (#401) 2026-01-18 02:00:31 +00:00
Jay fe61319fc2
OSC: Change `::OscSend` format and restore String support to Button Actions. (#388)
* OscSend: support strings poc
- change value delimiter to `;`
- default convert values to String when not converted to another type

* add `_arg<n>="<value>"` format instead of `;` delimiter
that is, vrchat chatbox is controlled like `_press="::OscSend /chatbox/input" _arg0="${send}" _arg1="true" _arg2="true"` now

old format still supported as shorthand, with same "strings can't have spaces" limit as before. `_arg<n>` are appended after these.

* fix accidentally resetting `osc_args` to empty between formats

* update readme to document `::OscSend` paramter-form

* clean up, use `while let` instead of `while match`

* merge `parse_osc_value` into while condition

* remove second log from shortform arg parsing
2026-01-16 02:13:44 +00:00
galister da644c97d3
Fix readme formatting 2026-01-15 12:34:30 +00:00
galister b67914b956 expand vars in paths 2026-01-15 20:47:43 +09:00
Kresny e4caa1d6d4
Fix typos,improve clarity remove Homebrew in README.md (#392)
* Fix typos and improve clarity in README.md

Also replaced wlx with wayvr in build instructions

* Remove Homebrew
2026-01-15 09:13:03 +00:00
galister ea62be8ad7 openvr lines 2026-01-15 18:11:41 +09:00
galister 6ab1db9a76 fix openvr lines 2026-01-15 14:32:36 +09:00
galister cd0d49eaf6
steamvr is broken completely, not just steam link 2026-01-15 02:31:31 +00:00
galister a97ee2cee2 wayvrctl switch-set 2026-01-14 15:01:01 +09:00
galister 9d43068271 adjust mouse for stereo 2026-01-14 14:24:14 +09:00
oo8dev c7ebb7492e
Merge pull request #390 from wlx-team/staging
Tooltip improvements
2026-01-13 18:08:38 +01:00
Aleksander c5356724fd Tooltip fade-in animations, implement tooltip for CheckBox and Slider, use FnOnce for layout tasks 2026-01-13 17:51:35 +01:00
galister d02efc2657 always visible checkbox 2026-01-13 23:59:03 +09:00
galister 40cd532134 add help for handsfree mode 2026-01-13 20:00:43 +09:00
galister 869c0ba5e2 bindings for eye + pinch 2026-01-13 19:23:04 +09:00
galister fd24060d7b handsfree mode 2026-01-13 19:15:51 +09:00
Orion 1318f23947
task bar: toggle overlays on right click (#385) 2026-01-13 01:28:16 +00:00
galister d2385fd3b2 exported images to have dedicated allocations 2026-01-12 22:27:26 +09:00
Jay 7059a85742
Re-implement custom audio files support. (#379)
* reimplement custom audio loading for `toast` and `key_click` using `from_mp3`

* run cargo fmt

* `try_bytes_from_config`: output with `log::trace` when file cannot be opened

* rewrite `try_bytes_from_config`

* use file `read_to_end`, log categories

* edit `register_wgui_samples`

* rework audio functions for loading custom wgui sounds
oh hey, it works!

* clean up

* allow custom `startup` and `app_start` sounds
these sounds are loaded on-demand and never registered; this behaviour is unchanged

* edit `bytes_from_config` outputs

* use return value of `read_to_end` instead of `len()` for reported file size

* implement suggested changes
- remove now-unused `register_mp3_sample_from_assets` function
- replace implementation of `try_bytes_from_config`
  - missing the `real_path` context

* swap out `context`s for `inspect_err`s with closures to output `real_path`

* clean up `audio.rs`
- remove unused import
- unify capitalisation + quotes in output messages.
2026-01-12 12:42:03 +00:00
Orion 2e5dcd62c1
add missing test_button checks in button.rs (#384) 2026-01-12 04:16:29 +00:00
galister 72e64ad965
Update documentation for sprite and image widgets
Added emphasis on setting width and height for sprite and image widgets.
2026-01-12 04:07:59 +00:00
galister 0e004e7b3f fix some button actions missing filters 2026-01-12 12:17:30 +09:00
oo8dev 91bc46defe
Merge pull request #382 from wlx-team/feat-dash-tabbed-settings
dash-frontend: Tabbed settings, minor fixes
2026-01-11 19:45:26 +01:00
oo8dev b8f266ea6a
Merge pull request #383 from BERADQ/chinese/1-11
Add Chinese (Simplified) translation
2026-01-11 19:24:53 +01:00
galister a33d4ec9d0 log svg loads 2026-01-12 02:32:45 +09:00
ZokuTe 4c3500ea16
chore(i18n): Fix typo in Chinese (Simplified) translation
Co-authored-by: Amos Wong <8733840+amoshydra@users.noreply.github.com>
2026-01-12 01:10:33 +08:00
BERADQ bc1c993e17
chore(i18n): Add Chinese (Simplified) translation 2026-01-11 23:24:08 +08:00
galister 3889c9d2ea fix stereo on wayvr overlays 2026-01-11 23:38:35 +09:00
Aleksander 8eda46fb5e update logo 2026-01-11 15:05:23 +01:00
Aleksander a0451408aa wgui: fix possible panic 2026-01-11 14:59:26 +01:00
Aleksander 84d4fb7cc2 Tabbed settings (Closes #355) 2026-01-11 14:41:47 +01:00
amoshydra b48320c7bc feat: use contextual label for full frame 3d base on stereo mode
show Full-SBS when stereo is LeftRight or RightLeft
show Full-TAB when stereo is TopBottom
show Full-BAT when stereo is BottomTop
2026-01-11 12:03:45 +00:00
amoshydra ce5191ddd1 feat: add full frame 3d support
Related to #346
2026-01-11 12:03:45 +00:00
Aleksander 37e3ab1bda dash-frontend: Scrollable audio device list (Closes #353), wgui: fix scrollbar rendering 2026-01-11 11:11:01 +01:00
Aleksander 6b98d5f188 openxr: Fix 1.0 click threshold (Closes #374), wgi: less aggressive scrolling 2026-01-11 10:45:45 +01:00
oo8dev f059c5668a
Merge pull request #373 from wlx-team/staging
Add Italian translations
2026-01-10 21:41:53 +01:00
Aleksander e7fc7be950 Add Italian translations
[skip ci]
2026-01-10 21:40:38 +01:00
galister 6136fae885
Remove button label update instructions from README
Removed section about updating button label from stdout in README.
2026-01-10 17:15:41 +00:00
galister 9505352f37 Release 26.1.2 2026-01-10 22:52:10 +09:00
galister 07cb0e7ab8 fix icon loading in cache folder missing 2026-01-10 22:51:22 +09:00
galister 285f6db134 fix bindings for wmr controllers 2026-01-10 22:51:04 +09:00
galister c7757500b0 Release 26.1.1 2026-01-10 22:33:08 +09:00
galister 7f2d62b506 fix drm_exporter panic 2026-01-10 22:26:52 +09:00
galister 7deb2a30db previously wlxoverlay note 2026-01-10 21:20:42 +09:00
galister df7e9be13d update readme 2026-01-10 21:16:26 +09:00
oo8dev 1d605888a3
Update readme screenshot (#366)
[skip ci]
2026-01-10 12:11:28 +00:00
galister 1394c143ae wlx-capture GPL-3.0-only 2026-01-10 20:54:29 +09:00
galister fcba21ef53 also add license to main folder 2026-01-10 20:53:06 +09:00
galister 9a23fdc541 license fixes 2026-01-10 20:52:33 +09:00
oo8dev 358585fab5
Merge pull request #365 from wlx-team/staging
wgui: fix incorrect text wrapping
2026-01-10 11:31:59 +01:00
Mitsuami 4f03213cc6
update ja locale (#364) 2026-01-10 10:30:37 +00:00
Aleksander 153b77e98c wgui: fix incorrect text wrapping
[skip ci]
2026-01-10 11:29:52 +01:00
oo8dev 44848a7e23
Merge pull request #363 from wlx-team/staging
update lang
2026-01-10 11:09:46 +01:00
Aleksander 70c641f920 update lang
[skip ci]
2026-01-10 11:09:25 +01:00
galister 653882fe66 fix app_launcher not showing 2026-01-10 19:04:19 +09:00
galister ba99dececf disable confusing UI sections 2026-01-10 18:57:09 +09:00
galister c061abb7ac fix overlays sticking around after process closes 2026-01-10 18:43:01 +09:00
oo8dev ebe83f9475
Add splash screen to readme (#362)
[skip ci]
2026-01-10 09:25:37 +00:00
galister 82bdf637f4 external wl client sizing 2026-01-10 17:27:18 +09:00
galister 8d7ec2b107 server-side decorations 2026-01-10 17:04:04 +09:00
galister 782bd0dc47 wayland server fixes 2026-01-10 16:21:43 +09:00
galister ef6da380c4 update desktop file + icons 2026-01-10 13:14:45 +09:00
galister 5dc6b66cc1 rework stereo mode 2026-01-10 12:20:53 +09:00
Orion d11b33a579
add input blocking on OpenVR (#351) 2026-01-10 02:06:12 +00:00
Orion a7e12a86c4
fix blocker getting stuck on when the config changes at runtime (#350) 2026-01-10 02:05:09 +00:00
Sefa Eyeoglu 4a853fd79b
Deduplicate vulkano dependency (#352)
This solves a downstream build issue in the Nixpkgs Rust tooling.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2026-01-10 02:04:30 +00:00
galister 6cf4c1fe8f custom panel icons 2026-01-10 04:17:01 +09:00
Helooprototo e5f0131730
Merge pull request #349 from Helooprototo/main
Allow controlling of the Watch and Kbd via wayvrctl
2026-01-09 19:05:50 +00:00
galister 9547da21ce X button on dashboard 2026-01-10 03:18:08 +09:00
galister 531786f63a improve autostart apps 2026-01-10 02:58:55 +09:00
galister 367e2d6d37 autostart apps removal 2026-01-10 02:50:51 +09:00
galister be8126e11a fix wmr bindings 2026-01-10 02:08:20 +09:00
galister 3bc5b8c7b8 fix giga lag 2026-01-10 02:08:13 +09:00
galister 810e99ad4a cleanups 2026-01-10 01:42:35 +09:00
galister b4af0e6caa fix dma-buf export via vulkano patch 2026-01-10 01:13:17 +09:00
galister ac05e95e9c rename to wayvr 2026-01-09 23:38:47 +09:00
galister 7b60b86f46 wvrsv: handle minimize, maximize fullscreen request 2026-01-09 21:16:49 +09:00
galister 080274ccf4
dash-frontend (#287)
* Slider: `show_value`, hide tooltip on button press

[skip ci]

* DashInterface, DashInterfaceEmulated

* `display_list`, `add_display` views (wip)

[skip ci]

* `add_display::View` done

* `display_options::View` done

* `process_list::View` done

* Merge remote-tracking branch 'origin/main' into next-dash-interface

[skip ci]

* tooltip wrap, clippy

[skip ci]

* App launcher

[skip ci]

* toast_manager: fix delay, add vulkan feat

[skip ci]

* smithay deps egl → vk

* rewrite built-in wayland compositor egl → vulkan

* move `add_display::View` -> `add_window::View` & `display_options::View` -> `window_options::VIew`, remove displays logic and replace it with window ones

[skip ci]

* Merge remote-tracking branch 'origin/wlvk' into next-dash-interface

[skip ci]

* when is maybeuninit not a bad idea?

* wayland_server: make frame callbacks, release buffers. logging

* wayvrctl process-launch args fix

* wayland_server: fix mouse

* `game_list::View` (wip)

[skip ci]

* `~/.cache/` IO

[skip ci]

* HTTP client, game cover art fetcher, game list image display, use `smol::LocalExecutor` for async runtime

* wayvr overlay removal

* WayVRData → WayVRState in the RefCell

* rearrange deps, add dash

* add back regex for build

* [skip ci] refactor dash?

* remove RcFrontend & RcLayout

[skip ci]

* todo in wrong place

* enjoy dashboard in vr

* Placeholder cover arts

[skip ci]

* fix DashFrontend not updating

[skip ci]

* fix animations, fix SlotMap dirty widget panic, set gui scale, set dash to 1080p

[skip ci]

* wgui to use srgb

* fix srgb in uidev mode, tweak colors a bit

[skip ci]

* dash-frontend: Detect and switch to WiVRn speakers

[skip ci]

* Game launcher (wip), wgui refactor

[skip ci]

* get rid of wayvr refcell

* clippy

* use freedesktop instead of gtk

* glob-based icon discovery but very slow

* background app entry finder

* cached image loading

* cached image loading: auto cleanup

* app entry cache build log level

* bump freedesktop to include flatpak search paths

* Nice Word Wrap™ for apps.xml

* overhaul desktop finder

* Game launcher (fully functional)

* app_launcher: fix exec label

* ShouldRender::Should if mouse moved

* generics + DashInterface impl (#334)

* fix uidev build

* make apps think that they are fullscreen

* fix cage

* implement xdg_popup support

* RadioBox & RadioGroup

* AppLauncher radio boxes

* app launcher res & orientation functionality

* fix scaling

* fix wrong default for res_mode

* typo

* separator placement

* poc window decorations

* move audio system to wlx-common, compress audio data, sample player

* dash and wgui sounds

* decor mouse fix

* decor improvements

* battery percentage sign ("%") in watch

* update decor.xml, fix max_size

* decor mouse hover & leave

* decor window close

* fallback identicons

* wayvr window size from res. remove decor tooltips

* wip: add bar to keyboard

* bar design

* tweak ui, clippy, modify desktop finder blacklist

* do not keep startup sound in memory

* tweak watch ui, load application list gradually (prevent lag)

* bar functionality

* tooltip raw text, inline translation fallback support

* bar app icons & tooltips

* bar dropdown backend logic

* fix wayvrctl

* fmt

* bar: dash button

* add ::OverlayReset

* add ::CustomOverlayReload

* bring back ToggleDashboard keybind support

* wgui: windowing: `close_if_clicked_outside` support, context menus

* ticking context menu

* on_custom_attribs Box → Rc

* context menu custom attribs

* dash-frontend: application list grouping

* checkbox sounds, app launch sounds

* settings implementation

* fix uidev build

* batteries: hide % if more than 3 devices

* ::OverlayToggle to not reset overlay on show

* update lang

* settings ui changes

* fallback fonts

* remove old gh actions

* app categories

* fix set_stereo

* pass template_params to context_menu

* refactor context_menu to only require parser_state on tick

* working bar context menus + kbd downsize

* fix hidden overlays all popping up after restart

* context to use release → press; cleanups

* list helpers

* watch rework

* reverse sets_on_watch

* settings tab buttons; autorestart

* tweak keycaps

* fix bar doing out of date on keymap change

* settings saving

* fix context menus, reload-from-disk

* fix force close not force closing

* burger menu + fix crash after removing set

* dropdown for capture_method + random tweaks

* support _format on clock time label (#344)

use _display as format string directly
remove log message

update docs

* more useful parser warnings + cleanups

* reduce warings, xml fixes

* keyboard middle click setting; docs, readme & logs

* app autostart

* implement spawn positioning

* rearrange settings

* update lang, update description.txt

* sort json

* Monado app switcher, lang update

* Update Monado IPC, display brightness slider

* fmt

* zwlr_screencopy v3 support

* remove wayvr feature

* fix features

---------

Co-authored-by: galister <22305755+galister@users.noreply.github.com>
Co-authored-by: Tayou <git@tayou.org>
2026-01-09 12:03:37 +00:00
galister c799ecea93 fix features 2026-01-09 20:27:20 +09:00
galister eb69ec8fe3 remove wayvr feature 2026-01-09 19:41:24 +09:00
galister 5e77bab588 zwlr_screencopy v3 support 2026-01-09 18:47:45 +09:00
galister e6e1764b36 fmt 2026-01-09 11:48:44 +09:00
galister 9f79a034e7 Merge remote-tracking branch 'origin/main' into next-dash-interface 2026-01-09 11:46:43 +09:00
Aleksander b260c6c625 Update Monado IPC, display brightness slider 2026-01-08 20:54:43 +01:00
Aleksander e421c39539 Monado app switcher, lang update 2026-01-08 19:46:34 +01:00
Aleksander 650bc99a95 sort json 2026-01-08 18:02:15 +01:00
Aleksander 6cdc71a344 update lang, update description.txt 2026-01-08 17:23:31 +01:00
galister fca3162e05 rearrange settings 2026-01-09 01:02:32 +09:00
galister 9fc5e8c8b0 implement spawn positioning 2026-01-09 00:59:50 +09:00
galister 437840fecb app autostart 2026-01-09 00:12:36 +09:00
galister 390338c4a5 keyboard middle click setting; docs, readme & logs 2026-01-08 20:47:52 +09:00
galister 3611cfc57b reduce warings, xml fixes 2026-01-08 19:27:59 +09:00
galister cdf4ed3882 more useful parser warnings + cleanups 2026-01-08 19:16:20 +09:00
Tayou 76f328a16e
support _format on clock time label (#344)
use _display as format string directly
remove log message

update docs
2026-01-08 09:50:49 +00:00
galister e9230f6f9f dropdown for capture_method + random tweaks 2026-01-08 16:57:37 +09:00
galister 5616090fa9 burger menu + fix crash after removing set 2026-01-08 04:11:37 +09:00
galister 082c9eb349 fix force close not force closing 2026-01-08 03:31:23 +09:00
galister bc52ff825e fix context menus, reload-from-disk 2026-01-08 03:27:45 +09:00
galister 150e6c4e40 settings saving 2026-01-08 03:21:33 +09:00
galister 5f4ab341fe fix bar doing out of date on keymap change 2026-01-08 02:57:21 +09:00
galister 43ccd439ee tweak keycaps 2026-01-08 02:40:09 +09:00
galister 2f010bb42b settings tab buttons; autorestart 2026-01-08 02:19:00 +09:00
galister cd8480100f reverse sets_on_watch 2026-01-08 01:08:10 +09:00
galister 4d1154cdcb watch rework 2026-01-08 01:06:54 +09:00
galister 89e8d606a8 list helpers 2026-01-07 21:19:18 +09:00
galister 576506233e context to use release → press; cleanups 2026-01-07 20:26:44 +09:00
galister 819313200b fix hidden overlays all popping up after restart 2026-01-07 20:23:19 +09:00
galister ac9f3c6d23 working bar context menus + kbd downsize 2026-01-07 19:03:47 +09:00
galister 165070da51 refactor context_menu to only require parser_state on tick 2026-01-07 13:59:14 +09:00
galister 5123363454 pass template_params to context_menu 2026-01-07 12:58:32 +09:00
galister 0661af278b fix set_stereo 2026-01-07 12:06:50 +09:00
Aleksander 33ad05ee39 app categories 2026-01-06 20:17:44 +01:00
galister 3addd6eaa0 remove old gh actions 2026-01-07 03:54:30 +09:00
galister 578165ee5b fallback fonts 2026-01-07 03:41:07 +09:00
Aleksander 954e1c3157 settings ui changes 2026-01-06 19:17:05 +01:00
Aleksander 45e09fe2d5 update lang 2026-01-06 18:57:45 +01:00
galister f0a77f6da0 ::OverlayToggle to not reset overlay on show 2026-01-07 02:56:55 +09:00
galister 8160d20e73 batteries: hide % if more than 3 devices 2026-01-07 02:42:12 +09:00
Aleksander 0f89321070 fix uidev build 2026-01-06 18:27:09 +01:00
galister ce558855d4 settings implementation 2026-01-07 02:23:39 +09:00
Aleksander 51dbb6f14d checkbox sounds, app launch sounds 2026-01-06 17:09:39 +01:00
Aleksander 46ab3ce960 dash-frontend: application list grouping 2026-01-06 16:23:01 +01:00
Aleksander addcc7eed6 context menu custom attribs 2026-01-06 14:15:56 +01:00
galister 1257be6cc4 on_custom_attribs Box → Rc 2026-01-06 20:47:05 +09:00
Aleksander e535c5fe94 ticking context menu 2026-01-06 12:43:03 +01:00
Aleksander a196dd9b3a wgui: windowing: `close_if_clicked_outside` support, context menus 2026-01-06 00:06:06 +01:00
Aleksander 1d78da16ab bring back ToggleDashboard keybind support 2026-01-05 17:53:17 +01:00
galister d8935c041f add ::CustomOverlayReload 2026-01-05 21:52:06 +09:00
galister 97a7038fd9 add ::OverlayReset 2026-01-05 21:32:19 +09:00
galister 85b6032586 bar: dash button 2026-01-05 21:30:48 +09:00
galister 164e9764eb fmt 2026-01-05 20:52:34 +09:00
galister fd9becc398 fix wayvrctl 2026-01-05 20:52:19 +09:00
galister 0e291837da Merge branch 'main' into next-dash-interface 2026-01-05 20:41:59 +09:00
galister ac9bfc9fc4 bar dropdown backend logic 2026-01-05 20:36:44 +09:00
galister b56aa1a8de bar app icons & tooltips 2026-01-05 15:45:19 +09:00
Aleksander b86525d65d tooltip raw text, inline translation fallback support 2026-01-05 01:05:56 +01:00
galister 4dd7c85e79 bar functionality 2026-01-05 03:57:56 +09:00
Amos Wong dd3486f06b
feat: add wayvrctl ipc for overlay show hide (#338) 2026-01-04 12:53:47 +00:00
Aleksander c3e04e0a89 tweak watch ui, load application list gradually (prevent lag) 2026-01-04 13:11:31 +01:00
Aleksander 553dd02fc4 do not keep startup sound in memory 2026-01-04 12:51:12 +01:00
Aleksander ccc9f9ebb2 tweak ui, clippy, modify desktop finder blacklist 2026-01-04 12:48:18 +01:00
galister 40313cd6bc bar design 2026-01-04 19:16:33 +09:00
galister 5e5f7ef786 wip: add bar to keyboard 2026-01-04 18:00:23 +09:00
galister 0c062d4b36 wayvr window size from res. remove decor tooltips 2026-01-04 16:28:14 +09:00
galister b0763beb4a fallback identicons 2026-01-04 13:41:26 +09:00
galister 3e4174994d decor window close 2026-01-04 12:13:05 +09:00
galister c2446f028f decor mouse hover & leave 2026-01-04 11:18:29 +09:00
Aleksander f5dc5449ad update decor.xml, fix max_size 2026-01-03 19:29:01 +01:00
Aleksander 6d7386f73d battery percentage sign ("%") in watch 2026-01-03 19:02:39 +01:00
galister 80a9903217 decor improvements 2026-01-04 02:18:55 +09:00
galister 5d1a954a6e decor mouse fix 2026-01-04 01:55:02 +09:00
Aleksander feba52c28f dash and wgui sounds 2026-01-03 15:00:47 +01:00
Aleksander 383bf3b11f move audio system to wlx-common, compress audio data, sample player 2026-01-03 15:00:47 +01:00
galister b6c16dff18 poc window decorations 2026-01-03 20:57:14 +09:00
galister 57c450cb45 separator placement 2026-01-03 18:01:50 +09:00
galister 21c037da2b typo 2026-01-03 17:59:12 +09:00
galister 748bd09a8e fix wrong default for res_mode 2026-01-03 17:59:06 +09:00
galister d9b4e0ca84 fix scaling 2026-01-03 17:18:07 +09:00
galister 12c4a664b0 app launcher res & orientation functionality 2026-01-03 16:47:30 +09:00
galister fcfd3f3dc3 AppLauncher radio boxes 2026-01-03 16:14:53 +09:00
galister 648e9ae219 RadioBox & RadioGroup 2026-01-03 16:14:29 +09:00
galister 96cbc5af78 implement xdg_popup support 2026-01-03 12:23:03 +09:00
galister c1544e93e9 fix cage 2026-01-03 01:24:37 +09:00
galister 43575dea0a make apps think that they are fullscreen 2026-01-02 21:50:02 +09:00
Stuart Irwin 36f64c5027
Readd uptime timer label (#336)
* Readd uptime timer label

* Fixed timer formatting
2026-01-01 01:59:48 +00:00
Aleksander b91ec99782 fix uidev build 2025-12-29 21:51:26 +01:00
galister 9425db9ae4
generics + DashInterface impl (#334) 2025-12-28 18:44:58 +00:00
galister ee39e22472 ShouldRender::Should if mouse moved 2025-12-29 02:53:29 +09:00
Aleksander 76a4df0ee1 app_launcher: fix exec label 2025-12-28 16:41:04 +01:00
Aleksander d664b1b9e2 Game launcher (fully functional) 2025-12-28 16:38:24 +01:00
Aleksander 951abc70b0
fix wayvr-dashboard appimage build (#333) 2025-12-28 15:25:48 +00:00
galister 686a6f3ba5 overhaul desktop finder 2025-12-28 22:11:23 +09:00
Mitsuami 13630d5d3d
update ja locale (#332) 2025-12-28 08:37:53 +00:00
galister d2e7321f97 make screen select toast not urgent due to kde 2025-12-28 14:19:16 +09:00
galister de5c76db7d github actions update 2025-12-28 14:05:12 +09:00
galister 67db0a9fb9 github actions update 2025-12-28 13:26:23 +09:00
galister 8f5a035987 fix some obviously wrong translations 2025-12-28 13:24:05 +09:00
galister bab2d54daa github actions update 2025-12-28 11:51:17 +09:00
galister 94dd0a2139 ignore per-project cargo locks in favor of workspace 2025-12-28 11:28:10 +09:00
galister b5f2191ea3 add comment about xkbcommon 2025-12-28 03:12:00 +09:00
galister 7eb16fc205 downgrade libxkbcommon 2025-12-28 02:12:12 +09:00
galister 2ff83b63f2 Nice Word Wrap™ for apps.xml 2025-12-28 01:38:56 +09:00
galister 0783873a08 bump freedesktop to include flatpak search paths 2025-12-28 01:32:28 +09:00
galister 1ab578d999 app entry cache build log level 2025-12-27 22:32:07 +09:00
galister 9b10082b71 cached image loading: auto cleanup 2025-12-27 22:31:31 +09:00
galister 8747487beb cached image loading 2025-12-27 22:06:28 +09:00
galister f4545241df background app entry finder 2025-12-27 20:15:42 +09:00
galister d90d71a32d glob-based icon discovery but very slow 2025-12-27 18:48:33 +09:00
galister 43037a6a41 use freedesktop instead of gtk 2025-12-27 15:28:16 +09:00
galister 64c8f03dae clippy 2025-12-27 13:59:32 +09:00
galister 35f3748b95 get rid of wayvr refcell 2025-12-27 13:27:44 +09:00
Aleksander d70b51184c Game launcher (wip), wgui refactor
[skip ci]
2025-12-26 23:22:17 +01:00
Aleksander e0c51492b8 dash-frontend: Detect and switch to WiVRn speakers
[skip ci]
2025-12-26 21:49:25 +01:00
Aleksander d8625f770c fix srgb in uidev mode, tweak colors a bit
[skip ci]
2025-12-26 20:58:17 +01:00
galister a44aa2e426 wgui to use srgb 2025-12-27 02:49:11 +09:00
Aleksander 1364a5cb2e fix animations, fix SlotMap dirty widget panic, set gui scale, set dash to 1080p
[skip ci]
2025-12-26 15:02:08 +01:00
Aleksander dead3f417c fix DashFrontend not updating
[skip ci]
2025-12-26 14:21:11 +01:00
Aleksander c4e8dee1fd Placeholder cover arts
[skip ci]
2025-12-26 13:58:12 +01:00
galister a849d1aed4 enjoy dashboard in vr 2025-12-26 21:49:10 +09:00
galister 1d7617c155 todo in wrong place 2025-12-26 12:46:13 +01:00
Aleksander 4f7204ccf7 remove RcFrontend & RcLayout
[skip ci]
2025-12-26 12:43:14 +01:00
galister f29de34de2 [skip ci] refactor dash? 2025-12-26 19:28:13 +09:00
galister e9540a4d27 add back regex for build 2025-12-26 17:58:38 +09:00
galister 4015f9354f rearrange deps, add dash 2025-12-26 17:48:43 +09:00
galister 400952177e WayVRData → WayVRState in the RefCell 2025-12-26 17:40:22 +09:00
galister dc6d03605f wayvr overlay removal 2025-12-26 13:19:57 +09:00
galister 771ade368c Merge branch 'main' into next-dash-interface 2025-12-26 11:56:48 +09:00
galister 86cbe8f13b fix <image> instance_count 2025-12-26 11:55:48 +09:00
Aleksander bfad91bf72 HTTP client, game cover art fetcher, game list image display, use `smol::LocalExecutor` for async runtime 2025-12-25 21:51:38 +01:00
Aleksander 382735956a `~/.cache/` IO
[skip ci]
2025-12-25 19:08:17 +01:00
Aleksander a17334bc80 `game_list::View` (wip)
[skip ci]
2025-12-25 18:58:18 +01:00
galister dd4a795b4c wayland_server: fix mouse 2025-12-26 02:49:43 +09:00
galister 03173434bc wayvrctl process-launch args fix 2025-12-26 02:06:51 +09:00
galister db74874a80 wayland_server: make frame callbacks, release buffers. logging 2025-12-26 02:02:19 +09:00
galister b1fba81e08 when is maybeuninit not a bad idea? 2025-12-26 00:27:52 +09:00
Aleksander 99a2dcdd55 Merge remote-tracking branch 'origin/wlvk' into next-dash-interface
[skip ci]
2025-12-25 15:00:12 +01:00
Aleksander ccf72b16c5 move `add_display::View` -> `add_window::View` & `display_options::View` -> `window_options::VIew`, remove displays logic and replace it with window ones
[skip ci]
2025-12-25 14:57:10 +01:00
Aleksander 7cde2f8c42 Merge remote-tracking branch 'origin/wlvk' into next-dash-interface
[skip ci]
2025-12-25 13:58:30 +01:00
galister 40dc33410d rewrite built-in wayland compositor egl → vulkan 2025-12-25 21:26:38 +09:00
galister 3b6acb3673 smithay deps egl → vk 2025-12-24 18:29:21 +09:00
galister 3484df0cf7 fix build without wayvr feature 2025-12-24 09:15:15 +00:00
galister 10191385e4 DeviceHaptics task 2025-12-24 09:15:15 +00:00
galister 1d6a0e4bde dont die if wayland server init fails 2025-12-24 09:15:15 +00:00
Aleksander 36576122a9 Make WayVR IPC independent of the built-in Wayland server
- Rename state -> wayland_state
- Move WayVR IPC server outside "wayvr" (wayland server) feature
- WayVR IPC server is now available without "wayvr" (wayland server) feature
- Remove run_compositor_at_start (run wayland server instantly)
2025-12-24 09:15:15 +00:00
Aleksander 5afe85a3b3 Slider: `show_value`, hide tooltip on button press
[skip ci]
2025-12-24 09:15:15 +00:00
Aleksander d36106ed3f toast_manager: fix delay, add vulkan feat
[skip ci]
2025-12-23 19:27:37 +01:00
Aleksander ff9ecda68f Merge remote-tracking branch 'origin/main' into next-dash-interface
[skip ci]
2025-12-23 19:24:08 +01:00
Aleksander 2d40b8ac00 App launcher
[skip ci]
2025-12-23 19:17:51 +01:00
galister ca814e6ecb wayvrctl: allow unquoted strings on set-text 2025-12-24 01:51:25 +09:00
Aleksander 1b4c2a9006 tooltip wrap, clippy
[skip ci]
2025-12-23 17:14:46 +01:00
galister 49b6234db3 cleanup 2025-12-24 01:11:54 +09:00
Aleksander 9a606dbce5 Merge remote-tracking branch 'origin/main' into next-dash-interface
[skip ci]
2025-12-23 17:01:16 +01:00
galister 3f5a363136 fmt 2025-12-24 00:58:40 +09:00
galister 6672fb71e4 SetSprite → SetImage, remove fifo & shell label 2025-12-24 00:55:10 +09:00
galister fcacc182de run wayvr at start by default 2025-12-24 00:26:49 +09:00
galister b352269556 add <image> widget 2025-12-23 22:10:46 +09:00
galister 17453ae1d9 wayvrctl: sleep to workaround sigbus from proto error 2025-12-23 19:17:57 +09:00
galister f038ad8a87 wayvrctl + panel-modify ipc 2025-12-23 18:20:27 +09:00
galister 5287b659e8 customization via wayvr_ipc 2025-12-23 13:29:28 +09:00
dependabot[bot] 8f9f057c97
Bump tokio from 1.43.0 to 1.43.1 in /wayvr-ipc (#325)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.43.0 to 1.43.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.43.0...tokio-1.43.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.43.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-23 03:25:52 +00:00
Aleksander ccd75c047c
Move wayvr-ipc to our workspace (#324) 2025-12-23 02:50:03 +00:00
Aleksander ca5e361f93
Merge pull request #323 from galister/translations
Update translations
2025-12-22 17:36:05 +01:00
Aleksander 9ea9da18f5 update translations, use gemma3:27b instead
[skip ci]
2025-12-22 17:35:03 +01:00
galister 4ea5829824 fix sticky state on Lock Interaction 2025-12-23 01:06:16 +09:00
galister a20ca4cc2b dont apply round multiplier to percentage values 2025-12-23 00:44:32 +09:00
galister 30fd56402a fix openxr line colors 2025-12-23 00:10:02 +09:00
galister ff33657959 fix keycap scaling anim 2025-12-22 21:23:32 +09:00
galister 4e77058618 toast translations, empty set warning 2025-12-22 20:50:00 +09:00
galister 9e6d4379b8 add bgr8-unorm to supported dds 2025-12-22 20:22:21 +09:00
galister b90b7336e0 add universal _long_release and variants 2025-12-22 17:47:46 +09:00
galister a0bc4001c0 settings for text+bg colors, anim speed, rounding 2025-12-22 15:03:17 +09:00
galister b9513c3c36 add extra trace logs, mirrors to support MainThreadWlxCapture 2025-12-22 14:21:18 +09:00
galister e6cb608bbf add space_drag_unlocked settings 2025-12-22 13:08:15 +09:00
Mitsuami 1a1e1c51b0
update ja locale (#318) 2025-12-22 03:00:50 +00:00
Aleksander 9da4fa685d fix translated translation keys
[skip ci]
2025-12-21 15:39:52 +00:00
galister 39ea443a07 fix translation keys 2025-12-21 15:39:52 +00:00
Aleksander 770dcdaf4c add translations
[skip ci]
2025-12-21 15:39:52 +00:00
Aleksander 848674c143 `process_list::View` done 2025-12-21 16:00:54 +01:00
galister d18871eb0a max 6 sets 2025-12-21 22:50:10 +09:00
galister b69d382451 fix watch sticky states 2025-12-21 22:28:15 +09:00
galister ec1a4e4205 left, right & middle-specific press-release actions on buttons 2025-12-21 22:16:02 +09:00
Aleksander 5462e84995 `display_options::View` done 2025-12-21 13:59:17 +01:00
Aleksander e81c3945e6 `add_display::View` done 2025-12-21 13:59:17 +01:00
Aleksander 9aea733452 `display_list`, `add_display` views (wip)
[skip ci]
2025-12-21 13:59:17 +01:00
Aleksander 7118cea810 DashInterface, DashInterfaceEmulated 2025-12-21 13:59:17 +01:00
Aleksander 171021d6c5 Slider: `show_value`, hide tooltip on button press
[skip ci]
2025-12-21 13:59:17 +01:00
galister e04edec586 watch: highlight buttons of active overlays 2025-12-21 21:53:25 +09:00
galister d61b056db5 remove unused settings, update sample config 2025-12-21 20:04:20 +09:00
galister 48c02397a8 watch: highlight edit mode button while in edit mode 2025-12-21 18:25:07 +09:00
galister b11884637d fix floating overlays recentering when leaving edit mode 2025-12-21 18:05:36 +09:00
galister 3776bad899 fix edit overlay getting stuck on mirrors 2025-12-21 18:03:00 +09:00
galister b7ea642ef3 add help about wrong screen selection; fix mouse translation keys 2025-12-21 17:43:23 +09:00
galister 79aa3f8977 hide_grab_help setting 2025-12-21 17:09:47 +09:00
galister a139ab7b15 add more help to grab-help 2025-12-21 17:03:40 +09:00
galister 1c6ebc745d grab-help panel, FollowHand align_to_hmd 2025-12-21 16:00:45 +09:00
galister 8e62e11d65 include ext_hand_interaction bindings for the sake of including them 2025-12-21 12:26:09 +09:00
galister 52ffa0989c fix exec button consuming InternalStateChange 2025-12-20 22:28:41 +09:00
galister 35ced31b8f save state when exiting edit mode 2025-12-20 21:02:11 +09:00
galister c9856b97e0 global overlays to maintain scale 2025-12-20 20:57:54 +09:00
galister 90eb641f94 fix edit overlay scaling on upright overlays 2025-12-20 20:27:08 +09:00
galister a60476b47e fix slider behavior with multiple pointers 2025-12-20 19:56:43 +09:00
galister 4c06fef35d support svgs with currentColor 2025-12-20 19:32:24 +09:00
galister 796fdcbc01 adaptive speed for grab & push/pull 2025-12-20 18:55:20 +09:00
galister 73e2f06b01 fix edit mode pointer leave 2025-12-20 18:19:42 +09:00
galister 23df9228a9 persist BackendAttrib across sessions 2025-12-20 17:42:18 +09:00
galister 9381ebc700 allow adjusting mouse for each screen 2025-12-20 16:42:04 +09:00
galister b4b641371a add rustfmt.toml 2025-12-20 11:52:59 +09:00
galister c4ae217f68 custom panel to have a state different from () 2025-12-20 02:50:39 +09:00
galister ff3ed1028b fix labels not ticking on custom panels 2025-12-20 02:04:34 +09:00
galister bc037cae79 steamvr recenter messages 2025-12-19 13:13:45 +09:00
galister 957fe75719 fix openvr panic in case of unknown event 2025-12-19 13:00:18 +09:00
galister 70f2190400 update oyasumi & lock 2025-12-19 11:57:15 +09:00
Aleksander 27d40c8fea
Merge pull request #307 from galister/staging 2025-12-18 22:27:08 +01:00
Aleksander 9dbd86db39 wgui: pass motion events further, add `consume_mouse_events` parameter to widgets (Closes #306), always reverse iter events 2025-12-18 22:02:17 +01:00
Aleksander 5463b6490d wgui: fix stuck mouse release animation state (Closes #296) 2025-12-18 20:54:19 +01:00
galister 502c59424e fix bufreader.take usage 2025-12-19 00:50:52 +09:00
galister 4dc8bb0a3a watch: devices wrap, up to 3 rows 2025-12-19 00:24:40 +09:00
galister 3b44535407 fmt 2025-12-18 21:27:09 +09:00
galister a12a181422 ignore ray hits from back side 2025-12-18 21:26:17 +09:00
galister f0937e7036 pipewire: log errors from set_active 2025-12-18 11:00:40 +09:00
Aleksander 346d20d55e
Merge pull request #304 from Okabintaro/improve-german-translation
Improve German translation
2025-12-17 21:12:26 +01:00
Okabintaro 757405fa60
Merge branch 'main' into improve-german-translation 2025-12-17 21:11:42 +01:00
Okabintaro 94e29089d7
Improve German translation
Make it more consistent and understandable, fix some AI translation
quirks(e.g. 3d sound mode).
2025-12-17 21:08:33 +01:00
Aleksander 951c17fff8
Merge pull request #303 from Okabintaro/improve-german-translation
Improve German translation
2025-12-17 21:08:15 +01:00
Okabintaro 8c5af8360b
Improve German translation
Make it more consistent and understandable, fix some AI translation
quirks(e.g. 3d sound mode).
2025-12-17 21:05:52 +01:00
galister 2d3c1bb2a3 default_keymap setting, set wayvr keymap when wayvr starts 2025-12-18 01:29:36 +09:00
galister 595b59b865 fix openvr overlays not dropping 2025-12-17 20:54:43 +09:00
galister a4e159f78b fmt 2025-12-17 19:34:35 +09:00
galister cd52b3cabb single set mode 2025-12-17 19:23:44 +09:00
galister 90bce4c369 static positioning to also set global 2025-12-17 16:58:13 +09:00
galister b28c402ddf fmt 2025-12-17 16:13:40 +09:00
galister e1a3471ed1 improve watch overlay layou 2025-12-17 16:13:32 +09:00
galister ea90853e56 custom panels 2025-12-17 15:54:52 +09:00
Gabriele Musco 9dbd35e8f7 feat: add X-XR-Plugin flag and X-XR-Plugin-Exec to .desktop file
This change is part of a new initiative in Envision to revamp the plugin
system. The new system is such that Envision will no longer install plugins on
its own, instead it will detect system provided plugin applications via
the X-XR-Plugin flag, and be instructed on a specific command to use
with the optional X-XR-Plugin-Exec.

This proposed specification is detailed in the following issue:
<https://gitlab.com/gabmus/envision/-/issues/250>
2025-12-17 06:29:53 +00:00
hypevhs a8c083089c Fix link to keyboard.yaml in README 2025-12-17 00:47:54 +00:00
Aleksander 2bc72d4259 Use visual social badges in README.md
[skip ci]
2025-12-17 00:47:14 +00:00
Aleksander fe017a751b
Merge pull request #297 from galister/staging
UX improvements: make toast, watch and notifications easier to read and use
2025-12-16 20:27:50 +01:00
Aleksander d6b176f23a make watch pretty
[skip ci]
2025-12-16 20:27:07 +01:00
Aleksander 326b0d710c make toasts pretty 2025-12-16 18:57:10 +01:00
galister bdc1bf87b2 sunset theme.xml in favor of globals 2025-12-16 18:55:03 +01:00
Jay 6086dcf233
osc: Add parameters for Working Sets / OVR Toolkit's Profiles (#295)
* add `lowestBattery` parameter to match the casing of other parameters

* add the following parameters:
`isEditModeActive`, `ToggleEditMode`, `currentWorkingSet`, `CurrentProfile`, and `totalWorkingSets`

* treat fully transparent overlays as "not visible"

this fixes the `isWristVisible` parameter; it was always True even when not looking at it since the watch is usually always "active", which was the only condition before.
2025-12-16 15:04:11 +00:00
galister c41c0b9b59 sbs 3d support 2025-12-16 23:12:35 +09:00
galister 9f5c0b9049 query fcitx at start 2025-12-16 04:43:00 +00:00
galister 2b3cdc3c8b fcitx: capture variant by regex 2025-12-16 04:43:00 +00:00
galister c19c9da5f0 fall back to system layout more aggressively 2025-12-16 04:43:00 +00:00
galister 19b7541049 reload system layout instead of re-using from startup 2025-12-16 04:43:00 +00:00
galister a0c9275b44 IMEs to use system layout 2025-12-16 04:43:00 +00:00
galister 1077d2606d SIGUSR1 to trigger fcitx layout change 2025-12-16 04:43:00 +00:00
galister 12e5749bda set wayvr keymap 2025-12-16 04:43:00 +00:00
galister 9c71917b2a poc keyboard layout change on wayland 2025-12-16 04:43:00 +00:00
galister c732424e7d dbus refactor 2025-12-16 04:43:00 +00:00
galister f2f02855e3 separate GuiPanel for each keyboard layout 2025-12-16 04:43:00 +00:00
galister 8418516236 wayvr: interface to set keymap 2025-12-16 04:43:00 +00:00
galister 4bd8cc1955 notifications tiny cleanup 2025-12-16 04:43:00 +00:00
Sefa Eyeoglu 3ad5c8cbfd
Delete broken asset symlinks (#290)
Ran `find -xtype l -delete`

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2025-12-14 13:22:08 +00:00
galister 41485bcc2f pipewire: log all stream change requests 2025-12-14 12:32:35 +09:00
galister 9df0bc0976 include instructions about uinput module 2025-12-14 10:49:21 +09:00
galister f3f775c06b add ::SendKey 2025-12-14 02:42:50 +09:00
galister f2bd169c22 edit mode: load disable grab state 2025-12-14 01:54:33 +09:00
galister 169c1c87f7 reduce openxr version to work with 22.04 openxr-loader 2025-12-14 01:46:07 +09:00
galister 17165123b9 sunset theme.xml in favor of globals 2025-12-14 00:34:06 +09:00
galister 5035893fab upload-artifact dnt respect working-directory 2025-12-13 14:19:03 +00:00
galister 661ad7d761 toast: limit size and enable word wrap 2025-12-13 21:59:32 +09:00
galister ff4b39069c per-window option to disable grabbing 2025-12-13 21:44:36 +09:00
galister 6793a163af adjust default screen position to be lower 2025-12-13 21:13:11 +09:00
galister 8969a76cd2 fix zero transforms getting serialized 2025-12-13 21:08:21 +09:00
Aleksander edfbb84497
Merge pull request #283 from galister/staging
Staging
2025-12-12 18:50:14 +01:00
Aleksander cf3956cd1a fix appimage wayvr-dashboard build 2025-12-12 18:36:40 +01:00
Aleksander a98f49ae7e update pl.json
[no ci]
2025-12-12 18:36:32 +01:00
galister 3ed4313a36 fix target folder paths 2025-12-12 21:43:22 +09:00
galister 4f78825e03 readme formatting 2025-12-12 21:27:55 +09:00
galister 603cdb2f2b
Merge pull request #282 from galister/next
Next
2025-12-12 12:19:44 +00:00
galister 5179158b04 fix build without wayland feature 2025-12-12 21:11:11 +09:00
galister cccc7f2614 format 2025-12-12 20:59:52 +09:00
galister 3b1c907798 clippy gone wrong 2025-12-12 20:58:02 +09:00
galister 8b4e60e221 format 2025-12-12 20:44:06 +09:00
galister e1b209410e clippy 2025-12-12 20:43:31 +09:00
galister c95e4a93f6 github actions 2025-12-12 20:38:53 +09:00
galister 8a81441645
Merge branch 'main' into next 2025-12-12 11:31:50 +00:00
galister 9c06198c12 custom labels & buttons 2025-12-12 20:30:44 +09:00
galister 97c11c6791 translations 2025-12-12 01:39:02 +09:00
galister 99b7267970 move readme 2025-12-11 23:56:20 +09:00
galister cce5e5b308 update readme 2025-12-11 23:55:35 +09:00
galister a5cacc2e70 mirrors, recenter, fix floor 2025-12-11 23:55:18 +09:00
galister 4314610244 clippy 2025-12-11 21:26:25 +09:00
galister 12524fec96 Merge branch 'main' into next 2025-12-11 21:24:16 +09:00
galister 30c8a7e3c1 edit mode ui fixes 2025-12-11 21:00:49 +09:00
galister 9c799f360d fix set/overlay persistence 2025-12-11 17:08:49 +09:00
galister d2a3b7cc63 uidev: fix when MAILBOX is not supported 2025-12-11 10:34:36 +09:00
BOT Alex 60ff340445
all bindings can have multiple bindings (#281)
fixed right hand and improved code

remove flake

forgor

forgor

removed print statemnets

Co-authored-by: BOTAlex <alex@deprived.dev>
2025-12-11 00:58:21 +00:00
galister 1a2f3b2372 uidev: fix crash when PRE_MULTIPLIED is not in supportedCompositeAlpha 2025-12-11 09:54:55 +09:00
Aleksander 67435d5fc9 src_ext 2025-12-10 18:24:32 +01:00
galister fe589e7ebe testbed to no longer use src_ext 2025-12-11 02:09:09 +09:00
galister 1724d39697 FileOrBuiltIn asset paths, theming support 2025-12-11 01:09:49 +09:00
galister cb0831223a proper toast sizing 2025-12-10 21:41:51 +09:00
galister c4b8fbd579 anyhow context is nice 2025-12-10 21:03:13 +09:00
galister 7c41a01122 rework toast to use xml 2025-12-10 20:49:39 +09:00
galister 6294ccae1c refine watch grab & hand switch 2025-12-10 18:29:13 +09:00
galister 87806a84d2 watch grabbable in edit mode 2025-12-10 17:32:43 +09:00
galister 65992ebb8d untweak wayvr overlay names for now 2025-12-10 17:21:15 +09:00
galister a8bf3dc077 raw grab while right-click modifier held 2025-12-10 17:19:32 +09:00
galister 01fea96545 refactor tasks 2025-12-10 17:12:26 +09:00
galister c6aa84f6cb fix build without wayvr feature 2025-12-10 15:39:50 +09:00
galister 5a3ae02910 wayvr: dont die if wayvr.disp not writeable 2025-12-10 15:22:49 +09:00
galister 673e263bdc fix openvr lines 2025-12-10 15:22:49 +09:00
Aleksander e76ad82c60 update all deps 2025-12-08 22:57:44 +01:00
Aleksander b0985e33af dash-frontend: toast messages, 📦📎 2025-12-08 22:42:05 +01:00
Aleksander e7746f5981 wgui: add `set_color` for Button, dash-frontend: audio_settings: button highlights 2025-12-08 09:38:04 +01:00
galister 38ba83d74d smarter normalize_path 2025-12-07 16:14:20 +09:00
Aleksander bc5075a732 Fully functional audio settings, add `sprite_src` for `<Button>` 2025-12-06 12:08:25 +01:00
galister e83997bc08 uidev: support external paths 2025-12-06 12:01:51 +09:00
galister d50b3b6da7 tweak wayvr overlay names 2025-12-06 10:36:09 +09:00
Aleksander 1d60bed361 Audio settings: Sinks and sources control fully implemented (cards wip), port `pactl_wrapper` 2025-12-05 21:30:17 +01:00
Aleksander 9767940923 Audio settings pop-up 2025-12-04 21:04:52 +01:00
Jay f54c5decb6
osc: remove `headsetBattery` parameter and change `hmdBattery` to float 0-1 to match OVR Toolkit (#278) 2025-12-01 02:42:53 +00:00
Aleksander 6b4039a764 App launcher view 2025-11-30 15:28:05 +01:00
galister e8528735c7 remove logs 2025-11-30 18:52:45 +09:00
Kresny b6998d55c1
Removed outdated Hyprland info (#277) 2025-11-30 09:36:25 +00:00
galister 33c55828af translations for watch tooltips 2025-11-30 18:33:22 +09:00
galister 6c5ab63bec watch & edit to use theme.xml; device batteries 2025-11-30 18:01:52 +09:00
galister 363c2d533c allow option_if_let_else 2025-11-30 11:42:34 +09:00
Aleksander 7d581c1561 dash-frontend: popup manager 2025-11-27 23:28:10 +01:00
Aleksander 192ffab4fd wgui: `new_pass` attrib, refactoring 2025-11-27 20:32:59 +01:00
Aleksander 9696d6730d wgui: `StyleSetRequest` 2025-11-26 22:49:50 +01:00
Aleksander 85eab33c94 fix tooltips not disappearing, clippy 2025-11-26 22:01:19 +01:00
galister d5c5d06b3a watch toolbox to support various overlay types 2025-11-26 17:16:19 +09:00
galister 3f907180f8 watch controls for edit mode 2025-11-25 23:13:14 +09:00
galister 8bd1097886 remove unnecessary layer of tab divs from edit.xml 2025-11-25 11:22:50 +09:00
Aleksander 8485639e00 add `wlx-common` lib, move `GeneralConfig` into it 2025-11-25 00:21:51 +01:00
Orion a6da79bf3d
prevent the mode from changing during a click (#273)
Fixes mouse buttons getting stuck if trigger is released in a different
mode than the initial click.
2025-11-24 05:26:44 +00:00
Orion e390634d4f
log input blocking/unblocking on trace (#274) 2025-11-24 05:26:02 +00:00
galister 2d7714d423 watch: highlight current set 2025-11-24 14:18:04 +09:00
galister 5b40032bc3 anchor grab 2025-11-19 15:48:06 +09:00
Aleksander 127cb5c8d0 wgui: refresh widgets with dirty tree state 2025-11-15 11:46:34 +01:00
Aleksander 5ce745d2b9 various_widgets: add visibility test, minor refactoring 2025-11-15 00:00:41 +01:00
galister 3daee83838 edit overlay progress 2025-11-14 17:59:17 +09:00
Aleksander 70be748da1 fix "no edit mode on global overlays" 2025-11-13 21:12:18 +01:00
Aleksander 830be58c7a style: add `display="none"` 2025-11-13 20:54:19 +01:00
Aleksander 4d4292255a rename to `timestep_alpha` 2025-11-13 20:23:27 +01:00
galister 1b0ebb8414 no edit mode on global overlays 2025-11-13 19:46:00 +09:00
galister 6ca193d1c0 fix WheelDelta regression 2025-11-13 16:32:10 +09:00
galister 595324814a opacity & additive & curvature works 2025-11-13 15:40:08 +09:00
Aleksander d435fdb473 edit.xml: Add translations 2025-11-12 20:12:40 +01:00
Aleksander 3aee4d68a3 edit: dynamic gui scale 2025-11-12 19:57:38 +01:00
Aleksander 6e11c2cf87 themes cleanup, ui improvements 2025-11-12 17:49:05 +01:00
Aleksander 6136a5aa43 clippy 2025-11-12 17:06:53 +01:00
galister adb093b725 snappy sliders 2025-11-13 00:34:38 +09:00
galister d26ddd66bd edit overlay design 2025-11-12 23:27:26 +09:00
galister 278420b2ce implement edit mode toggle 2025-11-12 20:41:23 +09:00
galister 52fb06eecc remove old gui yamls 2025-11-12 20:41:23 +09:00
galister 6b5b95bd88 refactor rendering interface, working edit overlay 2025-11-12 20:41:19 +09:00
galister 350c931749 wip: edit mode overlay 2025-11-12 20:34:01 +09:00
Aleksander afc8804aba config: Add `invert_scroll_direction` and `scroll_speed` 2025-11-11 12:11:34 +01:00
galister 6169ec9505 fix anchor not showing 2025-11-11 14:41:39 +09:00
galister bef31be9e2 persist sets between sessions 2025-11-11 11:44:57 +09:00
galister 98e5d1b93d dashboard is global 2025-11-11 09:38:17 +09:00
Aleksander a59a4c2870 text_renderer: clear VkImage before growing, implement island padding in texture atlas (fix graphical artifacts) 2025-11-08 12:08:48 +01:00
Aleksander 6f41ffe59c `SettingsIO` trait, save/load settings to/from file 2025-11-08 11:16:19 +01:00
Aleksander 71898056f3 add `WguiFontSystem`, remove `FONT_SYSTEM` singleton, custom fonts, add `Light` font weight
there are a few gzip-compressed ttf as for now, looks like variable fonts aren't parsed properly by cosmic_text. Not sure why. Also, we probably need to have a fallback for CJK characters in the future, or just fallback to the built-in ones in the OS.
2025-11-07 22:21:57 +01:00
Aleksander d2c23ac6a9 add settings: am/pm clock, opaque background, hide username 2025-11-07 19:40:38 +01:00
Aleksander 433b7f53b5 remember checked settings in memory 2025-11-06 21:12:26 +01:00
Aleksander e087eb3743 settings gui PoC 2025-11-05 22:37:07 +01:00
Aleksander 33955498cc move stuff to frontend.rs 2025-11-05 21:12:01 +01:00
galister 6406b1e694 fix wayvr dashboard not interactable 2025-10-31 19:45:17 +09:00
galister 81d2672740 fix internal events blocking custom events on the same widget 2025-10-31 19:10:13 +09:00
galister 44b9a79849 more clippy 2025-10-31 17:48:54 +09:00
galister 67017a9f54 clippy 2025-10-31 17:33:38 +09:00
galister fa562f7b12 panel: per-element interactibility 2025-10-31 17:32:10 +09:00
galister 01d11e8485 events with user data to also trigger internal listeners + toast fix 2025-10-29 19:56:58 +09:00
Aleksander bf1d02ed00 Tooltips, minor changes 2025-10-18 22:38:39 +02:00
galister 28047d218f fix showhide not remembering last set 2025-10-18 10:35:38 +09:00
galister 9c596a7eb2 fix uidev 2025-10-12 18:11:15 +09:00
galister 90eed4558f events refactor 2025-10-12 17:30:30 +09:00
Aleksander fbe1d5b09e tooltips PoC 2025-10-11 13:31:00 +02:00
Aleksander 200d5223d3 `ConstructEssentials`
i'm really out of ideas how to name another struct name with function parameters. Well, here we go - essentials.
2025-10-11 11:26:25 +02:00
Aleksander ce8cd3bce7 wgui: `WguiWindow`, open/close 2025-10-06 19:09:34 +02:00
Aleksander fc4781dcaf fix wlx build 2025-10-06 18:06:24 +02:00
Aleksander efcc41de19 wgui: event results/blocking for overlapping content, rev iterate events for root node 2025-10-05 20:11:49 +02:00
Aleksander 89c083991f wgui: pretty-print tree 2025-10-05 17:23:27 +02:00
Aleksander 5efbdce8f0 wgui: layout: fix `resize_to_parent` 2025-10-05 13:51:32 +02:00
Aleksander 3dff9c5882 wgui: Separate user and wgui assets, topmost widgets (poc) 2025-10-05 13:48:58 +02:00
galister 71d7d50e35 fix build 2025-10-05 19:38:29 +09:00
galister aa64310d96 refactor overlay windowing 2025-10-05 18:50:29 +09:00
Aleksander 40cc27f7b0 wgui: Smooth scrolling, TransformStack: fix scrollable area boundaries (mouse wheel), separate into raw_dim and visual_dim, refactoring 2025-10-04 18:40:44 +02:00
galister 231850cf73 OverlayContainer to use HopSlotMap 2025-10-03 12:52:29 +09:00
Aleksander a1edc2f0b8 scissor stack fixes, proper render & event transformations 2025-09-29 22:04:16 +02:00
Aleksander b73870236f
Merge pull request #260 from galister/next-attribs
attribs rework
2025-09-29 17:41:29 +02:00
galister 90bdf99e32 text shadow + battery display poc 2025-09-29 17:43:16 +09:00
galister a78ae55bdc attribs rework 2025-09-29 14:50:13 +09:00
galister 8c41eaa048 flag UPDATE_AFTER_BIND descriptor sets to fix validation 2025-09-28 23:00:29 +09:00
galister 0d251e9351 update deps 2025-09-28 20:16:45 +09:00
galister 995e7d8a72 Revert "hardcode watch screens for now"
This reverts commit cd18bdcea8.
2025-09-28 20:14:11 +09:00
Aleksander b5a3ba2954 dash-frontend: Application list 2025-09-28 13:13:37 +02:00
Aleksander eb12a6a319 overflow: hidden/scroll scissor support, remove depth 2025-09-25 23:21:11 +02:00
Aleksander 8f75d451e4 working scissor proof of concept 2025-09-24 21:53:43 +02:00
Aleksander 8d41d8bbd1 scissor attempt 2025-09-23 17:43:19 +02:00
Aleksander 5e6852e5d0 wgui: parser: normalize paths in <include>s, (fix rust-embed file not found in release build) 2025-09-22 14:31:49 +02:00
Aleksander 4afdde1793 UI tweaks, use B8G8R8A8_UNORM in wgui 2025-09-21 20:25:57 +02:00
Aleksander 858c5da21c uidev: make window translucent 2025-09-21 19:06:09 +02:00
Aleksander 46eb1ee00f uidev: use Mailbox swapchain presentation mode (minimize noticeable presentation latency, fix laggy window resize problems on KWin) 2025-09-21 16:13:34 +02:00
Aleksander 7a97e9dee2 wgui: prevent data copy, parser data 2025-09-21 13:39:14 +02:00
galister cd18bdcea8 hardcode watch screens for now 2025-09-21 10:49:44 +09:00
Aleksander 4f71dc6097 dash-frontend: tab titles, home screen username 2025-09-20 16:54:16 +02:00
Aleksander 1358af75e3 update all cargo crates to the newest version, unify crate versions 2025-09-20 15:28:48 +02:00
Aleksander aadf11590e wgui: use dark mode 2025-09-20 13:32:07 +02:00
Aleksander 0f82fb4144 wgui: make hover effects more responsive (remove fade-in duration, use cubic interpolation) 2025-09-20 13:10:18 +02:00
Aleksander b9e5541971 📦📎-fixes, typo fixes 2025-09-20 12:17:17 +02:00
galister cfb733de09 sorry about monster commit 2025-09-20 15:28:42 +09:00
Aleksander c6a32f4109 ParserState: add `fetch_component_by_widget_id` 2025-09-18 17:01:30 +02:00
Aleksander 7004e11aa3 wgui: attrib pairs 2025-09-17 13:16:45 +02:00
Aleksander dfec935388 wgui: component callbacks refactoring 2025-09-16 20:35:28 +02:00
Aleksander 0fdc0e3828 dash-frontend: clock, wgui: refactoring, non-panicking casts 2025-09-16 20:09:13 +02:00
Aleksander 129785daa7 wgui: customizable defaults 2025-09-16 18:32:56 +02:00
Aleksander 54767d75da dash-frontend: tabs, other fixes (desc)
- set rustfmt line width to 120 columns by default for wgui
- dashboard tabs
- wgui: `remove_children`
2025-09-15 20:37:55 +02:00
Aleksander f115d2d2cf Button: `hover_color`, `hover_border_color` 2025-09-13 13:09:33 +02:00
Aleksander 9efe298f65 dash-frontend: Use native <Button>s, children support 2025-09-13 12:49:36 +02:00
Aleksander c2628c0a15 uidev: re-format code 2025-09-13 12:18:27 +02:00
Aleksander 1d8f8aca3e move uidev dashboard to `dash-frontend` crate 2025-09-13 12:16:38 +02:00
galister 3f76dbe9cc add missing assets 2025-08-23 03:49:07 +09:00
Aleksander 14de2dd0b2 Update documentation 2025-08-17 22:00:19 +02:00
Aleksander cf0dd55a0f wgui: make component names PascalCase 2025-08-17 21:03:17 +02:00
Aleksander d54f74ed3c wgui: custom attribs 2025-08-16 22:55:40 +02:00
Aleksander 481db7f23c refactor: pedantic cargo clippy, do not use Results for always-succeeding functions 2025-08-16 21:27:47 +02:00
Aleksander 1f8960033c wgui: parser: `ParseDocumentParams` struct 2025-08-16 20:15:51 +02:00
Sorché fbd5189521
[Feature] Add left-handed mouse emulation for swapped button handling (#249)
* Adds left handed mouse mode config

* cleanup
2025-08-13 22:09:39 +00:00
Aleksander df35dba24f wgui: checkbox component 2025-08-13 19:42:48 +02:00
Aleksander faec8866c5 wgui: button: pressed state visual feedback 2025-08-13 17:32:40 +02:00
Aleksander a79ed0839b wgui: components base, anyhow event listener callbacks, 📦📎-fixes, typo fixes 2025-08-13 17:10:00 +02:00
Shiloh Fen dd5e608fd1
Add Homebrew installation instructions (#244) 2025-08-12 08:35:18 +00:00
galister 6e77a93cf5 update wlx-capture to fix cosmic resolution issue 2025-08-12 17:34:05 +09:00
SpookySkeletons a7996d7db8
fix: KDE vertical monitor fix (#247) 2025-08-12 08:30:42 +00:00
Aleksander 93a3fee349 wgui: interactable components, rename `TextLabel` -> `WidgetLabel` 2025-08-10 11:46:01 +02:00
Aleksander 91e584383f wgui: components refactoring, id handles 2025-08-09 13:23:49 +02:00
Aleksander 17b4eaa1e4 wgui: i18n: use fallback 2025-08-03 12:03:23 +02:00
galister b2902f8f7f parser: ignore_in_mode attribute; watch additions 2025-08-03 17:26:34 +09:00
Aleksander eaa81450b5 wgui: basic i18n support, refactoring: use `LayoutState`, translation framework (LLM-based generator) 2025-08-02 23:31:23 +02:00
Aleksander 4e46c45bcf wgui: Refactoring, various changes (see desc)
- use parking_lot for mutex (less restrictive and easier to use)
- simplify event callbacks and widget type casting
- defer component initialization at start (required for setting the initial state of sliders)
- fix non-working scroll events
- update testbed.xml
- replace slider with the real one in bar.xml
- show slider text on its handle
2025-07-29 22:12:01 +02:00
Aleksander f950273a2d Merge remote-tracking branch 'origin/main' into next 2025-07-29 20:29:15 +02:00
xytovl afb71b1985
Add X-WiVRn-VR category in .desktop file (#237) 2025-07-26 16:57:24 +00:00
galister 5e5d64e89d wayland: only consider current output mode 2025-07-17 04:56:27 +09:00
Karl Essinger 9dceaf30e5
Update Envision instructions (#231)
* Update Envision instructions

* Update README.md
2025-07-11 20:09:24 +00:00
Aleksander 77421b4e82 slider events and value setting 2025-07-07 21:58:41 +02:00
Aleksander 857c5ec865 listener handles, auto-clean destroyed listeners, minor refactor 2025-07-06 20:53:40 +02:00
Aleksander 92444bb5c4 simplify and optimize event states, deduplication 2025-07-02 22:55:42 +02:00
Aleksander 283d7fd64e separate CallbackData and CallbackDataCommon, refactoring 2025-07-02 22:06:19 +02:00
galister 40f50a147b bar + overlaybackend refactor 2025-07-03 02:42:49 +09:00
Aleksander 9bbc7b2d22 slider animations, ui tweaks 2025-06-28 23:11:37 +02:00
Aleksander 9d0c0f015c sliders (wip), fix wlx build 2025-06-28 19:28:05 +02:00
Aleksander 28d58fef59 implement listeners for Button component back 2025-06-28 18:30:38 +02:00
Aleksander 2420e8007c parser refactoring 2025-06-28 17:39:53 +02:00
galister 247c51c3b7 sprite colors 2025-06-28 19:28:28 +09:00
galister d7c31d8699 minor toast tweak 2025-06-28 17:40:59 +09:00
galister afb4919970 refactor events; watch prep work 2025-06-27 04:16:24 +09:00
Tayou f4fbb416da
Add OVR Toolkit OSC Parameters (#219)
* Add OVR Toolkit OSC Parameters

see: https://wiki.ovrtoolkit.co.uk/#/OSC?id=osc-integration

* max battery is probably 1.0

* cargo fmt & apply suggestion

* forgor rust is snake_case & 1f32
2025-06-26 08:41:34 +00:00
galister 1215a50324 fix scaling, refactors 2025-06-26 04:22:40 +09:00
galister fc294e6f9a SharedAtlas is not pub 2025-06-25 21:29:33 +09:00
galister f9475248d3 wgui: widget_node_map to use more performant SecondaryMap 2025-06-25 21:13:16 +09:00
galister 158562031f wgui: introduce SharedContext to share between Contexts 2025-06-25 21:06:05 +09:00
galister 44b6da8967 separate svgs for controllers 2025-06-21 21:13:51 +09:00
galister cd05818465 widget event handling into macro 2025-06-21 21:13:33 +09:00
galister 9759dff8b9 move uidev to workspace root 2025-06-21 17:39:28 +09:00
galister 814700cbff actually call handle_invoke 2025-06-20 22:05:33 +09:00
Aleksander a2a7c71c22 Animated transforms on hover 2025-06-20 13:06:04 +02:00
galister df320a5c7b less refcells; haptics 2025-06-20 17:47:39 +09:00
Aleksander 887a2f6bde wgui: add <macro> support, propagate variables into ParserResult 2025-06-20 00:27:25 +02:00
galister b35020cd80 empty rect for watch placeholder 2025-06-20 06:00:31 +09:00
galister d9b3b99e0d keyboard works 2025-06-20 05:31:37 +09:00
galister b9edb75867 add missing anchor.xml 2025-06-20 02:49:54 +09:00
galister 10aab5451f xml anchor + GuiPanel minor refactor 2025-06-20 02:40:27 +09:00
galister d1e3f51b8a swapchain sizes from content size 2025-06-20 01:40:09 +09:00
galister 6a77b302c9 measure root node of layout 2025-06-20 01:19:28 +09:00
galister 44a9faac14 keyboard progress & refactors 2025-06-20 00:48:37 +09:00
galister e0e30dedfb svg key template to be in line with others 2025-06-19 07:17:44 +09:00
galister 775310c614 svg key symbols 2025-06-19 07:14:34 +09:00
Aleksander 7d7ab8055d fix keyboard layout 2025-06-18 23:28:03 +02:00
galister 0abcf251a3 somewhat fix keyboard, but not completely 2025-06-19 05:50:42 +09:00
Aleksander 09ea4f3096 wgui: parser: template injection support 2025-06-18 21:30:32 +02:00
Aleksander b9e462f88b wgui: move parser.rs into a separate directory 2025-06-18 20:07:13 +02:00
Aleksander 021f98973d wgui: ParserResult struct 2025-06-18 19:57:36 +02:00
galister a883e580b6 workspace deps for wlx-capture 2025-06-19 02:41:08 +09:00
Aleksander de5daf4b90 wgui: update xmls 2025-06-18 19:31:30 +02:00
galister a03a855f19 wip: swapchain sizes ditcated by wgui 2025-06-19 02:21:44 +09:00
Aleksander e09783791f wgui: fully working templates! 2025-06-18 19:08:46 +02:00
galister a14c22568c clippy 2025-06-18 19:42:05 +09:00
galister 467b0cc33d recreate swapchain on size change 2025-06-18 19:23:44 +09:00
galister 66ac622136 bar + watch 2025-06-18 19:03:21 +09:00
Aleksander 231b8bc3e1 wgui: use ouroboros self-ref struct 2025-06-17 22:54:21 +02:00
Aleksander 8c4eb4bd49 wgui: Parser: <template> initial support (wip) 2025-06-17 22:06:17 +02:00
galister 9c1bd5b4f2 wgui: reuse WGfxPass on text & rect renderers 2025-06-18 04:18:07 +09:00
galister 1b7f9c8843 reusing passes needs SimultaneousUse 2025-06-18 03:14:21 +09:00
galister 76288f73c5 reuse wgfxpass on wayvr+screen 2025-06-18 03:04:51 +09:00
galister 6f4ea99fff xr lines: reuse pass & buffer 2025-06-18 02:02:45 +09:00
Aleksander cc26831e35 rust 2024 2025-06-17 18:29:57 +02:00
galister f05d3a8251 new workspace 2025-06-18 01:14:04 +09:00
galister 95f2ae4296 wip: wgui backend 2025-06-18 01:06:53 +09:00
galister 37bb0bb281
Update bug-report.md 2025-06-08 20:20:44 +00:00
galister 2ea8b12c15 Revert "separate floor offset from space drag transform (#218)"
This reverts commit b0f5e23ffd.
2025-06-08 08:52:49 +09:00
galister 9c0fd4ec21 go back to linked openxr 2025-06-01 07:45:30 +09:00
galister 2347d4e5aa fix errors 2025-05-30 22:23:24 +09:00
galister f29364d772 headless mode 2025-05-30 22:14:22 +09:00
Sapphire b0f5e23ffd
separate floor offset from space drag transform (#218)
Closes #163
2025-05-24 23:42:17 +00:00
Chris D af45138add
Improve default WMR OpenXR bindings (#213)
* Bring back using dpad for click modifiers

* Use system button for show_hide on WMR controllers

---------

Co-authored-by: hare_ware <3469405-hare_ware@users.noreply.gitlab.com>
2025-05-16 20:01:53 +00:00
James Hogan b543a6890e
Update openxrs to fix jsoncpp compilation error (#215)
Update openxrs to get the fix for a cmake error: "requires target
'jsoncpp_interface' that is not in any export set" [1], and update call
to create_space() to take an API change [2] into account.

[1] https://github.com/Ralith/openxrs/issues/148
[2] d8ea5553d5
2025-05-16 19:22:22 +00:00
galister f85e6088ce use prepare env script for all actions 2025-05-14 11:04:44 +02:00
galister 4897c93382 install libxcb-glx0 for CI 2025-05-14 11:04:44 +02:00
galister 938948ae44 fix upright screens while attempting to not break COSMIC 2025-05-14 11:04:44 +02:00
galister c44a998c67 add flatpak manifest 2025-05-14 11:04:44 +02:00
galister eef80eae3a
Bundle WayVR Dashboard into wlx, find wayvr-dashboard executable in AppImage (if exists) (#208) (#210)
Co-authored-by: Aleksander <aleksander@oo8.dev>
2025-05-10 08:03:40 +00:00
galister a221734e23 improve logging around wayland/x11 init 2025-05-10 16:52:35 +09:00
galister ed5b0307d7 debug print on runtime errors 2025-05-10 16:13:37 +09:00
Aleksander 6e08b7f3af
Merge pull request #206 from olekolek1000/main
WayVR: Use `wayvr-dashboard` as the default executable if it's not set
2025-05-06 16:18:36 +02:00
Aleksander de56c99e36 WayVR: Use `wayvr-dashboard` as the default executable if it's not set 2025-05-06 16:06:12 +02:00
galister f6f330cedd wayvr: premultiplied glClear 2025-05-02 03:39:28 +09:00
Aleksander 7a68c3eec0
WayVR: Use eglGetPlatformDisplayEXT if available, cargo clippy warning fixes (#205) 2025-05-01 18:08:07 +00:00
galister fbb16eccf6 relative positioning rework 2025-05-02 02:39:29 +09:00
galister 96a05d0835 get_wayvr unwrap was not safe after all 2025-05-01 05:43:14 +09:00
Aleksander 6b3f091552
WayVR: Minor refactoring (#203)
Use iterators instead of closures.
2025-04-29 22:49:48 +00:00
Aleksander 9fb1d63477
Merge pull request #202 from olekolek1000/main
/tmp/wlx.log fix (Fixes #201)
2025-04-25 22:42:41 +02:00
Aleksander 7bf4f99e90 /tmp/wlx.log fix (Fixes #201) 2025-04-25 22:28:44 +02:00
galister 878bc4bf53 wayvr: fix keyboard modifiers of different pointer modes 2025-04-25 17:07:15 +09:00
galister 0152194278
Update bug-report.md 2025-04-24 16:53:39 +00:00
Aleksander 7c8a29549e
Merge pull request #198 from olekolek1000/main
WayVR: Minor refactoring, fix panic after dropping an overlay
2025-04-23 21:37:27 +02:00
Aleksander 71ad1f043f WayVR: Minor refactoring, fix panic after dropping an overlay 2025-04-23 21:14:46 +02:00
galister 33354935f0 fix mirrors on openvr 2025-04-22 04:48:33 +09:00
galister 2620a791b9 fix mirrors never popping up 2025-04-22 04:07:32 +09:00
Aleksander 332d7653d8
Merge pull request #195 from olekolek1000/main
WayVR: Automatically fallback to software blitting in case if dmabuf initialization has failed
2025-04-17 21:24:50 +02:00
Aleksander 9c9f744412 WayVR: Automatically fallback to software blitting in case if dmabuf initialization has failed, fix `cargo fmt` errors 2025-04-17 21:14:00 +02:00
galister 9f2f3727aa CI: run the clippy+fmt action on all PRs 2025-04-16 19:02:07 +09:00
galister 04063cd60b CI: fix sccache 2025-04-16 18:34:40 +09:00
galister adc96ab1b5 update libmonado 2025-04-15 15:59:15 +09:00
Aleksander d6c106c654
Merge pull request #194 from olekolek1000/main
WayVR: Update wayvr.yaml
2025-04-14 22:55:20 +02:00
Aleksander c117b44c54 WayVR: Update wayvr.yaml
WayVR Dashboard doesn't need this environment variable anymore since version 0.3.3, it's set automatically.

[skip ci]
2025-04-14 22:54:35 +02:00
galister bcc9f5d277 Release 25.4.2 2025-04-12 18:04:00 +09:00
galister 5723d668e3 add issue template 2025-04-11 21:33:51 +09:00
Orion 1ae50a35ec
add basic input blocking through libmonado (#190) 2025-04-11 11:14:09 +00:00
AdiMCS 5b23de0599
Add default space_reset binding for all controllers (#191)
* Converted tabs to spaces for consistency

* Added default space_reset binding as space_drag's double click variant for all controllers

* Fixed duplicate space_resets
2025-04-10 22:49:58 +00:00
galister cdbe3c4ad3 openvr lines are dirty by default 2025-04-11 05:12:02 +09:00
galister 412f199f91 openvr: native is srgb, set image_view for lines 2025-04-11 04:41:04 +09:00
Aleksander 4e30bb8cbe
WayVR: doc: Rename executable name in the wayvr.yaml (#192)
[skip ci]
2025-04-10 19:30:44 +00:00
galister 45e53c15a3 steamvr staging texture to use native_format 2025-04-11 04:14:27 +09:00
galister 21a4797d2a update wlx-capture 2025-04-11 02:23:01 +09:00
galister a8ecc973a4 use srgb for openxr, linear for openvr 2025-04-11 02:13:02 +09:00
galister f12d151abf workaround attempt for cosmic desktop 2025-04-11 02:05:11 +09:00
galister 5ca634b552 Release 25.4.1 2025-04-10 05:11:24 +09:00
galister 409b89585e release native binary as well as appimage 2025-04-10 05:07:42 +09:00
galister 92c59850b6 only run clippy on default features 2025-04-08 19:59:23 +09:00
galister bffb4c12cf fix build with non-default features 2025-04-08 19:52:34 +09:00
galister feac111949 CI to cover clippy + uidev 2025-04-08 19:25:11 +09:00
galister f13a473048 use multi-threaded capture if vk queues ≥ 2 2025-04-08 00:49:34 +09:00
galister b2a7d3c4cb use-bigger-hammer style fix for wayvr dmabufs 2025-04-07 07:56:01 +09:00
galister 4cb12a2a01 Revert "WayVR: Vulkano dmabuf attempt"
This reverts commit 45ab38c310.
2025-04-07 07:34:56 +09:00
galister b830c826a0 separate transfer and capture queues 2025-04-07 05:41:02 +09:00
Aleksander 45ab38c310 WayVR: Vulkano dmabuf attempt 2025-04-06 22:03:40 +02:00
galister bc6c510af1 get rid of cstr dependency 2025-04-07 04:46:47 +09:00
galister 3dd31ec468 fix mouse renderer 2025-04-07 03:38:16 +09:00
galister 60850d8d70 get rid of once_cell 2025-04-07 03:31:58 +09:00
galister 7ac3072506 move drm modifiers to WlxGraphics 2025-04-07 03:06:22 +09:00
galister 2952a3cea1 update vulkano 2025-04-07 02:33:40 +09:00
Aleksander bb2f8380fd WayVR: Fix frame_meta returning `None` 2025-04-06 19:03:29 +02:00
galister 1deae19f92 refactors & clippy recommendations 2025-04-07 00:58:03 +09:00
galister 3365aefc13 update deps 2025-04-06 22:15:22 +09:00
galister cf29682e66 rework rendering backend 2025-04-06 22:12:56 +09:00
699 changed files with 76101 additions and 21136 deletions

1
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1 @@
open_collective: wayvr-org

49
.github/ISSUE_TEMPLATE/bug-report.md vendored Normal file
View File

@ -0,0 +1,49 @@
---
name: Bug Report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
## Description
<!--
If this is a regression, please mention which version was working previously.
-->
## System Info
**Linux Distribution**:
<!-- Paste output of `echo $XDG_CURRENT_DESKTOP`, optionally add version -->
**Desktop Environment**:
<!-- Paste output of `uname -r` -->
**Kernel version**:
**VR Runtime**:
- [ ] Monado
- [ ] WiVRn
- [ ] ALVR
- [ ] SteamLink
- [ ] SteamVR (not SteamLink)
<!-- Run `vulkaninfo --summary` and paste the devices section from the bottom. -->
**GPU models and driver versions**:
## Overlay Logs
<!-- Start the overlay from terminal, with additional environment variables:
AppImage:
RUST_BACKTRACE=full RUST_LOG=debug /path/to/WayVR.AppImage
System or AUR package:
RUST_BACKTRACE=full RUST_LOG=debug wayvr
Reproduce the issue once more, while WayVR is running from the terminal.
Upload the log file from: /tmp/wayvr.log
-->

View File

@ -0,0 +1,28 @@
name: Check All Features
on:
pull_request:
branches: [ "!main" ]
env:
CARGO_TERM_COLOR: always
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
jobs:
build:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: ./wayvr
steps:
- uses: actions/checkout@v4
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.9
- name: Prepare Environment
run: |
../.github/workflows/scripts/appimage_prepare_env.sh
- name: Build
run: cargo build --verbose --all-features
- name: Run tests
run: cargo test --verbose --all-features

View File

@ -5,48 +5,35 @@ on:
branches:
- 'main'
- 'staging'
- 'test-*'
env:
APPDIR: WlxOverlay-S.AppDir
APPDIR: WayVR.AppDir
CARGO_TERM_COLOR: always
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
jobs:
build_appimage:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
defaults:
run:
working-directory: ./wayvr
steps:
- uses: actions/checkout@v3
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.3
uses: mozilla-actions/sccache-action@v0.0.9
- name: Prepare Environment
run: |
sudo add-apt-repository -syn universe
sudo add-apt-repository -syn ppa:pipewire-debian/pipewire-upstream || sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 25088A0359807596
sudo apt-get update
sudo apt-get install -y fuse cmake pkg-config fontconfig libasound2-dev libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libopenxr-dev libfontconfig-dev libdbus-1-dev libpipewire-0.3-0 libpipewire-0.3-dev libspa-0.2-dev libx11-6 libxext6 libxrandr2 libx11-dev libxext-dev libxrandr-dev libopenvr-dev libopenvr-api1 libwayland-dev libegl-dev
rustup update
test -f linuxdeploy-x86_64.AppImage || wget -q "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
chmod +x linuxdeploy-x86_64.AppImage
test -d ${APPDIR} && rm -rf ${APPDIR}
mkdir -p ${APPDIR}/usr/bin
../.github/workflows/scripts/appimage_prepare_env.sh
- name: Cargo Build
run: |
cargo build --release
mv target/release/wlx-overlay-s ${APPDIR}/usr/bin
chmod +x ${APPDIR}/usr/bin/wlx-overlay-s
../.github/workflows/scripts/appimage_build_wlx.sh
- name: Package AppImage
run: |
export VERSION=$GITHUB_REF_NAME
./linuxdeploy-x86_64.AppImage -dwlx-overlay-s.desktop -iwlx-overlay-s.png --appdir=${APPDIR} --output appimage --exclude-library '*libpipewire*'
mv WlxOverlay-S-$VERSION-x86_64.AppImage WlxOverlay-S-x86_64.AppImage
../.github/workflows/scripts/appimage_package.sh
- name: Upload AppImage
uses: actions/upload-artifact@v4
with:
name: WlxOverlay-S-${{ github.ref_name }}-x86_64.AppImage
path: ./WlxOverlay-S-x86_64.AppImage
name: WayVR-${{ github.ref_name }}-x86_64.AppImage
path: ./wayvr/WayVR-x86_64.AppImage

32
.github/workflows/build-default.yml vendored Normal file
View File

@ -0,0 +1,32 @@
name: Check Default
on:
pull_request:
#branches: [ "!main" ]
env:
CARGO_TERM_COLOR: always
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
jobs:
build:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: ./wayvr
steps:
- uses: actions/checkout@v4
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.9
- name: Prepare Environment
run: |
../.github/workflows/scripts/appimage_prepare_env.sh
- name: Run cargo fmt
run: cargo fmt --check
- name: Build
run: cargo build --verbose
- name: Run clippy
run: cargo clippy --no-deps
- name: Run tests
run: cargo test --verbose

View File

@ -1,28 +0,0 @@
name: Check Full
on:
pull_request:
branches: [ "!main" ]
env:
CARGO_TERM_COLOR: always
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.3
- name: Prepare Environment
run: |
sudo add-apt-repository -syn universe
sudo add-apt-repository -syn ppa:pipewire-debian/pipewire-upstream || sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 25088A0359807596
sudo apt-get update -y
sudo apt-get install -y fuse cmake pkg-config fontconfig libasound2-dev libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libopenxr-dev libfontconfig-dev libdbus-1-dev libpipewire-0.3-0 libpipewire-0.3-dev libspa-0.2-dev libx11-6 libxext6 libxrandr2 libx11-dev libxext-dev libxrandr-dev libopenvr-dev libopenvr-api1 libwayland-dev libegl-dev
- name: Build
run: cargo build --verbose
- name: Run tests
run: cargo test --verbose

View File

@ -11,17 +11,17 @@ env:
jobs:
build:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
defaults:
run:
working-directory: ./wayvr
steps:
- uses: actions/checkout@v4
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.3
uses: mozilla-actions/sccache-action@v0.0.9
- name: Prepare Environment
run: |
sudo add-apt-repository -syn universe
sudo add-apt-repository -syn ppa:pipewire-debian/pipewire-upstream || sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 25088A0359807596
sudo apt-get update -y
sudo apt-get install -y fuse cmake pkg-config fontconfig libasound2-dev libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libopenxr-dev libfontconfig-dev libdbus-1-dev libpipewire-0.3-0 libpipewire-0.3-dev libspa-0.2-dev libx11-6 libxext6 libxrandr2 libx11-dev libxext-dev libxrandr-dev libopenvr-dev libopenvr-api1
../.github/workflows/scripts/appimage_prepare_env.sh
- name: Build
run: cargo build --verbose --no-default-features --features=wayland,openvr
- name: Run tests

View File

@ -1,28 +0,0 @@
name: Check Wayland+OpenXR+OpenVR+WayVR
on:
pull_request:
#branches: [ "main" ]
env:
CARGO_TERM_COLOR: always
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.3
- name: Prepare Environment
run: |
sudo add-apt-repository -syn universe
sudo add-apt-repository -syn ppa:pipewire-debian/pipewire-upstream || sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 25088A0359807596
sudo apt-get update -y
sudo apt-get install -y fuse cmake pkg-config fontconfig libasound2-dev libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libopenxr-dev libfontconfig-dev libdbus-1-dev libpipewire-0.3-0 libpipewire-0.3-dev libspa-0.2-dev libx11-6 libxext6 libxrandr2 libx11-dev libxext-dev libxrandr-dev libopenvr-dev libopenvr-api1 libwayland-dev libegl-dev
- name: Build
run: cargo build --verbose --no-default-features --features=wayland,openxr,openvr,wayvr
- name: Run tests
run: cargo test --verbose --no-default-features --features=wayland,openxr,openvr,wayvr

View File

@ -11,17 +11,17 @@ env:
jobs:
build:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
defaults:
run:
working-directory: ./wayvr
steps:
- uses: actions/checkout@v4
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.3
uses: mozilla-actions/sccache-action@v0.0.9
- name: Prepare Environment
run: |
sudo add-apt-repository -syn universe
sudo add-apt-repository -syn ppa:pipewire-debian/pipewire-upstream || sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 25088A0359807596
sudo apt-get update -y
sudo apt-get install -y fuse cmake pkg-config fontconfig libasound2-dev libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libopenxr-dev libfontconfig-dev libdbus-1-dev libpipewire-0.3-0 libpipewire-0.3-dev libspa-0.2-dev libx11-6 libxext6 libxrandr2 libx11-dev libxext-dev libxrandr-dev libopenvr-dev libopenvr-api1
../.github/workflows/scripts/appimage_prepare_env.sh
- name: Build
run: cargo build --verbose --no-default-features --features=wayland,openxr
- name: Run tests

View File

@ -11,17 +11,17 @@ env:
jobs:
build:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
defaults:
run:
working-directory: ./wayvr
steps:
- uses: actions/checkout@v4
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.3
uses: mozilla-actions/sccache-action@v0.0.9
- name: Prepare Environment
run: |
sudo add-apt-repository -syn universe
sudo add-apt-repository -syn ppa:pipewire-debian/pipewire-upstream || sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 25088A0359807596
sudo apt-get update -y
sudo apt-get install -y fuse cmake pkg-config fontconfig libasound2-dev libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libopenxr-dev libfontconfig-dev libdbus-1-dev libpipewire-0.3-0 libpipewire-0.3-dev libspa-0.2-dev libx11-6 libxext6 libxrandr2 libx11-dev libxext-dev libxrandr-dev libopenvr-dev libopenvr-api1
../.github/workflows/scripts/appimage_prepare_env.sh
- name: Build
run: cargo build --verbose --no-default-features --features=x11,openvr
- name: Run tests

View File

@ -11,17 +11,17 @@ env:
jobs:
build:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
defaults:
run:
working-directory: ./wayvr
steps:
- uses: actions/checkout@v4
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.3
uses: mozilla-actions/sccache-action@v0.0.9
- name: Prepare Environment
run: |
sudo add-apt-repository -syn universe
sudo add-apt-repository -syn ppa:pipewire-debian/pipewire-upstream || sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 25088A0359807596
sudo apt-get update -y
sudo apt-get install -y fuse cmake pkg-config fontconfig libasound2-dev libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libopenxr-dev libfontconfig-dev libdbus-1-dev libpipewire-0.3-0 libpipewire-0.3-dev libspa-0.2-dev libx11-6 libxext6 libxrandr2 libx11-dev libxext-dev libxrandr-dev libopenvr-dev libopenvr-api1
../.github/workflows/scripts/appimage_prepare_env.sh
- name: Build
run: cargo build --verbose --no-default-features --features=x11,openxr
- name: Run tests

View File

@ -6,51 +6,39 @@ on:
- 'v**'
env:
APPDIR: WlxOverlay-S.AppDir
APPDIR: WayVR.AppDir
CARGO_TERM_COLOR: always
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
jobs:
make_release:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
defaults:
run:
working-directory: ./wayvr
steps:
- uses: actions/checkout@v3
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.3
uses: mozilla-actions/sccache-action@v0.0.9
- name: Prepare Environment
run: |
sudo add-apt-repository -syn universe
sudo add-apt-repository -syn ppa:pipewire-debian/pipewire-upstream || sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 25088A0359807596
sudo apt-get update
sudo apt-get install -y fuse cmake pkg-config fontconfig libasound2-dev libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libopenxr-dev libfontconfig-dev libdbus-1-dev libpipewire-0.3-0 libpipewire-0.3-dev libspa-0.2-dev libx11-6 libxext6 libxrandr2 libx11-dev libxext-dev libxrandr-dev libopenvr-dev libopenvr-api1 libwayland-dev libegl-dev
rustup update
test -f linuxdeploy-x86_64.AppImage || wget -q "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
chmod +x linuxdeploy-x86_64.AppImage
test -d ${APPDIR} && rm -rf ${APPDIR}
mkdir -p ${APPDIR}/usr/bin
../.github/workflows/scripts/appimage_prepare_env.sh
- name: Cargo Build
run: |
cargo build --release
mv target/release/wlx-overlay-s ${APPDIR}/usr/bin
chmod +x ${APPDIR}/usr/bin/wlx-overlay-s
../.github/workflows/scripts/appimage_build_wlx.sh
- name: Package AppImage
run: |
export VERSION=$GITHUB_REF_NAME
./linuxdeploy-x86_64.AppImage -dwlx-overlay-s.desktop -iwlx-overlay-s.png --appdir=${APPDIR} --output appimage --exclude-library '*libpipewire*'
mv WlxOverlay-S-$VERSION-x86_64.AppImage WlxOverlay-S-x86_64.AppImage
../.github/workflows/scripts/appimage_package.sh
- name: Build Wayvrctl
run: |
cd ../wayvrctl
cargo build --release
- name: Make tarball
run: |
pip install portage pycargoebuild
wget https://github.com/gentoo/gentoo/raw/refs/heads/master/metadata/license-mapping.conf
mkdir dist
pycargoebuild --distdir dist --license-mapping license-mapping.conf --crate-tarball --crate-tarball-path wlx-overlay-s-crates.tar.xz
cargo vendor > vendor-config.toml
mv vendor-config.toml vendor
tar --xz -cf vendor.tar.xz vendor
- name: Create Release
id: create_release
uses: actions/create-release@v1
@ -58,26 +46,46 @@ jobs:
GITHUB_TOKEN: ${{ secrets.RELEASE_KEY }}
with:
tag_name: ${{ github.ref_name }}
release_name: WlxOverlay-S ${{ github.ref_name }}
release_name: WayVR ${{ github.ref_name }}
draft: true
prerelease: false
- name: Upload ELF
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_KEY }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./target/release/wayvr
asset_name: wayvr
asset_content_type: application/octet-stream
- name: Upload WayVRCtl
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_KEY }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./target/release/wayvrctl
asset_name: wayvrctl
asset_content_type: application/octet-stream
- name: Upload AppImage
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_KEY }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./WlxOverlay-S-x86_64.AppImage
asset_name: WlxOverlay-S-${{ github.ref_name }}-x86_64.AppImage
asset_path: ./wayvr/WayVR-x86_64.AppImage
asset_name: WayVR-${{ github.ref_name }}-x86_64.AppImage
asset_content_type: application/octet-stream
- name: Upload crates tarball
- name: Upload vendor tarball
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_KEY }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./wlx-overlay-s-crates.tar.xz
asset_name: WlxOverlay-S-${{ github.ref_name }}-crates.tar.xz
asset_path: ./wayvr/vendor.tar.xz
asset_name: vendor.tar.xz
asset_content_type: application/x-gtar

View File

@ -0,0 +1,4 @@
#!/bin/sh
cargo build --release
chmod +x ../target/release/wayvr
cp ../target/release/wayvr ${APPDIR}/usr/bin

View File

@ -0,0 +1,4 @@
#!/bin/sh
export VERSION=$GITHUB_REF_NAME
./linuxdeploy-x86_64.AppImage -dwayvr.desktop -iwayvr.png --appdir=${APPDIR} --output appimage --exclude-library '*libpipewire*'
mv WayVR-$VERSION-x86_64.AppImage WayVR-x86_64.AppImage

View File

@ -0,0 +1,13 @@
#!/bin/sh
sudo apt-get update
sudo apt-get install -y fuse cmake pkg-config fontconfig libasound2-dev libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libopenxr-dev libfontconfig-dev libdbus-1-dev libpipewire-0.3-0 libpipewire-0.3-dev libspa-0.2-dev libx11-6 libxext6 libxrandr2 libx11-dev libxext-dev libxrandr-dev libopenvr-dev libopenvr-api1 libwayland-dev libegl-dev libxcb-glx0 libxcb-glx0-dev
rustup update
if [ "$APPDIR" != "" ]; then
test -f linuxdeploy-x86_64.AppImage || wget -q "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
chmod +x linuxdeploy-x86_64.AppImage
test -d ${APPDIR} && rm -rf ${APPDIR}
mkdir -p ${APPDIR}/usr/bin
fi

4
.gitignore vendored
View File

@ -1,2 +1,6 @@
/target
.gdb_history
.vscode
.cargo
scripts/translator/node_modules
*/Cargo.lock

5030
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,116 +1,60 @@
[workspace]
resolver = "3"
members = [
"dash-frontend",
"scripts/prost_build",
"uidev",
"wayvr",
"wayvr-ipc",
"wayvrctl",
"wgui",
"wlx-capture",
"wlx-common",
]
[workspace.dependencies]
anyhow = "1.0.100"
clap = { version = "4.5.53", features = ["derive"] }
glam = { version = "0.30.9", features = ["mint", "serde"] }
idmap = "0.2.2"
idmap-derive = "0.2.22"
log = "0.4.29"
regex = "1.12.2"
rust-embed = "8.9.0"
serde = { version = "1", features = ["derive"] }
serde_json = "1.0.145"
slotmap = "1.1.1"
smol = "2.0.2"
strum = { version = "0.27.2", features = ["derive"] }
uuid = { version = "1.19.0", features = ["fast-rng", "v4", "serde"] }
vulkano = { version = "0.35.2", default-features = false, features = [
"macros",
] }
vulkano-shaders = "0.35.0"
wayland-client = { version = "0.31.11" }
xdg = "3.0.0"
[patch.crates-io]
vulkano = { git = "https://github.com/galister/vulkano.git", rev = "cf7f92867928a56ce16b376037c1120f2b167678" }
[profile.dev]
opt-level = 1
debug = true
strip = "none"
debug-assertions = true
incremental = true
# to be used in case if you don't want debug features
# (faster incremental compilation, about 15x smaller binary size compared to dev)
# --profile=plain
[profile.plain]
inherits = "dev"
opt-level = 1
debug = false
strip = true
debug-assertions = true
incremental = true
[profile.release-with-debug]
inherits = "release"
debug = true
[package]
name = "wlx-overlay-s"
version = "25.4.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1.0.89"
ash = "^0.37.2"
chrono = "0.4.38"
chrono-tz = "0.10.0"
clap = { version = "4.5.6", features = ["derive"] }
config = "0.14.0"
cstr = "0.2.12"
ctrlc = { version = "3.4.4", features = ["termination"] }
dbus = { version = "0.9.7" }
fontconfig-rs = "0.1.1"
freetype-rs = "0.36.0" # latest version supported on ubuntu 22.04
futures = "0.3.30"
glam = { version = "0.29.2", features = ["approx", "mint", "serde"] }
idmap = { version = "0.2.21", features = ["serde"] }
idmap-derive = "0.1.2"
input-linux = "0.7.0"
json = { version = "0.12.4", optional = true }
json5 = "0.4.1"
libc = "0.2.155"
log = "0.4.21"
once_cell = "1.19.0"
openxr = { git = "https://github.com/galister/openxrs", rev = "af4a55d", features = [
"linked",
"mint",
], optional = true }
ovr_overlay = { features = [
"ovr_input",
"ovr_system",
], git = "https://github.com/galister/ovr_overlay_oyasumi", optional = true }
regex = "1.10.4"
rodio = { version = "0.20.1", default-features = false, features = [
"wav",
"hound",
] }
rosc = { version = "0.10.1", optional = true }
serde = { version = "1.0.203", features = ["derive", "rc"] }
serde_json = "1.0.117"
serde_yaml = "0.9.34"
smallvec = "1.13.2"
strum = { version = "0.26.2", features = ["derive"] }
sysinfo = { version = "0.32.0" }
thiserror = "2.0.3"
vulkano = { git = "https://github.com/vulkano-rs/vulkano", rev = "94f50f1" }
vulkano-shaders = { git = "https://github.com/vulkano-rs/vulkano", rev = "94f50f1" }
wlx-capture = { git = "https://github.com/galister/wlx-capture", tag = "v0.4.2", default-features = false }
libmonado = { git = "https://github.com/technobaboo/libmonado-rs", rev = "256895b18c8f9368174fad8a6232ff07764eeacb", optional = true }
winit = { version = "0.30.0", optional = true }
xdg = "2.5.2"
log-panics = { version = "2.1.0", features = ["with-backtrace"] }
serde_json5 = "0.1.0"
xkbcommon = { version = "0.8.0" }
xcb = { version = "1.4.0", optional = true, features = [
"as-raw-xcb-connection",
] }
image_dds = { version = "0.6.0", default-features = false, features = [
"ddsfile",
] }
mint = "0.5.9"
tracing-subscriber = { version = "0.3.19", features = ["env-filter"] }
tracing = "0.1.41"
################################
#WayVR-only deps
################################
khronos-egl = { version = "6.0.0", features = ["static"], optional = true }
smithay = { version = "0.5.1", default-features = false, features = [
"renderer_gl",
"backend_egl",
"backend_drm",
"xwayland",
"wayland_frontend",
], optional = true }
uuid = { version = "1.10.0", features = ["v4", "fast-rng"], optional = true }
wayland-client = { version = "0.31.6", optional = true }
wayland-egl = { version = "0.32.4", optional = true }
interprocess = { version = "2.2.2", optional = true }
bytes = { version = "1.9.0", optional = true }
wayvr_ipc = { git = "https://github.com/olekolek1000/wayvr-ipc.git", rev = "a72587d23f3bb8624d9aeb1f13c0a21e65350f51", default-features = false, optional = true }
################################
[build-dependencies]
regex = { version = "*" }
[features]
default = ["openvr", "openxr", "osc", "x11", "wayland", "wayvr"]
openvr = ["dep:ovr_overlay", "dep:json"]
openxr = ["dep:openxr", "dep:libmonado"]
osc = ["dep:rosc"]
x11 = ["dep:xcb", "wlx-capture/xshm", "xkbcommon/x11"]
wayland = ["pipewire", "wlx-capture/wlr", "xkbcommon/wayland"]
pipewire = ["wlx-capture/pipewire"]
uidev = ["dep:winit"]
xcb = ["dep:xcb"]
wayvr = [
"dep:khronos-egl",
"dep:smithay",
"dep:uuid",
"dep:wayland-client",
"dep:wayland-egl",
"dep:interprocess",
"dep:bytes",
"dep:wayvr_ipc",
]
as-raw-xcb-connection = []

162
README.md
View File

@ -1,39 +1,47 @@
# WlxOverlay-S
![WayVR splash screen header](https://github.com/wayvr-org/wayvr/blob/guide/wayvr-readme-header.webp?raw=true)
A lightweight OpenXR/OpenVR overlay for Wayland and X11 desktops, inspired by XSOverlay.
# WayVR (previously WlxOverlay-S)
WlxOverlay-S lets you to access your desktop screens while in VR.
A lightweight OpenXR/OpenVR overlay for Wayland and X11 desktops.
In comparison to similar overlays, WlxOverlay-S aims to run alongside VR games and experiences while having as little performance impact as possible. The UI appearance and rendering techniques are kept as simple and efficient as possible, while still allowing a high degree of customizability.
WayVR lets you access your desktop screens while in VR, and even launch apps directly in VR.
![Screenshot of WlxOverlay-S being used as an OpenXR home environment](https://github.com/galister/wlx-overlay-s/blob/guide/wlx-s.png?raw=true)
In comparison to similar overlays, WayVR aims to run alongside VR games and experiences while having as little performance impact as possible. The UI appearance and rendering techniques are kept as simple and efficient as possible, while still allowing a high degree of customizability.
![Screenshot of WayVR being used as an OpenXR home environment](https://github.com/wayvr-org/wayvr/blob/guide/wayvr-readme-screenshot.webp?raw=true)
## Join the Linux VR Community
We are available on either:
We are available on either **Discord** or **Matrix space**:
- Discord: <https://discord.gg/gHwJ2vwSWV>
- Matrix Space: `#linux-vr-adventures:matrix.org`
[![LVRA Discord](https://img.shields.io/discord/1065291958328758352?style=for-the-badge/&logo=discord)](https://discord.gg/EHAYe3tTYa) [![LVRA Matrix](https://img.shields.io/matrix/linux-vr-adventures:matrix.org?logo=matrix&style=for-the-badge)](https://matrix.to/#/#linux-vr-adventures:matrix.org)
Questions/issues specific to WlxOverlay-S will be handled in the `wlxoverlay` chat room.
Questions/issues specific to WayVR will be handled in the `wayvr` chat room. Feel free to ask anything.
## Setup
### Installation
There are multiple ways to install WayVR:
1. AppImage: Download from [Releases](https://github.com/wayvr-org/wayvr/releases)
1. AUR package: [wayvr](https://aur.archlinux.org/packages/wayvr) or [wayvr-git](https://aur.archlinux.org/packages/wayvr-git)
1. Nix package: [wayvr](https://search.nixos.org/packages?channel=unstable&show=wayvr&query=wayvr) or [unstable package from nixpkgs-xr](https://github.com/nix-community/nixpkgs-xr)
1. [Docs: Building from source](https://wayvr.org/docs/basics/building-from-source/).
### General Setup
1. Grab the latest AppImage from [Releases](https://github.com/galister/wlx-overlay-s/releases).
1. `chmod +x WlxOverlay-S-*.AppImage`
1. Start Monado, WiVRn or SteamVR.
1. Run the overlay
**Note:** If you are using Monado or WiVRn, no additional setup steps are required for Flatpak Steam compatibility—most people use WlxOverlay-S seamlessly with Monado/WiVRn.
**Note:** If you are using Monado or WiVRn, no additional setup steps are required for Flatpak Steam compatibility—most people use WayVR seamlessly with Monado/WiVRn.
### SteamVR via Steam Flatpak
For users specifically running **SteamVR via Steam Flatpak**, follow these steps:
1. Grab the latest AppImage from [Releases](https://github.com/galister/wlx-overlay-s/releases).
1. `WlxOverlay-S-*.AppImage --appimage-extract`
1. Grab the latest AppImage from [Releases](https://github.com/wayvr-org/wayvr/releases).
1. `WayVR-*.AppImage --appimage-extract`
1. `chmod +x squashfs-root/AppRun`
1. Move the newly created `squashfs-root` folder to a location accessible by the Steam Flatpak.
1. `flatpak override com.valvesoftware.Steam --user --filesystem=xdg-run/pipewire-0/:rw`
@ -41,21 +49,24 @@ For users specifically running **SteamVR via Steam Flatpak**, follow these steps
1. Start SteamVR.
1. `flatpak run --command='/path/to/squashfs-root/AppRun' com.valvesoftware.Steam`
AUR package is [wlx-overlay-s-git](https://aur.archlinux.org/packages/wlx-overlay-s-git).
You may also want to [build from source](https://github.com/galister/wlx-overlay-s/wiki/Building-from-Source).
## First Start
**When the screen share pop-up appears, check the terminal and select the screens in the order it requests.**
**When the screen share pop-up appears, check your notifications or the terminal and select the screens in the order it requests.**
In case screens were selected in the wrong order:
- `rm ~/.config/wlxoverlay/conf.d/pw_tokens.yaml` then restart
- Go to Settings and press `Clear PipeWire tokens` and then `Restart software`
- Pay attention to your notifications, which tell you in which order to pick the screens.
- If notifications don't show, try starting WayVR from the terminal and look for instructions in there.
**SteamVR users**: WlxOverlay-S will register itself for auto-start, so there is no need to start it every time.
**WiVRn users**: Select WayVR from the `Application` drop-down. If there's no such entry, select `Custom` and browse to your WayVR executable or AppImage.
**Envision users**: Set `wlx-overlay-s --openxr --show` as the _Autostart Command_ on your Envision profile! This will show a home environment with headset passthrough by default or a [customizable background](https://github.com/galister/wlx-overlay-s/wiki/OpenXR-Skybox)! If you are using the appimage instead, set the _Autostart Command_ to the location of tha appimage binary, e.g `/full/path/to/wlx-overlay-s.appimage --openxr --show`.
**Envision users**: Go to the Plugins menu and select the WayVR plugin. This will download and run the AppImage version of the overlay.
To run a standalone installation (for instance, from the AUR), create a bash script containing `wayvr --openxr --show` and then set this bash script as a custom Envision plugin.
This will show a home environment with headset passthrough enabled by default or a [customizable background](https://wayvr.org/docs/various/openxr-skybox/)!
**SteamVR users**: WayVR will register itself for auto-start, so there is no need to start it every time. Disclaimer: SteamVR will sometimes disregard this and not start WayVR anyway.
**Please continue reading the guide below.**
@ -63,7 +74,7 @@ In case screens were selected in the wrong order:
### Working Set
The working set consists of all currently selected overlays; screens, mirrors, keyboard, etc.
The working set consists of all currently selected overlays: screens, mirrors, keyboard, etc.
The working set appears in front of the headset when shown, and can be re-centered by hiding and showing again.
@ -72,9 +83,11 @@ Show and hide the working set using:
- Non-vive controller: double-tap B or Y on the left controller.
- Vive controller: double-tap the menu button on the left controller (for SteamVR, the `showhide` binding must be bound)
See the [bindings](#default-bindings) section on how to grab, move and resize overlay windows.
### Pointer Modes AKA Laser Colors
Much of the functionality in WlxOverlay-S depends on what color of laser is used to interact with a UI element. \
Much of the functionality in WayVR depends on what color of laser is used to interact with a UI element. \
Using the default settings, there are 3 modes:
- Regular Mode: Blue laser
@ -85,94 +98,113 @@ Please see the bindings section below on how to activate these modes.
The guide here uses the colors for ease of getting started.
### The Watch
### The watch
Check your left wrist for the watch. The watch is the primary tool for controlling the app.
![Watch usage guide](https://github.com/galister/wlx-overlay-s/blob/guide/wlx-watch.png)
The top of the watch shows device batteries, and the bottom shows your overlay controls.
### The Screens
Enter edit mode (the leftmost button at the bottom) to edit your overlay sets.
Hovering a pointer over a screen will move the mouse. If there are more than one pointers hovering a screen, the pointer that was last used to click will take precedence.
While in edit mode, the watch can also be grabbed and passed between your hands.
The click depends on the laser color:
After grabbing, the watch will automatically attach to the hand that's opposite from the one that held it.
In edit mode, try hovering over other overlays to see their advanced options!
### The screens
Hovering a pointer over a screen will move the mouse. If more than one pointer is hovering over a screen, the pointer that was last used to click will take precedence.
The click type depends on the laser color:
- Blue laser: Left click
- Orange laser: Right click
- Purple laser: Middle click
- Stick up/down: Scroll wheel
To **curve a screen**, grab it with one hand. Then, using the other hand, hover the laser over the screen and use the scroll action.
See the [bindings](#default-bindings) section on how to grab, move and resize screens.
### The keyboard
The keyboard is fully customizable via the [keyboard.yaml](https://raw.githubusercontent.com/galister/wlx-overlay-s/main/src/res/keyboard.yaml) file. \
Download it into the `~/.config/wlxoverlay/` folder and edit it to your liking.
Typing
- Use the BLUE laser when typing regularly.
- While using ORANGE laser, all keystrokes will have SHIFT applied.
- Purple laser has no effect as of now.
- While using the ORANGE laser, all keystrokes will have SHIFT applied.
- Purple laser is customizable via the settings, no modifier by default.
**Modifier Keys** are sticky. They will remain pressed until a non-modifier key is pressed, the modifier gets toggled off, or the keyboard gets hidden.
**Modifier Keys are sticky**. They will remain pressed until either:
- a non-modifier key is pressed
- the modifier is toggled off by clicking again
- the keyboard is hidden (including via show-hide)
### Default Bindings
![Index Controller Bindings](https://github.com/galister/wlx-overlay-s/blob/guide/wlx-index.png)
![Index Controller Bindings](https://github.com/wayvr-org/wayvr/blob/guide/wlx-index.png)
![Touch Controller Bindings](https://github.com/galister/wlx-overlay-s/blob/guide/wlx-oculus.png)
![Touch Controller Bindings](https://github.com/wayvr-org/wayvr/blob/guide/wlx-oculus.png)
To customize bindings on OpenXR, refer to the [OpenXR Bindings wiki page](https://github.com/galister/wlx-overlay-s/wiki/OpenXR-Bindings).
### Changing Bindings
If your bindings are not supported, please reach out. \
SteamVR: Simply change the bindings from the SteamVR bindings section. If WayVR doesn't show up on the list, select any other title and then press back on the top left. (SteamVR is weird like that sometimes)
OpenXR (Monado/WiVRn): See [Docs: OpenXR Bindings](https://wayvr.org/docs/various/openxr-bindings/)
If your controllers are not supported, please reach out. \
We would like to work with you and include additional bindings.
## Customization
See these relevant wiki pages:
- For all available config options, check [Docs: Configuration](https://wayvr.org/docs/basics/configuration/)
- Looking to customize look & feel, or add functionality? See [Docs: Customization](https://wayvr.org/docs/basics/customization/)
- Looking to change the OpenXR background? See [Docs: OpenXR Skybox](https://wayvr.org/docs/various/openxr-skybox/)
## Troubleshooting
When an error is detected, we often print tips for fixing into the log file.
When an error is detected, we often print tips for fixing it into the log file.
Logs will be at `/tmp/wlx.log` for most distros.
Logs will be at `/tmp/wayvr.log` for most distros.
Check [here](https://github.com/galister/wlx-overlay-s/wiki/Troubleshooting) for tips.
Check [here](https://wayvr.org/docs/various/troubleshooting/) for tips.
## Known Issues
### Mouse is not where it should be
Hyprland users: Hyprland v0.41.0 changed their absolute input implementation to one that does not respect existing absolute input standards. Make your voice heard: [Hyprland#6023](https://github.com/hyprwm/Hyprland/issues/6023)・[Hyprland#6889](https://github.com/hyprwm/Hyprland/issues/6889)
If the mouse is moving on a completely different screen, the screens were likely selected in the wrong order:
Niri users: use on Niri 0.1.7 or later.
- Go to Settings and press `Clear PipeWire tokens` and then `Restart software`
- Pay attention to your notifications, which tell you in which order to pick the screens.
- If notifications don't show, try starting WayVR from the terminal and look for instructions in there.
X11 users might be dealing with a [Phantom Monitor](https://wiki.archlinux.org/title/Xrandr#Disabling_phantom_monitor).
COSMIC desktop:
Other desktops: The screens may have been selected in the wrong order, see [First Start](#first-start).
- Due to limitations with COSMIC, the mouse can only move on a single display.
### Crashes, blank screens
X11 users:
There are some driver-desktop combinations that don't play nice with DMA-buf capture.
- Might be dealing with a [Phantom Monitor](https://wiki.archlinux.org/title/Xrandr#Disabling_phantom_monitor).
- DPI scaling is not supported and will mess with the mouse.
- Upright screens are not supported and will mess with the mouse.
Disabling DMA-buf capture is a good first step to try when encountering an app crash or gpu driver reset.
### Screens are blank or black or frozen on SteamVR 2.14+
```bash
echo 'capture_method: pw_fallback' > ~/.config/wlxoverlay/conf.d/pw_fallback.yaml
```
As of SteamVR version 2.14.x, PipeWire capture no longer works when using Steam Link.
Without DMA-buf capture, capturing screens takes CPU power, so let's try and not show too many screens at the same time.
We're unable to completely troubleshoot how and why SteamVR interferes with PipeWire, so consider the following workarounds for the time being:
### Space-drag crashes SteamVR
- Use another streamer, such as WiVRn or ALVR. Note that SteamVR on Linux is considered experimental by Valve themselves [disclaimer](https://github.com/ValveSoftware/SteamVR-for-Linux?tab=readme-ov-file#steamvr-release-notes-and-known-issues).
- If your desktop [supports ScreenCopy](https://wayland.app/protocols/wlr-screencopy-unstable-v1#compositor-support), go to Settings and set `Wayland capture method` to `ScreenCopy`
- If your desktop has an X11 mode, try using that
This has been idenfitied as an issue with SteamVR versions 2.5.5 and above (latest tested 2.7.2). One way to avoid the crash is by switching to the `temp-v1.27.5` branch of SteamVR (via beta selection) and selecting [Steam-Play-None](https://github.com/Scrumplex/Steam-Play-None) under the compatibility tab.
### Modifiers get stuck
### Modifiers get stuck in weird ways
This is a rare issue that can make KDE Plasma not react to click or keys due to what seems to be a race condition with modifiers. Restarting the overlay fixes this.
Hiding the keyboard will unpress all of its buttons. Alternatively, go to Settings and use the `Restart software` button.
### X11 limitations
- X11 capture can generally seem slow. This is because zero-copy GPU capture is not supported on the general X11 desktop. Consider trying Wayland or Picom.
- X11 capture can generally seem slow. This is because zero-copy GPU capture is not supported on the general X11 desktop. Consider trying Wayland.
- DPI scaling is not supported and may cause the mouse to not follow the laser properly.
- Upright screens are not supported and can cause the mouse to act weirdly.
- Screen changes (connecting / disconnecting a display, resolution changes, etc) are not handled at runtime. Restart the overlay for these to take effect.
- Upright screens are not supported and can cause the mouse to not follow the laser properly.
- Screen changes (connecting/disconnecting a display, resolution changes, etc) are not handled at runtime. Restart the overlay for these to take effect.

View File

@ -1,90 +0,0 @@
<p align="center">
<img src="https://raw.githubusercontent.com/galister/wlx-overlay-s/refs/heads/guide/wayvr/logo.svg" height="120"/>
</p>
**WayVR acts as a bridge between Wayland applications and wlx-overlay-s panels, allowing you to display your applications within a VR environment. Internally, WayVR utilizes Smithay to run a Wayland compositor.**
# >> Quick setup <<
#### Configure your applications list
Go to `src/res/wayvr.yaml` to configure your desired application list. This configuration file represents all currently available WayVR options. Feel free to adjust it to your liking.
#### Add WayVR Launcher to your watch
Copy `watch_wayvr_example.yaml` to `~/.config/wlxoverlay/watch.yaml`. This file contains pre-configured **WayVRLauncher** and **WayVRDisplayList** widget types. By default, the _default_catalog_ is used.
That's it; you're all set!
###### _Make sure you have `wayvr` feature enabled in Cargo.toml (enabled by default)_
![alt text](https://raw.githubusercontent.com/galister/wlx-overlay-s/refs/heads/guide/wayvr/watch.jpg)
# Overview
### Features
- Display Wayland applications without GPU overhead (zero-copy via dma-buf)
- Mouse and keyboard input, with precision scrolling support
- Tested on AMD and Nvidia
### Supported software
- Basically all Qt and GTK applications (they work out of the box)
- Most XWayland applications via `cage`
### XWayland
WayVR does not have native XWayland support. You can run X11 applications (or these who require DISPLAY set) by wrapping them in a `cage` program, like so:
```yaml
- name: "Xeyes"
target_display: "Disp1"
exec: "cage"
args: "xeyes -- -fg blue"
```
instead of:
```yaml
- name: "Xeyes"
target_display: "Disp1"
exec: "xeyes"
args: "-fg blue"
```
in `wayvr.yaml` configuration file, in your desired catalog.
### Launching external apps inside WayVR
To launch your app externally:
```sh
DISPLAY= WAYLAND_DISPLAY=wayland-$(cat $XDG_RUNTIME_DIR/wayvr.disp) yourapp
```
or (in the most cases):
```
DISPLAY= WAYLAND_DISPLAY=wayland-20 yourapp
```
Setting `DISPLAY` to an empty string forces various apps to use Wayland instead of X11.
# Troubleshooting
### My application doesn't launch but others do!
Even though some applications support Wayland, some still check for the `DISPLAY` environment variable and an available X11 server, throwing an error. This can also be fixed by running `cage` on top of them.
### Image corruption
dma-buf textures may display various graphical glitches due to unsupported dma-buf tiling modifiers between GLES<->Vulkan on Radeon RDNA3 graphics cards. Current situation: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11629). Nvidia should work out of the box, without any isues. Alternatively, you can run wlx-overlay-s with `LIBGL_ALWAYS_SOFTWARE=1` to mitigate that (only the Smithay compositor will run in software renderer mode, wlx will still be accelerated).
### Floating windows
Context menus are not functional in most cases yet, including drag & drop support.
### Forced window shadows in GTK
GNOME still insists on rendering client-side decorations instead of server-side ones. This results in all GTK applications looking odd due to additional window shadows. [Fix here, "Client-side decorations"](https://wiki.archlinux.org/title/GTK)

View File

@ -1,207 +0,0 @@
# looking to make changes?
# drop me in ~/.config/wlxoverlay/watch.yaml
#
width: 0.115
size: [400, 272]
elements:
# background panel
- type: Panel
rect: [0, 30, 400, 130]
corner_radius: 20
bg_color: "#24273a"
- type: Button
rect: [2, 162, 26, 36]
corner_radius: 4
font_size: 15
bg_color: "#c6a0f6"
fg_color: "#24273a"
text: "C"
click_up: # destroy if exists, otherwise create
- type: Window
target: settings
action: ShowUi # only triggers if not exists
- type: Window
target: settings
action: Destroy # only triggers if exists since before current frame
# Dashboard toggle button
- type: Button
rect: [32, 162, 48, 36]
corner_radius: 4
font_size: 15
bg_color: "#2288FF"
fg_color: "#24273a"
text: "Dash"
click_up:
- type: WayVR
action: ToggleDashboard
# Keyboard button
- type: Button
rect: [84, 162, 48, 36]
corner_radius: 4
font_size: 15
fg_color: "#24273a"
bg_color: "#a6da95"
text: Kbd
click_up:
- type: Overlay
target: "kbd"
action: ToggleVisible
long_click_up:
- type: Overlay
target: "kbd"
action: Reset
right_up:
- type: Overlay
target: "kbd"
action: ToggleImmovable
middle_up:
- type: Overlay
target: "kbd"
action: ToggleInteraction
scroll_up:
- type: Overlay
target: "kbd"
action:
Opacity: { delta: 0.025 }
scroll_down:
- type: Overlay
target: "kbd"
action:
Opacity: { delta: -0.025 }
# bottom row, of keyboard + overlays
- type: OverlayList
rect: [134, 160, 266, 40]
corner_radius: 4
font_size: 15
fg_color: "#cad3f5"
bg_color: "#1e2030"
layout: Horizontal
click_up: ToggleVisible
long_click_up: Reset
right_up: ToggleImmovable
middle_up: ToggleInteraction
scroll_up:
Opacity: { delta: 0.025 }
scroll_down:
Opacity: { delta: -0.025 }
- type: WayVRLauncher
rect: [0, 200, 400, 36]
corner_radius: 4
font_size: 15
fg_color: "#24273a"
bg_color: "#e590c4"
catalog_name: "default_catalog"
- type: WayVRDisplayList
rect: [0, 236, 400, 36]
corner_radius: 4
font_size: 15
fg_color: "#24273a"
bg_color: "#ca68a4"
# local clock
- type: Label
rect: [19, 90, 200, 50]
corner_radius: 4
font_size: 46 # Use 32 for 12-hour time
fg_color: "#cad3f5"
source: Clock
format: "%H:%M" # 23:59
#format: "%I:%M %p" # 11:59 PM
# local date
- type: Label
rect: [20, 117, 200, 20]
corner_radius: 4
font_size: 14
fg_color: "#cad3f5"
source: Clock
format: "%x" # local date representation
# local day-of-week
- type: Label
rect: [20, 137, 200, 50]
corner_radius: 4
font_size: 14
fg_color: "#cad3f5"
source: Clock
format: "%A" # Tuesday
#format: "%a" # Tue
# alt clock 1
- type: Label
rect: [210, 90, 200, 50]
corner_radius: 4
font_size: 24 # Use 18 for 12-hour time
fg_color: "#8bd5ca"
source: Clock
timezone: 0 # change TZ1 here
format: "%H:%M" # 23:59
#format: "%I:%M %p" # 11:59 PM
- type: Label
rect: [210, 60, 200, 50]
corner_radius: 4
font_size: 14
fg_color: "#8bd5ca"
source: Timezone
timezone: 0 # change TZ1 label here
# alt clock 2
- type: Label
rect: [210, 150, 200, 50]
corner_radius: 4
font_size: 24 # Use 18 for 12-hour time
fg_color: "#b7bdf8"
source: Clock
timezone: 1 # change TZ2 here
format: "%H:%M" # 23:59
#format: "%I:%M %p" # 11:59 PM
- type: Label
rect: [210, 120, 200, 50]
corner_radius: 4
font_size: 14
fg_color: "#b7bdf8"
source: Timezone
timezone: 1 # change TZ2 label here
# batteries
- type: BatteryList
rect: [0, 5, 400, 30]
corner_radius: 4
font_size: 16
fg_color: "#8bd5ca"
fg_color_low: "#B06060"
fg_color_charging: "#6080A0"
num_devices: 9
layout: Horizontal
low_threshold: 33
# volume buttons
- type: Button
rect: [315, 52, 70, 32]
corner_radius: 4
font_size: 13
fg_color: "#cad3f5"
bg_color: "#5b6078"
text: "Vol +"
click_down:
- type: Exec
command: ["pactl", "set-sink-volume", "@DEFAULT_SINK@", "+5%"]
- type: Button
rect: [315, 116, 70, 32]
corner_radius: 4
font_size: 13
fg_color: "#cad3f5"
bg_color: "#5b6078"
text: "Vol -"
click_down:
- type: Exec
command: ["pactl", "set-sink-volume", "@DEFAULT_SINK@", "-5%"]

View File

@ -0,0 +1,8 @@
root = true
[*.rs]
indent_style = tab
indent_size = 2
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = false

33
dash-frontend/Cargo.toml Normal file
View File

@ -0,0 +1,33 @@
[package]
name = "dash-frontend"
version = "0.1.0"
edition = "2024"
description = "The dashboard frontend for WayVR"
license = "GPL-3.0-only"
authors = ["galister", "oo8dev"]
repository = "https://github.com/wlx-team/wayvr"
[dependencies]
anyhow.workspace = true
async-native-tls = "0.5.0"
chrono = "0.4.42"
glam = { workspace = true, features = ["mint", "serde"] }
http-body-util = "0.1.3"
hyper = { version = "1.8.1", features = ["client", "http1", "http2"] }
keyvalues-parser = { git = "https://codeberg.org/CosmicHarper/vdf-rs.git", rev = "fc6dcbea9eb13cacb98dea40063f6f56cde6e145" }
log.workspace = true
rust-embed.workspace = true
serde = { workspace = true, features = ["rc"] }
serde_json.workspace = true
smol = { workspace = true }
smol-hyper = "0.1.1"
strum.workspace = true
uuid.workspace = true
wayvr-ipc = { path = "../wayvr-ipc", default-features = false }
wgui = { path = "../wgui/" }
wlx-common = { path = "../wlx-common" }
xdg.workspace = true
[features]
default = ["monado"]
monado = []

674
dash-frontend/LICENSE Normal file
View File

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M11 13H5v-2h6V5h2v6h6v2h-6v6h-2z" />
</svg>

After

Width:  |  Height:  |  Size: 150 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M6 11a2 2 0 0 1 2 2v4H4a2 2 0 0 1-2-2v-2a2 2 0 0 1 2-2zm-2 2v2h2v-2zm16 0v2h2v2h-2a2 2 0 0 1-2-2v-2a2 2 0 0 1 2-2h2v2zm-8-6v4h2a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2V7zm0 8h2v-2h-2z" />
</svg>

After

Width:  |  Height:  |  Size: 308 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" fill-rule="evenodd" d="M4.857 3A1.857 1.857 0 0 0 3 4.857v4.286C3 10.169 3.831 11 4.857 11h4.286A1.857 1.857 0 0 0 11 9.143V4.857A1.857 1.857 0 0 0 9.143 3zm10 0A1.857 1.857 0 0 0 13 4.857v4.286c0 1.026.831 1.857 1.857 1.857h4.286A1.857 1.857 0 0 0 21 9.143V4.857A1.857 1.857 0 0 0 19.143 3zm-10 10A1.857 1.857 0 0 0 3 14.857v4.286C3 20.169 3.831 21 4.857 21h4.286A1.857 1.857 0 0 0 11 19.143v-4.286A1.857 1.857 0 0 0 9.143 13zm10 0A1.857 1.857 0 0 0 13 14.857v4.286c0 1.026.831 1.857 1.857 1.857h4.286A1.857 1.857 0 0 0 21 19.143v-4.286A1.857 1.857 0 0 0 19.143 13z" clip-rule="evenodd" />
</svg>

After

Width:  |  Height:  |  Size: 702 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE -->
<path fill="currentColor" d="m10 18l-6-6l6-6l1.4 1.45L7.85 11H20v2H7.85l3.55 3.55z" />
</svg>

After

Width:  |  Height:  |  Size: 294 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE -->
<path fill="currentColor" d="m14 18l-1.4-1.45L16.15 13H4v-2h12.15L12.6 7.45L14 6l6 6z" />
</svg>

After

Width:  |  Height:  |  Size: 297 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="m9.55 12l7.35 7.35q.375.375.363.875t-.388.875t-.875.375t-.875-.375l-7.7-7.675q-.3-.3-.45-.675t-.15-.75t.15-.75t.45-.675l7.7-7.7q.375-.375.888-.363t.887.388t.375.875t-.375.875z" />
</svg>

After

Width:  |  Height:  |  Size: 293 B

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<g fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
<rect width="4" height="6" x="14" y="14" rx="2" />
<rect width="4" height="6" x="6" y="4" rx="2" />
<path d="M6 20h4m4-10h4M6 14h2v6m6-16h2v6" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 344 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Tabler Icons by Paweł Kuna - https://github.com/tabler/tabler-icons/blob/master/LICENSE -->
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 4a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1zM3 14h12a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v12" />
</svg>

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M21 18H3v-2h18v2Zm0-5H3v-2h18v2Zm0-5H3V6h18v2Z" />
</svg>

After

Width:  |  Height:  |  Size: 165 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M3 20.5q-.425 0-.712-.288T2 19.5v-6q0-.425.288-.712T3 12.5h6q.425 0 .713.288T10 13.5v6q0 .425-.288.713T9 20.5zm1-2h4v-4H4zM14.725 10h-7.45q-.575 0-.862-.513t.012-1.012L10.15 2.4q.3-.5.85-.5t.85.5l3.725 6.075q.3.5.013 1.013t-.863.512M9.05 8h3.9L11 4.85zm11.825 14.25l-1.95-1.95q-.525.35-1.137.525T16.5 21q-1.875 0-3.187-1.312T12 16.5t1.313-3.187T16.5 12t3.188 1.313T21 16.5q0 .65-.175 1.263t-.5 1.137l1.95 1.95q.275.275.275.7t-.275.7t-.7.275t-.7-.275M16.5 19q1.05 0 1.775-.725T19 16.5t-.725-1.775T16.5 14t-1.775.725T14 16.5t.725 1.775T16.5 19M11 8" />
</svg>

After

Width:  |  Height:  |  Size: 664 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE --><path fill="#33FF99" d="m9.55 18l-5.7-5.7l1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"/></svg>

After

Width:  |  Height:  |  Size: 295 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M12 22q-2.075 0-3.9-.788q-1.825-.787-3.175-2.137q-1.35-1.35-2.137-3.175Q2 14.075 2 12t.788-3.9q.787-1.825 2.137-3.175q1.35-1.35 3.175-2.138Q9.925 2 12 2t3.9.787q1.825.788 3.175 2.138q1.35 1.35 2.137 3.175Q22 9.925 22 12t-.788 3.9q-.787 1.825-2.137 3.175q-1.35 1.35-3.175 2.137Q14.075 22 12 22Z" />
</svg>

After

Width:  |  Height:  |  Size: 411 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M8.4 17L7 15.6l3.6-3.6L7 8.425l1.4-1.4l3.6 3.6l3.575-3.6l1.4 1.4l-3.6 3.575l3.6 3.6l-1.4 1.4L12 13.4z" />
</svg>

After

Width:  |  Height:  |  Size: 219 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE -->
<path fill="currentColor" d="M11 18q-1.65 0-2.825-1.175T7 14q-2.5.025-4.25-1.737T1 8q0-.825.588-1.412T3 6h4V5H5V3h6v2H9v1h3.175q.4 0 .763.15t.637.425l8.375 8.375Q23 16 23 17.45t-1.05 2.5t-2.5 1.05t-2.5-1.05L15 18zm0-4H8.975q0 .825.588 1.413T11 16h2zm1.175-6H3q0 1.65 1.175 2.825T7 12h4.825l6.55 6.55q.45.45 1.088.45t1.087-.45t.45-1.088t-.45-1.087zm0 0" />
</svg>

After

Width:  |  Height:  |  Size: 563 B

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 1024 1024">
<path fill="white" d="M320 256a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64zm0-64h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128H320a128 128 0 0 1-128-128V320a128 128 0 0 1 128-128" />
<path fill="white" d="M512 64a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m160 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m-320 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m160 896a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32m160 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32m-320 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32M64 512a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m0-160a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m0 320a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m896-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32m0-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32m0 320a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32" />
</svg>

After

Width:  |  Height:  |  Size: 996 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M2 16V4q0-.825.588-1.412T4 2h14v2H4v12zm9 6v-2H8q-.825 0-1.412-.587T6 18V8q0-.825.588-1.412T8 6h13q.825 0 1.413.588T23 8v10q0 .825-.587 1.413T21 20h-3v2zm-3-4h13V8H8zm6.5-5" />
</svg>

After

Width:  |  Height:  |  Size: 290 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 16 16">
<g fill="white">
<path d="M2.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 1 0V8h10v.5a.5.5 0 0 0 1 0v-1a.5.5 0 0 0-.5-.5z" />
<path d="M1 5a1 1 0 0 0-1 1v3.191a1 1 0 0 0 .553.894l1.618.81a1 1 0 0 0 .447.105H15a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm0 1h14v4H2.618L1 9.191z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 358 B

View File

@ -0,0 +1 @@
../../../wayvr/src/assets/keyboard/down.svg

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE --><path fill="currentColor" d="m12 16l-5-5l1.4-1.45l2.6 2.6V4h2v8.15l2.6-2.6L17 11zm-6 4q-.825 0-1.412-.587T4 18v-3h2v3h12v-3h2v3q0 .825-.587 1.413T18 20z"/></svg>

After

Width:  |  Height:  |  Size: 360 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE --><path fill="currentColor" d="m12 22l-4.25-4.25l1.425-1.425L11 18.15V13H5.875L7.7 14.8l-1.45 1.45L2 12l4.225-4.225L7.65 9.2L5.85 11H11V5.85L9.175 7.675L7.75 6.25L12 2l4.25 4.25l-1.425 1.425L13 5.85V11h5.125L16.3 9.2l1.45-1.45L22 12l-4.25 4.25l-1.425-1.425L18.15 13H13v5.125l1.8-1.825l1.45 1.45z"/></svg>

After

Width:  |  Height:  |  Size: 500 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE --><path fill="#FF4455" d="M12 17q.425 0 .713-.288T13 16t-.288-.712T12 15t-.712.288T11 16t.288.713T12 17m-1-4h2V7h-2zm1 9q-2.075 0-3.9-.788t-3.175-2.137T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22m0-2q3.35 0 5.675-2.325T20 12t-2.325-5.675T12 4T6.325 6.325T4 12t2.325 5.675T12 20m0-8"/></svg>

After

Width:  |  Height:  |  Size: 574 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<g fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0-4 0" />
<path d="M21 12q-3.6 6-9 6t-9-6q3.6-6 9-6t9 6" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 300 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M6 22q-.825 0-1.412-.587T4 20V4q0-.825.588-1.412T6 2h12q.825 0 1.413.588T20 4v16q0 .825-.587 1.413T18 22zm12-2V4H6v16zm0-16H6zM9 9h6l-3-3zm3 9l3-3H9z" />
</svg>

After

Width:  |  Height:  |  Size: 267 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M7 6h10a6 6 0 0 1 6 6a6 6 0 0 1-6 6c-1.78 0-3.37-.77-4.47-2h-1.06c-1.1 1.23-2.69 2-4.47 2a6 6 0 0 1-6-6a6 6 0 0 1 6-6M6 9v2H4v2h2v2h2v-2h2v-2H8V9zm9.5 3a1.5 1.5 0 0 0-1.5 1.5a1.5 1.5 0 0 0 1.5 1.5a1.5 1.5 0 0 0 1.5-1.5a1.5 1.5 0 0 0-1.5-1.5m3-3a1.5 1.5 0 0 0-1.5 1.5a1.5 1.5 0 0 0 1.5 1.5a1.5 1.5 0 0 0 1.5-1.5A1.5 1.5 0 0 0 18.5 9" />
</svg>

After

Width:  |  Height:  |  Size: 450 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2" />
</svg>

After

Width:  |  Height:  |  Size: 676 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M12 22q-2.075 0-3.9-.788t-3.175-2.137T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22m0-2q3.35 0 5.675-2.325T20 12q0-.175-.012-.363t-.013-.312q-.125.725-.675 1.2T18 13h-2q-.825 0-1.412-.587T14 11v-1h-4V8q0-.825.588-1.412T12 6h1q0-.575.313-1.012t.762-.713q-.5-.125-1.012-.2T12 4Q8.65 4 6.325 6.325T4 12h5q1.65 0 2.825 1.175T13 16v1h-3v2.75q.5.125.988.188T12 20" />
</svg>

After

Width:  |  Height:  |  Size: 560 B

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="32"
height="32"
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="gravity.svg"
inkscape:version="1.4.4 (dcaf3e7d9e, 2026-05-05)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="23.234375"
inkscape:cx="17.861466"
inkscape:cy="22.488231"
inkscape:window-width="1582"
inkscape:window-height="1302"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<defs
id="defs1" />
<!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE -->
<!-- Modified it a little bit, there's no "space gravity" icon available. -->
<path
fill="currentColor"
d="m 15.76786,18.274928 -1.391472,0.295932 -0.674684,-2.9751 -3.051267,-0.735557 -2.4062791,-3.292082 -0.8846145,1.824345 1.561484,2.213127 -1.1706157,0.808349 -1.9932655,-2.862487 1.752944,-3.7745856 Q 7.740355,9.2978686 8.2693798,9.1366908 8.7984057,8.9755132 9.3446883,8.9671549 9.9537305,8.9704882 10.547911,8.8283107 11.142091,8.6861403 11.667399,8.364791 12.192707,8.0434408 12.541821,7.5511898 12.890935,7.0589389 13.170167,6.5208564 l 1.228561,0.6477209 q -0.321651,0.575352 -0.696034,1.1164692 -0.374382,0.5411172 -0.890945,0.9726251 -0.466314,0.3718768 -0.998843,0.6112737 -0.532529,0.2393967 -1.117089,0.3386867 L 12,12 l 2.176682,-1.469824 4.352172,0.934365 -0.326914,1.35612 -3.582453,-0.734464 -2.11263,1.442217 2.281549,0.535655 z M 7.5517982,8.9044443 Q 7.0233673,9.1322023 6.4853273,8.9182692 5.9472884,8.7043353 5.7186139,8.1755407 5.4899403,7.6467461 5.7054294,7.108795 5.9209195,6.5708439 6.4475175,6.3423563 6.9741154,6.1138698 7.5149037,6.3288971 8.0556931,6.5439235 8.2807018,7.07126 8.5057095,7.5985974 8.2948017,8.1383704 8.0838948,8.6781445 7.5517982,8.9044443"
id="path1"
style="stroke-width:0.697484" />
<path
id="path2"
style="fill:none;stroke:currentColor;stroke-width:2.43525;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:0, 7.30575"
d="M 22.480952,12 C 22.480952,17.78847 17.78847,22.480952 12,22.480952 6.2115299,22.480952 1.5190477,17.78847 1.5190477,12 1.5190475,6.2115298 6.2115298,1.5190477 12,1.5190477 c 0.653263,0 1.292568,0.059766 1.912744,0.1741274 C 18.787854,2.5921561 22.480952,6.8647934 22.480952,12 Z"
sodipodi:nodetypes="ssssss" />
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M4 21V9l8-6l8 6v12h-6v-7h-4v7Z" />
</svg>

After

Width:  |  Height:  |  Size: 148 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Design Icons by Pictogrammers - https://github.com/Templarian/MaterialDesign/blob/master/LICENSE -->
<path fill="#F22" d="M20.62 2c3.35 5.61-8.15 18.15-8.15 18.15L9.6 17.28L4.91 22l-2.14-2.14z" />
</svg>

After

Width:  |  Height:  |  Size: 311 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Design Icons by Pictogrammers - https://github.com/Templarian/MaterialDesign/blob/master/LICENSE --><path fill="currentColor" d="M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8"/></svg>

After

Width:  |  Height:  |  Size: 286 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 21L21 6l-3-3L3 18zm9-15l3 3M9 3a2 2 0 0 0 2 2a2 2 0 0 0-2 2a2 2 0 0 0-2-2a2 2 0 0 0 2-2m10 10a2 2 0 0 0 2 2a2 2 0 0 0-2 2a2 2 0 0 0-2-2a2 2 0 0 0 2-2" />
</svg>

After

Width:  |  Height:  |  Size: 348 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M12 2a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3m7 9c0 3.53-2.61 6.44-6 6.93V21h-2v-3.07c-3.39-.49-6-3.4-6-6.93h2a5 5 0 0 0 5 5a5 5 0 0 0 5-5z" />
</svg>

After

Width:  |  Height:  |  Size: 277 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M11 4V3c0-.55.45-1 1-1s1 .45 1 1v1zm2 5V5h-2v4H9v6c0 1.3.84 2.4 2 2.82V22h2v-4.18c1.16-.42 2-1.52 2-2.82V9z" />
</svg>

After

Width:  |  Height:  |  Size: 225 B

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
id="vector"
width="24"
height="24"
viewBox="0 0 150.72 144.4"
version="1.1"
sodipodi:docname="ic_monado_notif.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="24.5"
inkscape:cx="10.265306"
inkscape:cy="15.469388"
inkscape:window-width="2560"
inkscape:window-height="1378"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="vector" />
<g
transform="translate(6.0288, 8.5612955) scale(0.92, 0.8814225)"
id="g_0"
style="fill:#ffffff">
<path
fill="#782b90"
d="m143.23,19.75L79.85,0.66c-2.93,-0.88 -6.05,-0.88 -8.97,0L7.49,19.75c-4.45,1.34 -7.49,5.43 -7.49,10.08v85.07c0,4.66 3.07,8.77 7.54,10.09l63.43,18.77c2.87,0.85 5.92,0.85 8.79,0l63.43,-18.77c4.47,-1.32 7.54,-5.43 7.54,-10.09L150.72,29.83c0,-4.64 -3.04,-8.74 -7.49,-10.08ZM49.02,104l-17.99,-5.35c-2.52,-0.75 -4.24,-3.06 -4.24,-5.68v-36.81l22.23,30.57v17.28ZM75.36,108.15v0l-0,-0 -0,0v-0L26.79,41.84l17.99,-5.35c2.35,-0.7 4.88,0.12 6.38,2.06l24.19,31.33 24.19,-31.33c1.5,-1.94 4.04,-2.76 6.38,-2.06l17.99,5.35 -48.56,66.3ZM123.93,92.96c0,2.62 -1.72,4.94 -4.24,5.68l-17.99,5.35v-17.28l22.23,-30.57v36.81Z"
id="path1"
style="fill:#ffffff" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE -->
<path fill="currentColor" d="M12 19q1.65 0 2.825-1.175T16 15v-4q0-1.65-1.175-2.825T12 7T9.175 8.175T8 11v4q0 1.65 1.175 2.825T12 19m-2-3h4v-2h-4zm0-4h4v-2h-4zm2 9q-1.625 0-3.012-.8T6.8 18H4v-2h2.1q-.075-.5-.088-1T6 14H4v-2h2q0-.5.012-1t.088-1H4V8h2.8q.35-.575.788-1.075T8.6 6.05L7 4.4L8.4 3l2.15 2.15q.7-.225 1.425-.225t1.425.225L15.6 3L17 4.4l-1.65 1.65q.575.375 1.038.862T17.2 8H20v2h-2.1q.075.5.088 1T18 12h2v2h-2q0 .5-.013 1t-.087 1H20v2h-2.8q-.8 1.4-2.187 2.2T12 21" />
</svg>

After

Width:  |  Height:  |  Size: 682 B

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from IconaMoon by Dariush Habibpour - https://creativecommons.org/licenses/by/4.0/ -->
<g fill="none" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M4 8h9m4 0h3m-9 8h9M4 16h3" />
<circle cx="9" cy="16" r="2" />
<circle cx="15" cy="8" r="2" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 413 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE -->
<path fill="currentColor" d="M12 22q-2.05 0-3.875-.788t-3.187-2.15t-2.15-3.187T2 12q0-2.075.813-3.9t2.2-3.175T8.25 2.788T12.2 2q2 0 3.775.688t3.113 1.9t2.125 2.875T22 11.05q0 2.875-1.75 4.413T16 17h-1.85q-.225 0-.312.125t-.088.275q0 .3.375.863t.375 1.287q0 1.25-.687 1.85T12 22m-5.5-9q.65 0 1.075-.425T8 11.5t-.425-1.075T6.5 10t-1.075.425T5 11.5t.425 1.075T6.5 13m3-4q.65 0 1.075-.425T11 7.5t-.425-1.075T9.5 6t-1.075.425T8 7.5t.425 1.075T9.5 9m5 0q.65 0 1.075-.425T16 7.5t-.425-1.075T14.5 6t-1.075.425T13 7.5t.425 1.075T14.5 9m3 4q.65 0 1.075-.425T19 11.5t-.425-1.075T17.5 10t-1.075.425T16 11.5t.425 1.075T17.5 13M12 20q.225 0 .363-.125t.137-.325q0-.35-.375-.825T11.75 17.3q0-1.05.725-1.675T14.25 15H16q1.65 0 2.825-.962T20 11.05q0-3.025-2.312-5.038T12.2 4Q8.8 4 6.4 6.325T4 12q0 3.325 2.338 5.663T12 20" />
</svg>

After

Width:  |  Height:  |  Size: 1015 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M3 20q-.425 0-.712-.288T2 19V5q0-.425.288-.712T3 4q.2 0 .888.238t1.837.512t2.713.513T12 5.5t3.563-.238t2.712-.512t1.838-.513T21 4q.425 0 .713.288T22 5v14q0 .425-.288.713T21 20q-.2 0-.888-.238t-1.837-.512t-2.712-.513T12 18.5t-3.562.238t-2.713.512t-1.837.513T3 20m1-2.35q1.95-.575 3.963-.862T12 16.5t4.038.288T20 17.65V6.375q-1.95.575-3.963.85T12 7.5t-4.038-.275T4 6.375zM12 12" />
</svg>

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M8 19V5l11 7z" />
</svg>

After

Width:  |  Height:  |  Size: 131 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M12 22q-2.075 0-3.9-.788t-3.175-2.137T2.788 15.9T2 12q0-2.1.788-3.912t2.137-3.163l1.4 1.4q-1.1 1.1-1.712 2.55T4 12q0 3.35 2.325 5.675T12 20t5.675-2.325T20 12q0-1.675-.612-3.125t-1.713-2.55l1.4-1.4q1.35 1.35 2.138 3.163T22 12q0 2.075-.788 3.9t-2.137 3.175t-3.175 2.138T12 22m-1-9V2h2v11z" />
</svg>

After

Width:  |  Height:  |  Size: 405 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M11 23v-4.175L9.9 19.9l-1.4-1.4L12 15l3.5 3.5l-1.4 1.4l-1.1-1.075V23zm-5.5-7.5l-1.4-1.4L5.175 13H1v-2h4.175L4.1 9.9l1.4-1.4L9 12zm13 0L15 12l3.5-3.5l1.4 1.4l-1.075 1.1H23v2h-4.175l1.075 1.1zm-6.5-2q-.625 0-1.062-.437T10.5 12t.438-1.062T12 10.5t1.063.438T13.5 12t-.437 1.063T12 13.5M12 9L8.5 5.5l1.4-1.4L11 5.175V1h2v4.175L14.1 4.1l1.4 1.4z" />
</svg>

After

Width:  |  Height:  |  Size: 458 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M12 20q-3.35 0-5.675-2.325T4 12t2.325-5.675T12 4q1.725 0 3.3.712T18 6.75V4h2v7h-7V9h4.2q-.8-1.4-2.187-2.2T12 6Q9.5 6 7.75 7.75T6 12t1.75 4.25T12 18q1.925 0 3.475-1.1T17.65 14h2.1q-.7 2.65-2.85 4.325T12 20" />
</svg>

After

Width:  |  Height:  |  Size: 323 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="#F55" d="M7 12c0 .55.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1m5-10C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8s8 3.59 8 8s-3.59 8-8 8" />
</svg>

After

Width:  |  Height:  |  Size: 308 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M9.5 16q-2.725 0-4.612-1.888T3 9.5t1.888-4.612T9.5 3t4.613 1.888T16 9.5q0 1.1-.35 2.075T14.7 13.3l5.6 5.6q.275.275.275.7t-.275.7t-.7.275t-.7-.275l-5.6-5.6q-.75.6-1.725.95T9.5 16m0-2q1.875 0 3.188-1.312T14 9.5t-1.312-3.187T9.5 5T6.313 6.313T5 9.5t1.313 3.188T9.5 14" />
</svg>

After

Width:  |  Height:  |  Size: 382 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="m9.25 22l-.4-3.2q-.325-.125-.612-.3t-.563-.375L4.7 19.375l-2.75-4.75l2.575-1.95Q4.5 12.5 4.5 12.338v-.675q0-.163.025-.338L1.95 9.375l2.75-4.75l2.975 1.25q.275-.2.575-.375t.6-.3l.4-3.2h5.5l.4 3.2q.325.125.613.3t.562.375l2.975-1.25l2.75 4.75l-2.575 1.95q.025.175.025.338v.674q0 .163-.05.338l2.575 1.95l-2.75 4.75l-2.95-1.25q-.275.2-.575.375t-.6.3l-.4 3.2zm2.8-6.5q1.45 0 2.475-1.025T15.55 12t-1.025-2.475T12.05 8.5q-1.475 0-2.488 1.025T8.55 12t1.013 2.475T12.05 15.5" />
</svg>

After

Width:  |  Height:  |  Size: 583 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M23 12h-6v-2l3.39-4H17V4h6v2l-3.38 4H23zm-8 4H9v-2l3.39-4H9V8h6v2l-3.38 4H15zm-8 4H1v-2l3.39-4H1v-2h6v2l-3.38 4H7z" />
</svg>

After

Width:  |  Height:  |  Size: 232 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE -->
<path fill="white" d="M4 20q-.825 0-1.412-.587T2 18V6q0-.825.588-1.412T4 4h16q.825 0 1.413.588T22 6v12q0 .825-.587 1.413T20 20zm0-2h16V8H4zm3.5-1l-1.4-1.4L8.675 13l-2.6-2.6L7.5 9l4 4zm4.5 0v-2h6v2z" />
</svg>

After

Width:  |  Height:  |  Size: 408 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE --><path fill="currentColor" d="M7 21q-.825 0-1.412-.587T5 19V6H4V4h5V3h6v1h5v2h-1v13q0 .825-.587 1.413T17 21zM17 6H7v13h10zM9 17h2V8H9zm4 0h2V8h-2zM7 6v13z"/></svg>

After

Width:  |  Height:  |  Size: 360 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M12 22q-2.075 0-3.9-.788t-3.175-2.15t-2.137-3.187T2 12q0-3.925 2.6-6.75t6.4-3.2v3q-2.575.35-4.288 2.313T5 12q0 2.9 2.05 4.95T12 19q1.65 0 3.088-.7t2.412-1.9l2.6 1.5q-1.35 1.875-3.475 2.988T12 22m9.15-5.95l-2.6-1.5q.225-.6.337-1.237T19 12q0-2.675-1.713-4.637T13 5.05v-3q3.8.375 6.4 3.2T22 12q0 1.1-.2 2.125t-.65 1.925" />
</svg>

After

Width:  |  Height:  |  Size: 434 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M19 11.975q0-2.075-1.1-3.787t-2.95-2.563q-.375-.175-.55-.537t-.05-.738q.15-.4.538-.575t.787 0Q18.1 4.85 19.55 7.063T21 11.974t-1.45 4.913t-3.875 3.287q-.4.175-.788 0t-.537-.575q-.125-.375.05-.737t.55-.538q1.85-.85 2.95-2.562t1.1-3.788M7 15H4q-.425 0-.712-.288T3 14v-4q0-.425.288-.712T4 9h3l3.3-3.3q.475-.475 1.088-.213t.612.938v11.15q0 .675-.612.938T10.3 18.3zm9.5-3q0 1.05-.475 1.988t-1.25 1.537q-.25.15-.513.013T14 15.1V8.85q0-.3.263-.437t.512.012q.775.625 1.25 1.575t.475 2" />
</svg>

After

Width:  |  Height:  |  Size: 595 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="#FF8888" d="M16.775 19.575q-.275.175-.55.325t-.575.275q-.375.175-.762 0t-.538-.575q-.15-.375.038-.737t.562-.538q.1-.05.188-.1t.187-.1L12 14.8v2.775q0 .675-.612.938T10.3 18.3L7 15H4q-.425 0-.712-.288T3 14v-4q0-.425.288-.712T4 9h2.2L2.1 4.9q-.275-.275-.275-.7t.275-.7t.7-.275t.7.275l17 17q.275.275.275.7t-.275.7t-.7.275t-.7-.275zm2.225-7.6q0-2.075-1.1-3.787t-2.95-2.563q-.375-.175-.55-.537t-.05-.738q.15-.4.538-.575t.787 0Q18.1 4.85 19.55 7.05T21 11.975q0 .825-.15 1.638t-.425 1.562q-.2.55-.612.688t-.763.012t-.562-.45t-.013-.75q.275-.65.4-1.312T19 11.975m-4.225-3.55Q15.6 8.95 16.05 10t.45 2v.25q0 .125-.025.25q-.05.325-.35.425t-.55-.15L14.3 11.5q-.15-.15-.225-.337T14 10.775V8.85q0-.3.263-.437t.512.012M9.75 6.95Q9.6 6.8 9.6 6.6t.15-.35l.55-.55q.475-.475 1.087-.213t.613.938V8q0 .35-.3.475t-.55-.125z" />
</svg>

After

Width:  |  Height:  |  Size: 908 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 15 15">
<path fill="white" d="m.851 5.4l.137.48zm13.298 0l.137-.481zM4.58 12.352l.44.24zm5.84 0l.438-.239zM2.996 3.757l-.464-.185zm-.961 1.057a.5.5 0 0 0 .928.372zm9.967-1.057l.464-.185zm.033 1.429a.5.5 0 1 0 .928-.372zm1.964.68V9.21h1V5.865zM11.21 12h-.542v1h.542zm-6.878 0H3.79v1h.542zM1 9.21V5.865H0V9.21zM.988 5.88a23.7 23.7 0 0 1 13.024 0l.274-.961a24.7 24.7 0 0 0-13.572 0zM3.79 12A2.79 2.79 0 0 1 1 9.21H0A3.79 3.79 0 0 0 3.79 13zm.352.113a.22.22 0 0 1 .19-.113v1a.78.78 0 0 0 .687-.408zm.877.479c1.071-1.963 3.89-1.963 4.962 0l.877-.479c-1.45-2.658-5.267-2.658-6.716 0zM10.668 12c.08 0 .152.043.19.113l-.877.479a.78.78 0 0 0 .687.408zM14 9.21A2.79 2.79 0 0 1 11.21 12v1A3.79 3.79 0 0 0 15 9.21zm1-3.345a.984.984 0 0 0-.714-.946l-.274.961A.02.02 0 0 1 14 5.865zm-14 0a.02.02 0 0 1-.012.015l-.274-.96A.984.984 0 0 0 0 5.865zm1.533-2.293l-.497 1.242l.928.372l.497-1.243zm9.006.37l.497 1.244l.928-.372l-.497-1.242zM4.854 3h5.292V2H4.854zm7.613.572A2.5 2.5 0 0 0 10.146 2v1a1.5 1.5 0 0 1 1.393.943zm-9.006.37A1.5 1.5 0 0 1 4.854 3V2a2.5 2.5 0 0 0-2.321 1.572z" />
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="30"
height="30"
viewBox="0 0 7.9375004 7.9375004"
version="1.1"
id="svg1"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
sodipodi:docname="mono.svg"
inkscape:export-filename="dashboard_logo.png"
inkscape:export-xdpi="409.60001"
inkscape:export-ydpi="409.60001"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="16"
inkscape:cx="11.84375"
inkscape:cy="16.78125"
inkscape:window-width="1836"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="layer1"
showgrid="true"
showguides="false">
<inkscape:grid
id="grid2"
units="mm"
originx="0"
originy="0"
spacingx="0.26458333"
spacingy="0.26458333"
empcolor="#0099e5"
empopacity="0.30196078"
color="#0099e5"
opacity="0.14901961"
empspacing="5"
enabled="true"
visible="true" />
</sodipodi:namedview>
<defs
id="defs1" />
<g
inkscape:label="back"
inkscape:groupmode="layer"
id="layer1">
<path
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 1.5874998,3.7041664 v 1.3229167 h 1.3229166 v 1.3229165 l 1.3229165,-1e-7"
id="path3"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 1.5874998,2.6458332 V 1.5875 c 3.1749997,-2e-7 4.7624995,1.5874997 4.7624995,4.7624995 H 5.2916661"
id="path4"
sodipodi:nodetypes="cccc" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="front"
style="stroke-width:2.11667;stroke-dasharray:none" />
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24">
<path fill="white" d="M16 7H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2M4 19v-8h12V9l.002 10z" />
<path fill="white" d="M22 5c0-1.103-.897-2-2-2H7c-1.103 0-2 .897-2 2h13.001c1.101 0 1.996.895 1.999 1.994L20.002 15H20v2c1.103 0 2-.897 2-2V8.007L22.001 8V6L22 5.99z" />
</svg>

After

Width:  |  Height:  |  Size: 404 B

View File

@ -0,0 +1,169 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="180"
height="180"
viewBox="0 0 180 180"
version="1.1"
id="svg1"
xml:space="preserve"
sodipodi:docname="wivrn_head_symbolic.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
id="namedview1"
pagecolor="#000000"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="3.3305556"
inkscape:cx="62.602168"
inkscape:cy="88.27356"
inkscape:window-width="1969"
inkscape:window-height="1165"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" /><title
id="title1">WiVRn Wyvern yippe</title><defs
id="defs1"><linearGradient
id="linearGradient19"><stop
style="stop-color:#e6aa00;stop-opacity:1;"
offset="0"
id="stop19" /><stop
style="stop-color:#eae69a;stop-opacity:1;"
offset="1"
id="stop20" /></linearGradient><linearGradient
id="linearGradient17"><stop
style="stop-color:#e6aa00;stop-opacity:1;"
offset="0"
id="stop17" /><stop
style="stop-color:#eae69a;stop-opacity:1;"
offset="1"
id="stop18" /></linearGradient><linearGradient
id="linearGradient12"><stop
style="stop-color:#e09100;stop-opacity:1;"
offset="0"
id="stop12" /><stop
style="stop-color:#eae69a;stop-opacity:1;"
offset="1"
id="stop15" /></linearGradient><linearGradient
id="linearGradient4"><stop
style="stop-color:#001b42;stop-opacity:1;"
offset="0"
id="stop4" /><stop
style="stop-color:#000308;stop-opacity:1;"
offset="1"
id="stop5" /></linearGradient><linearGradient
xlink:href="#linearGradient4"
id="linearGradient3"
x1="-9.9182129e-05"
y1="255.99979"
x2="512.00006"
y2="255.99979"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-2.1362305e-4,-511.99978)" /><linearGradient
xlink:href="#linearGradient4"
id="linearGradient5"
x1="-9.9182129e-05"
y1="255.99979"
x2="512.00006"
y2="255.99979"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-2.1362305e-4,-511.99978)" /><linearGradient
xlink:href="#linearGradient12"
id="linearGradient15"
x1="231.79434"
y1="216.66031"
x2="-107.19677"
y2="-122.3308"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient17"
id="linearGradient18"
x1="287.30957"
y1="58.948975"
x2="239.39442"
y2="11.033832"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient19"
id="linearGradient20"
x1="96.295563"
y1="279.51785"
x2="18.726246"
y2="200.55717"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient19"
id="linearGradient22"
x1="513.62122"
y1="177.14229"
x2="399.88248"
y2="79.645096"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1063376,0.29644226,-0.29644226,1.1063376,-31.100051,-154.59176)" /></defs><g
id="night-sky"
style="display:none"
transform="matrix(0.35156237,0,0,0.35156237,6.6787018e-5,-2.0283465e-4)"><rect
style="opacity:1;fill:url(#linearGradient5);stroke:url(#linearGradient3);stroke-width:109.387;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="rect1"
width="402.61319"
height="402.61276"
x="54.693188"
y="-457.30637"
transform="rotate(90)" /><path
style="opacity:1;fill:url(#linearGradient15);fill-opacity:1;stroke:#000000;stroke-width:25.2217;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="path12"
d="M 219.20311,114.5513 107.70982,111.45267 41.950025,201.54153 10.443676,94.547585 -95.556813,59.845289 -3.5355221,-3.181977 -3.2876299,-114.71803 85.091005,-46.67708 191.2447,-80.907857 153.84441,24.171031 Z"
transform="matrix(0.35683517,0,0,0.35683517,53.99049,62.985431)" /><path
style="opacity:1;fill:url(#linearGradient20);fill-opacity:1;stroke:#000000;stroke-width:9;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="path16"
d="m 91.923883,258.09397 -24.559389,-2.01745 -15.585017,19.08772 -5.670558,-23.98079 -22.969535,-8.92381 21.054792,-12.80349 1.389064,-24.60293 18.683135,16.0678 23.828023,-6.28165 -9.50798,22.73394 z" /><path
style="opacity:1;fill:url(#linearGradient18);fill-opacity:1;stroke:#000000;stroke-width:9;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="path17"
d="m 282.84271,38.890874 -13.87372,2.657982 -5.67564,12.935685 -6.8151,-12.373325 -14.05644,-1.400506 9.66175,-10.305117 -3.01172,-13.801245 12.7864,6.004413 12.19509,-7.129133 -1.75932,14.016048 z" /><path
style="opacity:1;fill:url(#linearGradient22);fill-opacity:1;stroke:#000000;stroke-width:9;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="m 380.70776,184.75225 c -6.12682,2.5958 78.08431,26.29978 99.99397,-55.46822 21.04184,-78.529228 -65.63535,-99.651425 -59.9966,-93.381543 23.8872,26.560922 27.24809,55.867376 20.10618,82.193633 -7.64406,28.1771 -28.65811,53.33337 -60.10355,66.65613 z"
id="path20" /></g><g
id="wivrn"
transform="matrix(0.35156237,0,0,0.35156237,6.6787018e-5,-2.0283465e-4)"
style="display:inline"><g
id="layer1"
transform="matrix(2.8444455,0,0,2.8444455,-189.84471,-30.499434)"
style="stroke-width:14.99999998;stroke-dasharray:none"><path
style="fill:none;stroke:#ffffff;stroke-width:14.99999998;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
d="m 92.534742,122.93881 c -2.905994,7.38008 -4.746438,21.30199 8.633538,32.72739 7.57609,6.46936 20.38912,11.86588 32.48415,13.44224 9.58171,1.24879 26.70701,1.21338 32.90963,0.63191 11.80031,-1.10625 34.50568,-10.07679 44.543,-20.83318"
id="path14-7" /><path
style="fill:none;stroke:#ffffff;stroke-width:14.99999998;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
d="m 188.46876,110.26038 -5.21956,9.63246 -22.58647,-0.33215 c -6.90616,-0.0316 -7.30738,-7.07013 -13.85556,-7.07013 l -25.10134,0.80665 c -4.79251,0.18981 -5.81439,7.39991 -11.05598,7.96931 l -18.885326,1.4259 -12.960463,-22.50447 C 76.839174,95.928995 77.695768,91.866643 80.139132,87.863715 L 95.797837,62.429456 c 2.039918,-2.678813 4.159493,-5.023837 8.321053,-5.435523 l 74.41968,-3.237827 c 5.0906,-0.295214 8.73208,1.737803 11.00526,5.250985 l 11.20838,18.604622 -0.009,-0.01397"
id="path18-6" /><path
style="fill:none;stroke:#ffffff;stroke-width:14.99999998;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
d="m 134.47003,55.383809 c 4.67387,-5.765243 7.35483,-13.381057 7.35483,-13.381057 0,0 3.55879,6.714253 4.17565,12.147342"
id="path42-8" /><path
style="fill:none;stroke:#ffffff;stroke-width:14.99999998;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
d="m 188.84836,57.969864 c 7.2018,-9.344387 17.89541,-13.953904 27.09427,-16.702596 8.57089,-2.561049 14.57571,-4.987318 19.50218,-12.716749 3.16826,13.836148 -0.44802,26.39734 -3.84686,34.544005 -3.23674,7.758106 -11.52712,19.359828 -19.83097,24.294686"
id="path43-8" /><path
style="fill:none;stroke:#ffffff;stroke-width:14.99999998;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
d="m 200.75221,77.611713 c 9.05609,7.170997 12.00082,10.65054 15.89737,19.107608"
id="path44-5" /><path
style="fill:none;stroke:#ffffff;stroke-width:14.99999998;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
d="m 211.10506,148.90717 c 18.09388,-17.60049 9.68681,-45.03368 5.54452,-52.187849 -5.07761,-8.122981 -5.86539,-15.251314 -17.01296,-19.574554 l -10.98381,32.405743 v 0 c 10.01156,2.93429 24.20554,12.33526 29.85215,19.21559"
id="path45-0" /></g></g><metadata
id="metadata1"><rdf:RDF><cc:Work
rdf:about=""><dc:title>WiVRn Wyvern yippe</dc:title><dc:date>1/25/25</dc:date><dc:creator><cc:Agent><dc:title>Yaya, y.a.y.a on Discord.</dc:title></cc:Agent></dc:creator><cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata></svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,158 @@
<layout>
<include src="theme.xml" />
<theme>
<var key="side_size" value="48" />
<var key="top_size" value="40" />
<var key="side_sprite_size" value="26" />
<var key="side_button_size" value="48" />
</theme>
<template name="SideButton">
<Button
id="${id}"
round="100%"
width="~side_button_size"
height="~side_button_size"
color="#44444400"
hover_color="#333333ff"
border_color="#00000000"
hover_border_color="#555555ff"
tooltip="${tooltip}"
tooltip_side="${tooltip_side}"
>
<sprite src_builtin="${src_builtin}" width="~side_sprite_size" height="~side_sprite_size" />
</Button>
</template>
<elements>
<!-- left/right separator (menu and rest) -->
<div flex_direction="row" gap="8" width="100%" height="100%" padding="4" interactable="0">
<!-- LEFT MENU -->
<div id="menu"
width="~side_size"
min_width="~side_size"
max_width="~side_size"
height="100%"
align_items="center"
justify_content="center">
<rectangle
width="100%"
round="100%"
color="~color_menu_dark"
flex_direction="column"
justify_content="center"
align_items="center"
gap="4"
>
<SideButton id="btn_side_home" src_builtin="dashboard/wayvr_dashboard_mono.svg" tooltip="HOME_SCREEN" tooltip_side="right" />
<SideButton id="btn_side_apps" src_builtin="dashboard/apps.svg" tooltip="APPLICATIONS" tooltip_side="right" />
<SideButton id="btn_side_games" src_builtin="dashboard/games.svg" tooltip="GAMES" tooltip_side="right" />
<SideButton id="btn_side_monado" src_builtin="dashboard/monado.svg" tooltip="MONADO_RUNTIME" tooltip_side="right" />
<rectangle height="2" color="#FFFFFF33" width="~side_sprite_size" />
<SideButton id="btn_side_settings" src_builtin="dashboard/settings.svg" tooltip="SETTINGS" tooltip_side="right" />
</rectangle>
</div>
<!-- REST -->
<!-- top/content/bottom panel separator -->
<div
flex_direction="column"
gap="8"
width="100%"
height="100%"
overflow_x="scroll">
<!-- TOP PANEL -->
<div position="relative" width="100%" height="~top_size" min_height="~top_size" max_height="~top_size" justify_content="end">
<!-- Title bar -->
<div width="100%" align_items="center" justify_content="center">
<rectangle min_width="300" height="100%" consume_mouse_events="1" round="100%" color="~color_top_panel" align_items="center" justify_content="center" gap="8">
<sprite id="sprite_titlebar_icon" width="24" height="24" />
<label id="label_titlebar_title" weight="bold" size="16" text="Title" />
</rectangle>
</div>
<!-- Close button -->
<Button position="absolute" id="btn_close" color="~color_top_panel" round="100%" width="~top_size" height="~top_size" tooltip="CLOSE_WINDOW" tooltip_side="left">
<sprite src_builtin="dashboard/close.svg" width="32" height="32" />
</Button>
</div>
<!-- CONTENT -->
<!-- color and color2 alpha will be modified at runtime -->
<rectangle
id="rect_content"
color2="#0d131a00"
color="#252f5300"
gradient="vertical"
round="8"
flex_grow="1"
width="100%"
overflow="scroll"
position="relative"
>
<!-- radial gradient -->
<rectangle
position="absolute" width="100%" height="100%"
gradient="radial" color="#44BBFF11" color2="#00000000" />
<div overflow_x="scroll" overflow_y="scroll" width="100%" height="100%">
<div
id="content"
flex_direction="column"
padding="16"
gap="8"
width="100%"
height="100%"
>
<!-- filled-in at runtime -->
</div>
</div>
<div position="absolute" id="popup_manager" width="100%" height="100%" />
</rectangle>
<!-- BOTTOM PANEL -->
<rectangle
consume_mouse_events="1"
width="100%"
height="48"
min_height="48"
max_height="48"
box_sizing="border_box"
round="8"
flex_direction="row"
align_items="center"
justify_content="space_between"
color="~color_bottom_panel"
>
<!-- left gradient -->
<div position="absolute" width="100%" height="100%" justify_content="start">
<rectangle position="absolute" width="40%" height="100%" color="#0a0a0a" color2="#0a0a0a00" round="8" gradient="horizontal" />
</div>
<!-- right gradient -->
<div position="absolute" width="100%" height="100%" justify_content="end">
<rectangle position="absolute" width="40%" height="100%" color2="#0a0a0a" color="#0a0a0a00" round="8" gradient="horizontal" />
</div>
<!-- top shine -->
<div position="absolute" width="100%" height="100%" justify_content="center">
<rectangle position="absolute" width="99%" height="2" color="#FFFFFF22" round="4" />
</div>
<!-- Left bottom side -->
<div margin_left="8">
<Button id="btn_audio" color="#FFFFFF00" border_color="#FFFFFF00" tooltip="AUDIO.VOLUME" tooltip_side="top">
<sprite src_builtin="dashboard/volume.svg" width="24" height="24" margin="8" />
</Button>
<Button id="btn_recenter" color="#FFFFFF00" border_color="#FFFFFF00" tooltip="ACTIONS.RECENTER_PLAYSPACE" tooltip_side="top">
<sprite src_builtin="dashboard/recenter.svg" width="24" height="24" margin="8" />
</Button>
</div>
<!-- Right bottom side -->
<div margin_right="16">
<label id="label_time" size="16" weight="light" />
</div>
</rectangle>
</div>
</div>
</elements>
</layout>

View File

@ -0,0 +1,27 @@
<layout>
<include src="theme.xml" />
<macro name="dropdown_button"
flex_direction="row"
border="2"
color="#00000055"
border_color="#FFFFFF66"
justify_content="space_between" />
<!-- id, text, translation, tooltip -->
<template name="DropdownButton">
<label text="${text}" translation="${translation}" />
<Button id="${id}" height="32" tooltip="${tooltip}" >
<div padding_left="8" padding_right="8" min_width="200">
<label id="${id}_value" weight="bold" />
</div>
<div gap="2">
<div padding_top="4" padding_bottom="4">
<rectangle width="2" height="100%" color="#FFFFFF66" />
</div>
<sprite margin_left="-4" width="30" height="30" color="~color_text" src_builtin="dashboard/down.svg" />
</div>
</Button>
</template>
</layout>

View File

@ -0,0 +1,22 @@
<layout>
<include src="theme.xml" />
<macro name="group_box"
flex_direction="column"
align_items="baseline"
border="2"
color="#00000055"
border_color="#FFFFFF66"
padding="12"
gap="8"
round="8" />
<!-- src_builtin, text, translation -->
<template name="GroupBoxTitle">
<div flex_direction="row" align_items="center" gap="8">
<sprite src_builtin="${src_builtin}" width="24" height="24" />
<label text="${text}" translation="${translation}" weight="bold" size="18" />
</div>
<rectangle color="#FFFFFF44" width="100%" height="2" />
</template>
</layout>

View File

@ -0,0 +1,16 @@
<layout>
<template name="LoadingWithText">
<div id="root" width="100%" height="100%" align_items="center" justify_content="center">
<div flex_direction="row" gap="8" align_items="center" >
<sprite id="sprite_loading" src_builtin="dashboard/loading.svg" width="32" height="32"/>
<label translation="LOADING" weight="bold"/>
</div>
</div>
</template>
<template name="LoadingWithoutText">
<div id="root" width="100%" height="100%" align_items="center" justify_content="center">
<sprite id="sprite_loading" src_builtin="dashboard/loading.svg" width="32" height="32"/>
</div>
</template>
</layout>

View File

@ -0,0 +1,23 @@
<layout>
<include src="theme.xml" />
<template name="MenuButton">
<Button
id="${id}"
width="120"
height="82"
color="#00000033"
border_color="#FFFFFF77"
hover_color="~color_accent"
hover_border_color="#FFFFFF"
round="8">
<div gap="8"
align_items="center"
justify_content="center"
flex_direction="column">
<sprite src_builtin="${icon}" width="32" height="32" />
<label weight="bold" size="18" text="${text}" translation="${translation}" />
</div>
</Button>
</template>
</layout>

View File

@ -0,0 +1,5 @@
<layout>
<template name="Separator">
<rectangle width="100%" height="1" color="#FFFFFF77" />
</template>
</layout>

View File

@ -0,0 +1,49 @@
<layout>
<include src="../theme.xml" />
<template name="AppEntry">
<Button
id="button" width="116" max_width="140" min_height="100" flex_grow="1"
flex_direction="column" overflow="visible" align_items="center" justify_content="center" gap="4"
color="#3385FF10"
>
<div>
<sprite src="${src}" src_ext="${src_ext}" width="64" height="64" />
</div>
<div align_items="center" justify_content="center">
<label width="116" weight="bold" text="${name}" size="12" wrap="1" align="center" padding_left="16" padding_right="16" />
</div>
</Button>
</template>
<template name="CategoryText">
<rectangle width="100%" flex_direction="column" round="8" border="2" gradient="vertical" color2="#4477FF09" color="#5588FF10" border_color="#FFFFFF00">
<label margin="8" text="${text}" weight="bold" size="22" />
<rectangle height="2" color="~color_accent" margin_left="4" margin_right="4" />
</rectangle>
</template>
<elements>
<!-- placeholders for now -->
<!--
<div gap="4" align_items="center">
<Button width="48" height="38">
<sprite src_builtin="dashboard/alphabetical.svg" width="24" height="24" />
</Button>
<Button width="48" height="38">
<sprite src_builtin="dashboard/category_search.svg" width="24" height="24" />
</Button>
<sprite src_builtin="dashboard/search.svg" width="24" height="24" />
<rectangle flex_grow="1" height="100%" color="#1d2e51" border_color="#294774" border="2" round="4" align_items="center" padding_left="12">
<label text="Search" color="#FFFFFF88" weight="bold" />
</rectangle>
</div>
-->
<div
id="app_list_parent"
flex_direction="row"
flex_wrap="wrap"
gap="4"
/>
</elements>
</layout>

View File

@ -0,0 +1,6 @@
<layout>
<elements>
<div id="running_games_list_parent" align_self="center" />
<div id="game_list_parent" align_items="center" flex_direction="column" gap="8" />
</elements>
</layout>

View File

@ -0,0 +1,23 @@
<layout>
<include src="../t_menu_button.xml" />
<elements>
<div
flex_direction="column"
justify_content="center"
align_items="center"
flex_grow="1"
gap="24">
<sprite src_builtin="dashboard/wayvr_dashboard.png" width="96" height="96" />
<label id="label_hello" size="32" weight="bold" />
<!-- main button list -->
<div flex_direction="row" gap="8">
<MenuButton id="btn_apps" icon="dashboard/apps.svg" translation="APPLICATIONS" />
<MenuButton id="btn_games" icon="dashboard/games.svg" translation="GAMES" />
<MenuButton id="btn_monado" icon="dashboard/monado.svg" text="Monado" />
<MenuButton id="btn_settings" icon="dashboard/settings.svg" translation="SETTINGS" />
</div>
</div>
</elements>
</layout>

View File

@ -0,0 +1,14 @@
<layout>
<elements>
<div gap="4">
<Tabs id="tabs">
<Tab name="general_settings" translation="GENERAL_SETTINGS" sprite_src_builtin="dashboard/settings.svg" />
<Tab name="process_list" translation="PROCESS_LIST" sprite_src_builtin="dashboard/cpu.svg" />
<Tab name="debug_timings" translation="DEBUG_INFO" sprite_src_builtin="dashboard/not_a_bug.svg" />
</Tabs>
<div gap="4" id="content" width="100%">
<!-- filled-in at runtime -->
</div>
</div>
</elements>
</layout>

View File

@ -0,0 +1,27 @@
<layout>
<include src="../t_group_box.xml" />
<!-- name, limit_min, limit_max -->
<template name="DebugGraph">
<rectangle flex_direction="column" align_items="center" gap="8" border="2" color="#ffffff11" color2="#ffffff22" gradient="vertical" border_color="#ffffff33" round="4" padding="4">
<label text="${name}" size="9" weight="bold" />
<BarGraph id="graph" width="180" height="70" unit="ms" limit_min="${limit_min}" limit_max="${limit_max}" capacity="50" />
</rectangle>
</template>
<!-- text -->
<template name="SessionButton">
<Button id="button" text="${text}" />
</template>
<elements>
<rectangle macro="group_box">
<GroupBoxTitle src_builtin="dashboard/apps.svg" text="Sessions" />
<div id="session_list_parent" flex_wrap="wrap" flex_direction="row" gap="8" />
<GroupBoxTitle src_builtin="dashboard/not_a_bug.svg" text="Debug timings" />
<div id="timings_parent" flex_wrap="wrap" flex_direction="row" gap="8">
<label text="Please select which session you want to monitor" />
</div>
</rectangle>
</elements>
</layout>

View File

@ -0,0 +1,56 @@
<layout>
<include src="../t_group_box.xml" />
<macro name="slider" width="100%" height="24"/>
<theme>
<var key="s_width" value="500"/>
</theme>
<elements>
<div flex_direction="column" gap="8">
<rectangle macro="group_box">
<GroupBoxTitle src_builtin="dashboard/settings.svg" translation="GENERAL_SETTINGS" />
<label translation="DISPLAY_BRIGHTNESS" />
<Slider id="slider_brightness" width="300" height="24" min_value="0" max_value="140" />
</rectangle>
<rectangle macro="group_box">
<GroupBoxTitle src_builtin="dashboard/settings.svg" translation="APP_SETTINGS.COLOR_KEYING" />
<div gap="8" width="~s_width">
<div gap="8" flex_direction="column" width="100%">
<label text="Color"/>
<ColorSelector id="cs_keying" height="24" width="100%"/>
</div>
<div gap="8" flex_direction="column" width="100%">
<label text="Despill"/>
<Slider id="slider_keying_despill" min_value="0" max_value="100" macro="slider"/>
</div>
<div gap="8" flex_direction="column" width="100%">
<label text="Curve (0 = disabled)"/>
<Slider id="slider_keying_curve" min_value="0" max_value="100" macro="slider"/>
</div>
</div>
<div gap="8" width="~s_width">
<div gap="8" flex_direction="column" width="100%">
<label text="Hue range"/>
<Slider id="slider_keying_hue_range" min_value="0" max_value="100" macro="slider"/>
</div>
<div gap="8" flex_direction="column" width="100%">
<label text="Saturation range"/>
<Slider id="slider_keying_saturation_range" min_value="0" max_value="100" macro="slider"/>
</div>
<div gap="8" flex_direction="column" width="100%">
<label text="Value range"/>
<Slider id="slider_keying_value_range" min_value="0" max_value="100" macro="slider"/>
</div>
</div>
</rectangle>
</div>
</elements>
</layout>

View File

@ -0,0 +1,35 @@
<layout>
<include src="../t_group_box.xml" />
<!-- key: str, value: str -->
<template name="BoolFlag">
<div flex_direction="row" gap="4">
<label text="${key}" />
<label weight="bold" text="${value}" />
</div>
</template>
<!-- name, checked, flag_* -->
<template name="Cell">
<rectangle macro="group_box">
<CheckBox id="checkbox" text="${name}" checked="${checked}" />
<div flex_direction="row" gap="8" flex_wrap="wrap">
<BoolFlag key="Active:" value="${flag_active}" />
<BoolFlag key="Focused:" value="${flag_focused}" />
<BoolFlag key="IO active:" value="${flag_io_active}" />
<BoolFlag key="Overlay:" value="${flag_overlay}" />
<BoolFlag key="Primary:" value="${flag_primary}" />
<BoolFlag key="Visible:" value="${flag_visible}" />
</div>
</rectangle>
</template>
<elements>
<rectangle macro="group_box">
<GroupBoxTitle src_builtin="dashboard/cpu.svg" translation="PROCESS_LIST" />
<div id="list_parent" flex_direction="column" gap="8">
<!-- filled at runtime -->
</div>
</rectangle>
</elements>
</layout>

View File

@ -0,0 +1,69 @@
<layout>
<include src="../t_group_box.xml" />
<include src="../t_dropdown_button.xml" />
<template name="SettingsGroupBox">
<rectangle macro="group_box" id="${id}" flex_grow="1">
<GroupBoxTitle translation="${translation}" src_builtin="${icon}" />
</rectangle>
</template>
<template name="CheckBoxSetting">
<CheckBox id="${id}" text="${text}" translation="${translation}" checked="${checked}" tooltip="${tooltip}" />
</template>
<template name="SliderSetting">
<Slider id="${id}" width="200" height="24" min_value="${min}" max_value="${max}" step="${step}" value="${value}" tooltip="${tooltip}" />
<label text="${text}" weight="bold" translation="${translation}" />
</template>
<template name="RangeSetting">
<Slider id="${id}" width="200" height="24" min_value="${min}" max_value="${max}" step="${step}" value="${value}" value2="${value2}" tooltip="${tooltip}" />
<label text="${text}" weight="bold" translation="${translation}" />
</template>
<template name="SelectSetting">
<label text="${text}" translation="${translation}" tooltip="${tooltip}" />
<RadioGroup id="${id}" />
</template>
<template name="SelectOption">
<RadioBox text="${text}" translation="${translation}" value="${value}" tooltip="${tooltip}" />
</template>
<template name="DangerButton">
<Button id="${id}" color="#AA3333" height="32" tooltip="${translation}_HELP" padding="4" gap="8">
<sprite src_builtin="${icon}" height="24" width="24" />
<label align="left" translation="${translation}" weight="bold" min_width="200" />
</Button>
</template>
<template name="AutostartApp">
<div id="${id}_root" flex_direction="row">
<Button id="${id}" color="#AA3333" height="24" padding="4" margin_top="-2" margin_bottom="-2">
<sprite src_builtin="dashboard/close.svg" height="20" width="20" />
</Button>
<div padding_left="8">
<label align="left" text="${text}" weight="bold" overflow="hidden" />
</div>
</div>
</template>
<elements>
<div gap="4">
<Tabs id="tabs">
<Tab name="look_and_feel" translation="APP_SETTINGS.LOOK_AND_FEEL" sprite_src_builtin="dashboard/palette.svg" />
<Tab name="skybox" translation="APP_SETTINGS.SKYBOX" sprite_src_builtin="dashboard/globe.svg" />
<Tab name="features" translation="APP_SETTINGS.FEATURES" sprite_src_builtin="dashboard/options.svg" />
<Tab name="controls" translation="APP_SETTINGS.CONTROLS" sprite_src_builtin="dashboard/controller.svg" />
<Tab name="space_drag" translation="APP_SETTINGS.SPACE_DRAG" sprite_src_builtin="dashboard/drag.svg" />
<Tab name="misc" translation="APP_SETTINGS.MISC" sprite_src_builtin="dashboard/blocks.svg" />
<Tab name="autostart_apps" translation="APP_SETTINGS.AUTOSTART_APPS" sprite_src_builtin="dashboard/apps.svg" />
<Tab name="troubleshooting" translation="APP_SETTINGS.TROUBLESHOOTING" sprite_src_builtin="dashboard/cpu.svg" />
</Tabs>
<div flex_wrap="wrap" justify_content="stretch" gap="4" id="settings_root" width="100%">
<!-- filled-in at runtime -->
</div>
</div>
</elements>
</layout>

View File

@ -0,0 +1,14 @@
<layout>
<include src="../t_group_box.xml" />
<elements>
<div id="common_options_parent" flex_direction="column" gap="8"/>
<rectangle macro="group_box">
<GroupBoxTitle src_builtin="dashboard/gravity.svg" translation="APP_SETTINGS.SPACE_GRAVITY_GRAVITY" />
<div id="gravity_enabled_parent"/>
<div id="space_gravity_parent" flex_direction="column" gap="8">
<!-- filled-in at runtime -->
</div>
</rectangle>
</elements>
</layout>

Some files were not shown because too many files have changed in this diff Show More