summaryrefslogtreecommitdiff
path: root/launch_terminal.go
diff options
context:
space:
mode:
Diffstat (limited to 'launch_terminal.go')
-rw-r--r--launch_terminal.go98
1 files changed, 1 insertions, 97 deletions
diff --git a/launch_terminal.go b/launch_terminal.go
index be3a5d7..7ee72fe 100644
--- a/launch_terminal.go
+++ b/launch_terminal.go
@@ -1,12 +1,9 @@
package main
import (
- "bufio"
- "bytes"
"fmt"
"os"
"os/exec"
- "path/filepath"
"strings"
"time"
)
@@ -19,7 +16,7 @@ type WindowConfig struct {
Workspace string
}
-func main() {
+func doLaunch() {
// 1. Get current working directory.
pwd, err := os.Getwd()
if err != nil {
@@ -28,7 +25,6 @@ func main() {
}
// 2. Read and parse the configuration file.
- configFile := "/home/jcarr/go/src/gemini/xstartplacement.out"
configs, err := parseConfig(configFile)
if err != nil {
fmt.Printf("Failed to parse config file '%s': %v\n", configFile, err)
@@ -108,95 +104,3 @@ func main() {
fmt.Println("Window setup complete.")
}
}
-
-// getWindowList returns a map of window IDs to their titles.
-func getWindowList() (map[string]string, error) {
- cmd := exec.Command("wmctrl", "-l")
- var out bytes.Buffer
- cmd.Stdout = &out
- if err := cmd.Run(); err != nil {
- return nil, err
- }
-
- windows := make(map[string]string)
- scanner := bufio.NewScanner(&out)
- for scanner.Scan() {
- line := scanner.Text()
- fields := strings.Fields(line)
- if len(fields) > 0 {
- windows[fields[0]] = strings.Join(fields[3:], " ")
- }
- }
- return windows, nil
-}
-
-// findNewWindow compares two maps of windows and returns the ID of the new window.
-func findNewWindow(before, after map[string]string) string {
- for id := range after {
- if _, ok := before[id]; !ok {
- return id
- }
- }
- return ""
-}
-
-// parseConfig remains the same as before.
-func parseConfig(filePath string) ([]WindowConfig, error) {
- file, err := os.Open(filePath)
- if err != nil {
- return nil, err
- }
- defer file.Close()
-
- var configs []WindowConfig
- scanner := bufio.NewScanner(file)
- var currentConfig WindowConfig
-
- homeDir, err := os.UserHomeDir()
- if err != nil {
- return nil, fmt.Errorf("could not get user home directory: %w", err)
- }
-
- for scanner.Scan() {
- line := scanner.Text()
- if strings.HasPrefix(line, " Title: ") {
- title := strings.TrimSpace(strings.TrimPrefix(line, " Title: "))
- currentConfig.Title = title
- parts := strings.SplitN(title, ": ", 2)
- if len(parts) == 2 {
- path := parts[1]
- if strings.HasPrefix(path, "~") {
- path = filepath.Join(homeDir, path[1:])
- }
- currentConfig.Path = path
- }
- } else if strings.HasPrefix(line, " Geometry: ") {
- geomStr := strings.TrimSpace(strings.TrimPrefix(line, " Geometry: "))
- var x, y, w, h string
- _, err := fmt.Sscanf(geomStr, "X=%s Y=%s Width=%s Height=%s", &x, &y, &w, &h)
- if err == nil {
- x = strings.TrimSuffix(x, ",")
- y = strings.TrimSuffix(y, ",")
- w = strings.TrimSuffix(w, ",")
- currentConfig.Geometry = fmt.Sprintf("%sx%s+%s+%s", w, h, x, y)
- }
- } else if strings.HasPrefix(line, " Workspace: ") {
- currentConfig.Workspace = strings.TrimSpace(strings.TrimPrefix(line, " Workspace: "))
- } else if line == "---" {
- if currentConfig.Path != "" {
- configs = append(configs, currentConfig)
- }
- currentConfig = WindowConfig{} // Reset for the next entry
- }
- }
-
- if currentConfig.Path != "" {
- configs = append(configs, currentConfig)
- }
-
- if err := scanner.Err(); err != nil {
- return nil, err
- }
-
- return configs, nil
-}