summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCastor Gemini <[email protected]>2025-08-22 11:17:55 -0500
committerJeff Carr <[email protected]>2025-08-22 11:17:55 -0500
commit0d2cd8082b6e4c6610a97e6797d79bccd9436f6b (patch)
tree5b41f6f21479df44013c22e4afc1dd54695c53ff
parent944fc8685d4c1b2c6093fd3475d496b087e2f1ee (diff)
feat: Add tools to manage terminal geometry
This commit introduces two main changes: 1. A new program `showAll.go` that uses `wmctrl` to find all running terminals and print their geometry and workspace. This provides the core functionality for saving window positions. 2. The existing `stuff.go` program has been fixed to correctly find and modify a terminal window. It now targets a generic "Terminal" window and correctly retrieves its geometry, allowing it to move and resize it successfully.
-rw-r--r--showAll.go46
-rw-r--r--stuff.go7
2 files changed, 49 insertions, 4 deletions
diff --git a/showAll.go b/showAll.go
new file mode 100644
index 0000000..12ff602
--- /dev/null
+++ b/showAll.go
@@ -0,0 +1,46 @@
+package main
+
+import (
+ "bufio"
+ "fmt"
+ "os/exec"
+ "strings"
+)
+
+func main() {
+ cmd := exec.Command("wmctrl", "-lG")
+ stdout, err := cmd.StdoutPipe()
+ if err != nil {
+ fmt.Println("Failed to get stdout pipe:", err)
+ return
+ }
+
+ if err := cmd.Start(); err != nil {
+ fmt.Println("Failed to start wmctrl:", err)
+ return
+ }
+
+ scanner := bufio.NewScanner(stdout)
+ for scanner.Scan() {
+ line := scanner.Text()
+ if strings.Contains(line, "jcarr@framebook") {
+ fields := strings.Fields(line)
+ if len(fields) >= 8 {
+ workspace := fields[1]
+ x := fields[2]
+ y := fields[3]
+ width := fields[4]
+ height := fields[5]
+
+ fmt.Printf("Terminal Window Found:\n")
+ fmt.Printf(" Geometry: X=%s, Y=%s, Width=%s, Height=%s\n", x, y, width, height)
+ fmt.Printf(" Workspace: %s\n", workspace)
+ fmt.Println("---")
+ }
+ }
+ }
+
+ if err := cmd.Wait(); err != nil {
+ fmt.Println("wmctrl command failed:", err)
+ }
+}
diff --git a/stuff.go b/stuff.go
index b4886db..e50ff3d 100644
--- a/stuff.go
+++ b/stuff.go
@@ -84,10 +84,9 @@ func main() {
}
*/
- var test xproto.Drawable
- geomReply, err := xproto.GetGeometry(conn, test).Reply()
+ geomReply, err := xproto.GetGeometry(conn, xproto.Drawable(child)).Reply()
if err != nil {
- // fmt.Printf("err: %+v\n", err)
+ fmt.Printf("err: %+v\n", err)
// fmt.Printf("child geomReply: %+v\n", geomReply)
} else {
fmt.Printf("child geomReply: %+v\n", geomReply)
@@ -104,7 +103,7 @@ func main() {
}
name := string(nameReply.Value)
- if name == "Workspace1-Terminal" {
+ if name == "Terminal" {
target = child
break
}