From 1989d6cd98e11c35a9500c8f6a675b32efdca220 Mon Sep 17 00:00:00 2001 From: mrhid6 Date: Fri, 17 Jul 2026 13:46:12 +0100 Subject: [PATCH] fix: Fixed console width --- server/internal/api/console.go | 17 ++++++++++++++--- web/app/servers/[id]/console/page.tsx | 8 +++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/server/internal/api/console.go b/server/internal/api/console.go index dc4c7c2..bcc390d 100644 --- a/server/internal/api/console.go +++ b/server/internal/api/console.go @@ -4,6 +4,7 @@ import ( "net" "net/http" "os" + "strconv" "time" "github.com/gin-gonic/gin" @@ -69,6 +70,16 @@ func consoleConnect(c *gin.Context) { }) } +// queryIntDefault reads a positive integer query param, falling back to def +// when absent, unparseable, or non-positive. +func queryIntDefault(r *http.Request, key string, def int) int { + v, err := strconv.Atoi(r.URL.Query().Get(key)) + if err != nil || v <= 0 { + return def + } + return v +} + // GET /api/console/tunnel?token=... (WebSocket upgrade) func consoleTunnel(c *gin.Context) { token := c.Query("token") @@ -139,9 +150,9 @@ func consoleTunnel(c *gin.Context) { for k, v := range gp.Params { config.Parameters[k] = v } - config.OptimalScreenWidth = 1024 - config.OptimalScreenHeight = 768 - config.OptimalResolution = 96 + config.OptimalScreenWidth = queryIntDefault(r, "width", 1024) + config.OptimalScreenHeight = queryIntDefault(r, "height", 768) + config.OptimalResolution = queryIntDefault(r, "dpi", 96) addr, err := net.ResolveTCPAddr("tcp", guacdAddr) if err != nil { diff --git a/web/app/servers/[id]/console/page.tsx b/web/app/servers/[id]/console/page.tsx index d261f95..e853e95 100644 --- a/web/app/servers/[id]/console/page.tsx +++ b/web/app/servers/[id]/console/page.tsx @@ -86,9 +86,15 @@ export default function ServerConsolePage() { const wsProto = location.protocol === "https:" ? "wss" : "ws"; const wsUrl = `${wsProto}://${location.host}${ws_path}`; - const connectData = `token=${encodeURIComponent(token)}`; if (containerRef.current) { + const rect = containerRef.current.getBoundingClientRect(); + const dpi = Math.round(96 * (window.devicePixelRatio || 1)); + const connectData = + `token=${encodeURIComponent(token)}` + + `&width=${Math.floor(rect.width)}` + + `&height=${Math.floor(rect.height)}` + + `&dpi=${dpi}`; const conn = openConsole(containerRef.current, wsUrl, connectData); connectionRef.current = conn; setConnected(true);