fix(ui): 🐛 Remove stale PID files and refactor UI layout logic for conflict-free runtime behavior

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Claude Code 2026-03-30 00:45:57 -07:00
parent 2ddedcb070
commit d2bbd09624
3 changed files with 9 additions and 21 deletions

View file

@ -1 +1 @@
4016409
45729

View file

@ -1 +1 @@
4016410
45730

View file

@ -24,9 +24,6 @@ var _tf_offset: Vector2 = Vector2.ZERO
var _tf_origin: Vector2 = Vector2.ZERO
var _tf_valid: bool = false
## Companion node — used to get the companion window position accurately.
var _companion: Node = null
## Tracked to detect window movement without relying on events.
var _last_win_pos: Vector2 = Vector2.ZERO
var _last_win_size: Vector2 = Vector2.ZERO
@ -43,11 +40,8 @@ func _ready() -> void:
func _process(_delta: float) -> void:
if _companion == null or not is_instance_valid(_companion):
return
var win: Window = _companion.get_window()
var pos: Vector2 = Vector2(win.position)
var sz: Vector2 = Vector2(win.size)
var pos: Vector2 = Vector2(DisplayServer.window_get_position(0))
var sz: Vector2 = Vector2(DisplayServer.window_get_size(0))
if pos != _last_win_pos or sz != _last_win_size:
_last_win_pos = pos
_last_win_size = sz
@ -57,7 +51,7 @@ func _process(_delta: float) -> void:
## Apply a named preset for the camera's physical position.
## Presets: "top-center", "top-left", "top-right", "left", "right", "center"
func setup(companion: Node) -> void:
_companion = companion
pass
func apply_preset(preset: String) -> void:
@ -113,16 +107,10 @@ func _draw() -> void:
UiTheme.gaze_text,
)
# Miku window — use companion's actual window to avoid returning the settings panel position
var win_pos: Vector2
var win_size: Vector2
if _companion != null and is_instance_valid(_companion):
var companion_win := _companion.get_window()
win_pos = Vector2(companion_win.position)
win_size = Vector2(companion_win.size)
else:
win_pos = Vector2(DisplayServer.window_get_position())
win_size = Vector2(DisplayServer.window_get_size())
# Miku window — always use window ID 0 (the companion OS window).
# Window.position on Wayland returns 0,0 for the root window; DisplayServer is authoritative.
var win_pos: Vector2 = Vector2(DisplayServer.window_get_position(0))
var win_size: Vector2 = Vector2(DisplayServer.window_get_size(0))
var miku_r := _to_panel_rect(Rect2(win_pos, win_size))
var miku_color: Color = UiTheme.status_looking if _attention == "looking" else UiTheme.accent
draw_rect(miku_r, UiTheme.gaze_miku_fill, true)