Compare commits

...
6 Commits
Author SHA1 Message Date
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
21 changed files with 106 additions and 51 deletions

No files matched your search

Generated
+2 -2
View File
@@ -6287,7 +6287,7 @@ dependencies = [
[[package]]
name = "wayvr"
version = "26.2.0"
version = "26.2.1"
dependencies = [
"anyhow",
"ash",
@@ -6361,7 +6361,7 @@ dependencies = [
[[package]]
name = "wayvrctl"
version = "26.2.0"
version = "26.2.1"
dependencies = [
"anyhow",
"clap",
+1
View File
@@ -26,6 +26,7 @@ There are multiple ways to install WayVR:
1. AppImage: Download from [Releases](https://github.com/wlx-team/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. [Building from source](https://github.com/wlx-team/wayvr/wiki/Building-from-Source).
### General Setup
+3 -1
View File
@@ -87,7 +87,9 @@
"HANDSFREE_POINTER_HELP": "Eingabe, die bei Bewegung\nder Controller verwendet wird, wenn diese nicht verfügbar sind.\nLinkes Kneifen greift, rechtes klickt.",
"UI_GRADIENT_INTENSITY": "UI-Verlaufsintensität",
"RESET_PLAYSPACE": "Spielbereich zurücksetzen",
"RESET_PLAYSPACE_HELP": "Den Abstand des Spielbereichs zurücksetzen."
"RESET_PLAYSPACE_HELP": "Den Abstand des Spielbereichs zurücksetzen.",
"BLOCK_POSES_ON_KBD_INTERACTION": "Posen beim Interagieren mit der Tastatur blockieren",
"BLOCK_POSES_ON_KBD_INTERACTION_HELP": "Verhindert, dass das Spiel Posen empfängt, wenn die Tastatur angefahren wird und „Spieleingabe blockieren“ aktiviert ist"
},
"HELLO": "Hallo!",
"AUDIO": {
+3 -1
View File
@@ -87,7 +87,9 @@
"HANDSFREE_POINTER_HELP": "Entrada a utilizar cuando no\nestén disponibles los mandos de movimiento.\nPellizco con la izquierda para agarrar, con la derecha para hacer clic.",
"UI_GRADIENT_INTENSITY": "Intensidad del degradado de la IU",
"RESET_PLAYSPACE": "Restablecer espacio de juego",
"RESET_PLAYSPACE_HELP": "Borrar el desplazamiento del espacio de juego."
"RESET_PLAYSPACE_HELP": "Borrar el desplazamiento del espacio de juego.",
"BLOCK_POSES_ON_KBD_INTERACTION": "Bloquear poses al interactuar con el teclado",
"BLOCK_POSES_ON_KBD_INTERACTION_HELP": "Bloquea que el juego reciba poses cuando el teclado está sobre él y 'Bloquear entrada del juego' está habilitado"
},
"HELLO": "¡Hola!",
"AUDIO": {
+3 -1
View File
@@ -107,7 +107,9 @@
"HANDSFREE_POINTER_HELP": "Input da usare quando i\ncontroller di movimento non sono disponibili.\nPizzico sinistro per afferrare, destro per cliccare.",
"UI_GRADIENT_INTENSITY": "Intensità gradiente dell'interfaccia utente",
"RESET_PLAYSPACE": "Ripristina playspace",
"RESET_PLAYSPACE_HELP": "Cancella l'offset dello spazio di gioco."
"RESET_PLAYSPACE_HELP": "Cancella l'offset dello spazio di gioco.",
"BLOCK_POSES_ON_KBD_INTERACTION": "Blocca le pose durante l'interazione con la tastiera",
"BLOCK_POSES_ON_KBD_INTERACTION_HELP": "Impedisce al gioco di ricevere pose quando la tastiera è evidenziata e 'Blocca input di gioco' è abilitato"
},
"APPLICATION_LAUNCHER": "Lanciatore applicazioni",
"APPLICATION_STARTED": "Applicazione avviata",
+3 -1
View File
@@ -87,7 +87,9 @@
"HANDSFREE_POINTER_HELP": "モーションコントローラーが利用できない場合の入力方法。\n左手のピンチは掴み、右手のピンチはクリックです。",
"UI_GRADIENT_INTENSITY": "UIグラデーションの強さ",
"RESET_PLAYSPACE": "プレイエリアをリセット",
"RESET_PLAYSPACE_HELP": "プレイエリアのオフセットをクリアします。"
"RESET_PLAYSPACE_HELP": "プレイエリアのオフセットをクリアします。",
"BLOCK_POSES_ON_KBD_INTERACTION": "キーボード操作時のポーズをブロック",
"BLOCK_POSES_ON_KBD_INTERACTION_HELP": "キーボードがホバーされ、「ゲーム入力をブロック」が有効になっている場合、ゲームがポーズを受信することをブロックします"
},
"HELLO": "こんにちは!",
"AUDIO": {
+3 -1
View File
@@ -82,7 +82,9 @@
"HANDSFREE_POINTER_HELP": "Wejście do użycia, gdy kontrolery ruchu\nsą niedostępne. Lewy szczyptak to chwyt,\nprawy to kliknięcie.",
"UI_GRADIENT_INTENSITY": "Intensywność gradientu UI",
"RESET_PLAYSPACE": "Zresetuj przestrzeń gry",
"RESET_PLAYSPACE_HELP": "Wyczyść przesunięcie przestrzeni gry."
"RESET_PLAYSPACE_HELP": "Wyczyść przesunięcie przestrzeni gry.",
"BLOCK_POSES_ON_KBD_INTERACTION": "Blokuj pozy podczas interakcji z klawiaturą",
"BLOCK_POSES_ON_KBD_INTERACTION_HELP": "Blokuje odbieranie póz przez grę, gdy kursor myszy znajduje się nad klawiaturą i włączona jest opcja 'Blokuj dane wejściowe z gry'"
},
"APPLICATION_LAUNCHER": "Uruchamiacz aplikacji",
"APPLICATIONS": "Aplikacje",
+3 -1
View File
@@ -107,7 +107,9 @@
"HANDSFREE_POINTER_HELP": "当运动控制器不可用时使用的输入。\n左手捏合为抓取,右手为点击。",
"UI_GRADIENT_INTENSITY": "UI 渐变强度",
"RESET_PLAYSPACE": "重置游戏空间",
"RESET_PLAYSPACE_HELP": "清除舞台空间偏移。"
"RESET_PLAYSPACE_HELP": "清除舞台空间偏移。",
"BLOCK_POSES_ON_KBD_INTERACTION": "与键盘交互时阻止姿势",
"BLOCK_POSES_ON_KBD_INTERACTION_HELP": "当键盘悬停且启用“阻止游戏输入”时,阻止游戏接收姿势"
},
"APPLICATION_LAUNCHER": "应用启动器",
"APPLICATION_STARTED": "应用已启动",
+9
View File
@@ -0,0 +1,9 @@
{
"BAR": {
"OPACITY": "Opacità",
"ADDITIVE": "Additivo"
},
"TESTBED": {
"HELLO_WORLD": "Ciao, mondo! Questo è un testo I18n tradotto."
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"BAR": {
"OPACITY": "不透明度",
"ADDITIVE": "加法"
},
"TESTBED": {
"HELLO_WORLD": "你好,世界!这是一段翻译后的国际化文本。"
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "wayvr"
version = "26.2.0"
version = "26.2.1"
edition = "2024"
license = "GPL-3.0-only"
authors = ["galister", "oo8dev"]
+1 -1
View File
@@ -67,7 +67,7 @@
<template name="Set">
<Button macro="button_style" id="set_${idx}" _press="::SetToggle ${idx}" tooltip="WATCH.SWITCH_TO_SET" tooltip_side="top">
<sprite width="40" height="40" color="~color_text" src_builtin="watch/set2.svg" />
<sprite width="38" height="38" color="~color_text" src_builtin="watch/set2.svg" />
<div position="absolute" margin_top="9">
<label text="${display}" size="24" color="#00050F" weight="bold" />
</div>
+7 -3
View File
@@ -17,7 +17,9 @@
"TITLE": "Freihändig-Modus",
"NONE": "Aus",
"HMD": "HMD + Kneifen",
"EYE_TRACKING": "Auge + Kneifen"
"EYE_TRACKING": "Auge + Kneifen",
"HMD_ONLY": "Nur HMD",
"EYE_ONLY": "Nur Augen"
}
},
"WATCH": {
@@ -45,7 +47,6 @@
"MOVE_PRESS_AND_DRAG": "Verschieben (drücken & ziehen)",
"OPACITY": "Undurchsichtigkeit",
"POSITIONING": "Positionierung",
"BLOCK_GAME_INPUT": "Spieleingabe blockieren",
"RESIZE_PRESS_AND_DRAG": "Größe ändern (gedrückt halten & ziehen)",
"POS_STATIC": "Statisch: Bleibt an Ort und Stelle und wird niemals neu zentriert.",
"POS_ANCHORED": "Verankert: Bewegt sich zusammen mit dem Rest des Sets. Standard.",
@@ -82,7 +83,10 @@
"ROTATE180": "180° gedreht",
"ROTATE270": "270° gedreht"
},
"GLOBAL": "Immer sichtbar"
"GLOBAL": "Immer sichtbar",
"ANGLE_FADE": "Winkelübergang",
"ANGLE_FADE_HELP": "Ausblenden, wenn nicht auf das Headset gerichtet",
"BLOCK_INPUT": "Blockiere Spieleingabe"
},
"DISABLED": "Deaktiviert",
"DEFAULT": "Standard",
+7 -3
View File
@@ -17,7 +17,9 @@
"TITLE": "Modo manos libres",
"NONE": "Desactivado",
"HMD": "HMD + pellizco",
"EYE_TRACKING": "Ojo + pellizco"
"EYE_TRACKING": "Ojo + pellizco",
"HMD_ONLY": "Solo HMD",
"EYE_ONLY": "Solo ojos"
}
},
"WATCH": {
@@ -45,7 +47,6 @@
"MOVE_PRESS_AND_DRAG": "Mover (presionar y arrastrar)",
"OPACITY": "Opacidad",
"POSITIONING": "Posicionamiento",
"BLOCK_GAME_INPUT": "Bloquear entrada del juego",
"RESIZE_PRESS_AND_DRAG": "Redimensionar (presionar y arrastrar)",
"POS_STATIC": "Estático: Permanece en su lugar y nunca se recentra.",
"POS_ANCHORED": "Anclado: Se mueve junto con el resto del conjunto. Predeterminado.",
@@ -82,7 +83,10 @@
"ROTATE180": "Rotado 180°",
"ROTATE270": "Rotado 270°"
},
"GLOBAL": "Siempre visible"
"GLOBAL": "Siempre visible",
"ANGLE_FADE": "Atenuación angular",
"ANGLE_FADE_HELP": "Desvanecer cuando no se mira el HMD",
"BLOCK_INPUT": "Bloquear entrada del juego"
},
"DISABLED": "Deshabilitado",
"DEFAULT": "Por defecto",
+7 -3
View File
@@ -17,7 +17,9 @@
"TITLE": "Modalità a mani libere",
"NONE": "Disattivato",
"HMD": "HMD + pizzico",
"EYE_TRACKING": "Occhio + pizzico"
"EYE_TRACKING": "Occhio + pizzico",
"HMD_ONLY": "Solo HMD",
"EYE_ONLY": "Solo occhi"
}
},
"DEFAULT": "Predefinito",
@@ -44,7 +46,6 @@
"POS_HMD": "Segui l'HMD.",
"POS_STATIC": "Statico: non fa parte di alcun set, senza recentratura.",
"POSITIONING": "Posizionamento",
"BLOCK_GAME_INPUT": "Blocca l'input di gioco",
"RESIZE_PRESS_AND_DRAG": "Ridimensiona (premi e trascina)",
"STEREO_3D_MODE": {
"SPLIT_BOTTOM_TOP": "DAL BASSO→IN ALTO",
@@ -70,7 +71,10 @@
"FLIP180": "Ruotato di 180°",
"FLIP270": "Ruotato di 270°"
},
"GLOBAL": "Sempre visibile"
"GLOBAL": "Sempre visibile",
"ANGLE_FADE": "Dissolvenza angolare",
"ANGLE_FADE_HELP": "Sfumatura quando non si guarda l'HMD",
"BLOCK_INPUT": "Blocca l'input del gioco"
},
"GRAB": {
"ADJUST_DISTANCE": "Regola la distanza",
+7 -3
View File
@@ -17,7 +17,9 @@
"TITLE": "ハンズフリーモード",
"NONE": "オフ",
"HMD": "HMD + ピンチ",
"EYE_TRACKING": "視線 + ピンチ"
"EYE_TRACKING": "視線 + ピンチ",
"HMD_ONLY": "HMDのみ",
"EYE_ONLY": "目のみ"
}
},
"WATCH": {
@@ -45,7 +47,6 @@
"MOVE_PRESS_AND_DRAG": "移動(押してドラッグ)",
"OPACITY": "不透明度",
"POSITIONING": "位置付け",
"BLOCK_GAME_INPUT": "ゲームの入力をブロック",
"RESIZE_PRESS_AND_DRAG": "サイズ変更(押してドラッグ)",
"POS_STATIC": "固定:置かれた場所に留まり、再センタリングされません。",
"POS_ANCHORED": "アンカー:セット内の他のウィンドウと共に移動します。デフォルト。",
@@ -80,7 +81,10 @@
"ROTATE180": "回転 180°",
"ROTATE270": "回転 270°"
},
"GLOBAL": "常に表示"
"GLOBAL": "常に表示",
"ANGLE_FADE": "角度フェード",
"ANGLE_FADE_HELP": "HMDに向いていない時にフェード",
"BLOCK_INPUT": "ゲーム入力をブロック"
},
"DISABLED": "無効",
"DEFAULT": "デフォルト",
+6 -2
View File
@@ -17,7 +17,9 @@
"TITLE": "Tryb wolnych rąk",
"NONE": "Wyłączone",
"HMD": "HMD + uszczypnięcie",
"EYE_TRACKING": "Oko + uszczypnięcie"
"EYE_TRACKING": "Oko + uszczypnięcie",
"HMD_ONLY": "Tylko HMD",
"EYE_ONLY": "Tylko oczy"
}
},
"WATCH": {
@@ -80,7 +82,9 @@
"FLIP180": "Odwrócony o 180°",
"FLIP270": "Odwrócony o 270°"
},
"GLOBAL": "Zawsze widoczne"
"GLOBAL": "Zawsze widoczne",
"ANGLE_FADE": "Zanik kątowy",
"ANGLE_FADE_HELP": "Wyblaknij, gdy nie patrzysz na HMD"
},
"DISABLED": "Wyłączone",
"DEFAULT": "Domyślny",
+7 -3
View File
@@ -17,7 +17,9 @@
"TITLE": "免提模式",
"NONE": "关闭",
"HMD": "HMD + 捏合",
"EYE_TRACKING": "眼动 + 捏合"
"EYE_TRACKING": "眼动 + 捏合",
"HMD_ONLY": "仅 HMD",
"EYE_ONLY": "仅限眼睛"
}
},
"DEFAULT": "默认",
@@ -44,7 +46,6 @@
"POS_HMD": "跟随头显 (HMD)。",
"POS_STATIC": "静态:不属于任何集合,不重新居中。",
"POSITIONING": "定位",
"BLOCK_GAME_INPUT": "屏蔽游戏输入",
"RESIZE_PRESS_AND_DRAG": "调整大小 (按住并拖拽)",
"STEREO_3D_MODE": {
"SPLIT_BOTTOM_TOP": "下→上",
@@ -70,7 +71,10 @@
"FLIP180": "镜像旋转 180°",
"FLIP270": "镜像旋转 270°"
},
"GLOBAL": "始终可见"
"GLOBAL": "始终可见",
"ANGLE_FADE": "角度淡出",
"ANGLE_FADE_HELP": "未朝向HMD时淡出",
"BLOCK_INPUT": "阻止游戏输入"
},
"GRAB": {
"ADJUST_DISTANCE": "调整距离",
+20 -20
View File
@@ -53,28 +53,28 @@
},
// Fallback controller, intended for testing
{
profile: "/interaction_profiles/khr/simple_controller",
pose: {
left: "/user/hand/left/input/aim/pose",
right: "/user/hand/right/input/aim/pose"
},
haptic: {
left: "/user/hand/left/output/haptic",
right: "/user/hand/right/output/haptic"
},
click: {
//{
// profile: "/interaction_profiles/khr/simple_controller",
// pose: {
// left: "/user/hand/left/input/aim/pose",
// right: "/user/hand/right/input/aim/pose"
// },
// haptic: {
// left: "/user/hand/left/output/haptic",
// right: "/user/hand/right/output/haptic"
// },
// click: {
// right trigger is click
right: "/user/hand/right/input/select/click"
},
grab: {
// right: "/user/hand/right/input/select/click"
// },
// grab: {
// left trigger is grab
left: "/user/hand/left/input/select/click",
},
show_hide: {
left: "/user/hand/left/input/menu/click"
}
},
// left: "/user/hand/left/input/select/click",
// },
// show_hide: {
// left: "/user/hand/left/input/menu/click"
// }
//},
// Oculus Touch Controller. Compatible with Quest 2, Quest 3, Quest Pro
{
+3 -3
View File
@@ -97,13 +97,13 @@ impl OverlayWindowData<OpenXrOverlayData> {
let transform = state.transform * self.config.backend.frame_meta().unwrap().transform; // contract
let aspect_ratio = swapchain.extent[1] as f32 / swapchain.extent[0] as f32;
let aspect_ratio = swapchain.extent[0] as f32 / swapchain.extent[1] as f32;
let (scale_x, scale_y) = if aspect_ratio < 1.0 {
let major = transform.matrix3.col(0).length();
(major, major * aspect_ratio)
(major * aspect_ratio, major)
} else {
let major = transform.matrix3.col(1).length();
(major / aspect_ratio, major)
(major, major / aspect_ratio)
};
let flags = if state.additive {
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "wayvrctl"
version = "26.2.0"
version = "26.2.1"
edition = "2024"
description = "CLI for controlling WayVR"
license = "GPL-3.0-only"