From cbc061c082dcd3f6afae6e886f99fe634d83ab21 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Mon, 11 Aug 2025 08:47:41 +0200 Subject: [PATCH] added logging, switched to slog, added screenshot, added release builder --- .github/assets/screenshot.png | Bin 0 -> 78376 bytes .github/dependabot.yml | 10 +++ .github/workflows/release.yaml | 87 ++++++++++++++++++ README.md | 21 ++++- go.mod | 7 ++ go.sum | 19 ++++ main.go | 159 +++++++++++++++++++++++++++------ mkrel.sh | 69 ++++++++++++++ 8 files changed, 341 insertions(+), 31 deletions(-) create mode 100644 .github/assets/screenshot.png create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/release.yaml create mode 100755 mkrel.sh diff --git a/.github/assets/screenshot.png b/.github/assets/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2e06c3e3e3d9300795469cadffb6fc7ed03331 GIT binary patch literal 78376 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 ## Project homepage -https://github.com/TLINDEN/swaycycle +https://github.com/tlinden/swaycycle ## Copyright and License diff --git a/go.mod b/go.mod index 1918980..21acef7 100644 --- a/go.mod +++ b/go.mod @@ -4,5 +4,12 @@ go 1.23 require ( github.com/alecthomas/repr v0.5.1 // indirect + github.com/fatih/color v1.16.0 // indirect + github.com/lmittmann/tint v1.1.2 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/spf13/pflag v1.0.7 // indirect + github.com/tlinden/yadu v0.1.3 // indirect + golang.org/x/sys v0.14.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index bb9bbd3..90d9289 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,23 @@ github.com/alecthomas/repr v0.5.1 h1:E3G4t2QbHTSNpPKBgMTln5KLkZHLOcU7r37J4pXBuIg= github.com/alecthomas/repr v0.5.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/lmittmann/tint v1.1.2 h1:2CQzrL6rslrsyjqLDwD11bZ5OpLBPU+g3G/r5LSfS8w= +github.com/lmittmann/tint v1.1.2/go.mod h1:HIS3gSy7qNwGCj+5oRjAutErFBl4BzdQP6cJZ0NfMwE= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/tlinden/yadu v0.1.3 h1:5cRCUmj+l5yvlM2irtpFBIJwVV2DPEgYSaWvF19FtcY= +github.com/tlinden/yadu v0.1.3/go.mod h1:l3bRmHKL9zGAR6pnBHY2HRPxBecf7L74BoBgOOpTcUA= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main.go b/main.go index 98741d4..b8593c6 100644 --- a/main.go +++ b/main.go @@ -21,25 +21,20 @@ import ( "bytes" "encoding/json" "fmt" + "io" "log" + "log/slog" "os" "os/exec" + "runtime/debug" - "github.com/alecthomas/repr" + "github.com/lmittmann/tint" + "github.com/mattn/go-isatty" + "github.com/tlinden/yadu" flag "github.com/spf13/pflag" ) -const ( - root = iota + 1 - output - workspace - con - floating - - VERSION = "v0.1.2" -) - type Node struct { Id int `json:"id"` Nodetype string `json:"type"` // output, workspace or container @@ -52,16 +47,55 @@ type Node struct { Current_workspace string `json:"current_workspace"` } -var Visibles = []Node{} -var CurrentWorkspace = "" -var Debug = false -var Version = false -var Notswitch = false +const ( + root = iota + 1 + output + workspace + con + floating + + LevelNotice = slog.Level(2) + + VERSION = "v0.1.2" +) + +var ( + Visibles = []Node{} + CurrentWorkspace = "" + Debug = false + Dumptree = false + Version = false + Verbose = false + Notswitch = false + Showhelp = false + Logfile = "" +) + +const Usage string = `This is swaycycle - cycle focus through all visible windows on a sway workspace. + +Usage: swaycycle [-vVdDn] [-l ] + +Options: + -n, --no-switch do not switch windows + -d, --debug enable debugging + -D, --dump dump the sway tree (needs -d as well) + -l, --logfile string write output to logfile + -v, --verbose enable verbose logging + -V, --version show program version + +Copyleft (L) 2025 Thomas von Dein. +Licensed under the terms of the GNU GPL version 3. +` func main() { flag.BoolVarP(&Debug, "debug", "d", false, "enable debugging") + flag.BoolVarP(&Dumptree, "dump", "D", false, "dump the sway tree (needs -d as well)") + flag.BoolVarP(&Verbose, "verbose", "v", false, "enable verbose logging") flag.BoolVarP(&Notswitch, "no-switch", "n", false, "do not switch windows") - flag.BoolVarP(&Version, "version", "v", false, "show program version") + flag.BoolVarP(&Version, "version", "V", false, "show program version") + flag.BoolVarP(&Showhelp, "help", "h", Showhelp, "show help") + + flag.StringVarP(&Logfile, "logfile", "l", "", "write output to logfile") flag.Parse() if Version { @@ -69,6 +103,23 @@ func main() { os.Exit(0) } + if Showhelp { + fmt.Println(Usage) + os.Exit(0) + } + + // setup logging + if Logfile != "" { + file, err := os.OpenFile(Logfile, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) + if err != nil { + log.Fatalf("Failed to open logfile %s: %s", Logfile, err) + } + defer file.Close() + setupLogging(file) + } else { + setupLogging(os.Stdout) + } + // fills Visibles node list fetchSwayTree() @@ -83,6 +134,48 @@ func main() { } } +func setupLogging(output io.Writer) { + logLevel := &slog.LevelVar{} + + if !Debug { + // default logging + opts := &tint.Options{ + Level: logLevel, + AddSource: false, + NoColor: IsNoTty(), + } + + if Verbose { + logLevel.Set(slog.LevelInfo) + } else { + logLevel.Set(LevelNotice) + } + + handler := tint.NewHandler(output, opts) + logger := slog.New(handler) + + slog.SetDefault(logger) + } else { + // we're using a more verbose logger in debug mode + buildInfo, _ := debug.ReadBuildInfo() + opts := &yadu.Options{ + Level: logLevel, + AddSource: true, + } + + logLevel.Set(slog.LevelDebug) + + handler := yadu.NewHandler(output, opts) + debuglogger := slog.New(handler).With( + slog.Group("program_info", + slog.Int("pid", os.Getpid()), + slog.String("go_version", buildInfo.GoVersion), + ), + ) + slog.SetDefault(debuglogger) + } +} + // find the next window after the one with current focus. if the last // one has focus, return the first func findNextWindow() int { @@ -115,9 +208,8 @@ func switchFocus(id int) { var cmd *exec.Cmd arg := fmt.Sprintf("[con_id=%d]", id) - if Debug { - fmt.Printf("executing: swaymsg %s focus\n", arg) - } + slog.Debug("executing", "command", "swaymsg "+arg+" focus") + cmd = exec.Command("swaymsg", arg, "focus") errbuf := &bytes.Buffer{} @@ -126,25 +218,22 @@ func switchFocus(id int) { out, err := cmd.Output() if err != nil { + slog.Debug("failed to execute swaymsg", "output", out) log.Fatalf("Failed to execute swaymsg to switch focus: %s", err) - if Debug { - fmt.Println(out) - } } if errbuf.String() != "" { log.Fatalf("swaymsg error: %s", errbuf.String()) } + slog.Info("switched focus", "con_id", id) } // execute swaymsg to get its internal tree func fetchSwayTree() { var cmd *exec.Cmd - if Debug { - fmt.Println("executing: swaymsg -t get_tree -r") - } + slog.Debug("executing", "command", "swaymsg -t get_tree -r") cmd = exec.Command("swaymsg", "-t", "get_tree", "-r") @@ -196,6 +285,10 @@ func processJSON(jsoncode []byte) error { return fmt.Errorf("Invalid or empty JSON structure") } + if Dumptree { + slog.Debug("processed sway tree", "sway", sway) + } + for _, node := range sway.Nodes { if node.Current_workspace != "" { // this is an output node containing the current workspace @@ -205,9 +298,7 @@ func processJSON(jsoncode []byte) error { } } - if Debug { - repr.Println(Visibles) - } + slog.Debug("processed visible windows", "visibles", Visibles) return nil } @@ -238,3 +329,13 @@ func recurseNodes(nodes []Node) { } } } + +// returns TRUE if stdout is NOT a tty or windows +func IsNoTty() bool { + if !isatty.IsTerminal(os.Stdout.Fd()) { + return true + } + + // it is a tty + return false +} diff --git a/mkrel.sh b/mkrel.sh new file mode 100755 index 0000000..de7113b --- /dev/null +++ b/mkrel.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# Copyright © 2025 Thomas von Dein + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# get list with: go tool dist list +DIST="darwin/amd64 +freebsd/amd64 +linux/amd64 +freebsd/arm64 +linux/arm64" + +tool="$1" +version="$2" + +if test -z "$version"; then + echo "Usage: $0 " + exit 1 +fi + +rm -rf releases +mkdir -p releases + + +for D in $DIST; do + os=${D/\/*/} + arch=${D/*\//} + binfile="releases/${tool}-${os}-${arch}-${version}" + + if test "$os" = "windows"; then + binfile="${binfile}.exe" + fi + + tardir="${tool}-${os}-${arch}-${version}" + tarfile="releases/${tool}-${os}-${arch}-${version}.tar.gz" + set -x + GOOS=${os} GOARCH=${arch} go build -tags osusergo,netgo -ldflags "-extldflags=-static" -o ${binfile} + mkdir -p ${tardir} + cp ${binfile} README.md LICENSE ${tardir}/ + echo 'tool = swaycycle +PREFIX = /usr/local +UID = root +GID = 0 + +install: + install -d -o $(UID) -g $(GID) $(PREFIX)/bin + install -d -o $(UID) -g $(GID) $(PREFIX)/man/man1 + install -o $(UID) -g $(GID) -m 555 $(tool) $(PREFIX)/sbin/ + install -o $(UID) -g $(GID) -m 444 $(tool).1 $(PREFIX)/man/man1/' > ${tardir}/Makefile + tar cpzf ${tarfile} ${tardir} + sha256sum ${binfile} | cut -d' ' -f1 > ${binfile}.sha256 + sha256sum ${tarfile} | cut -d' ' -f1 > ${tarfile}.sha256 + rm -rf ${tardir} + set +x +done +