diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..ac03f44 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,104 @@ +version: "2" + +linters: + enable: + - errcheck + - govet + - ineffassign + - staticcheck + - unused + - arangolint + - asasalint + - asciicheck + - bidichk + - bodyclose + - canonicalheader + - clickhouselint + - containedctx + - copyloopvar + - cyclop + - decorder + - dogsled + - dupword + - durationcheck + - embeddedstructfieldcheck + - errchkjson + - errname + - exhaustive + - exptostd + - fatcontext + - funcorder + - funlen + - ginkgolinter + - gocheckcompilerdirectives + - gochecknoinits + - gochecksumtype + - gocritic + - gocyclo + - godoclint + - goheader + - gomoddirectives + - gomodguard_v2 + - goprintffuncname + - gosmopolitan + - grouper + - iface + - importas + - inamedparam + - interfacebloat + - intrange + - iotamixing + - lll + - loggercheck + - makezero + - misspell + - modernize + - nakedret + - nestif + - nilerr + - nilnesserr + - nlreturn + - nonamedreturns + - nosprintfhostport + - paralleltest + - perfsprint + - prealloc + - promlinter + - protogetter + - reassign + - recvcheck + - rowserrcheck + - sloglint + - spancheck + - sqlclosecheck + - tagalign + - testableexamples + - testifylint + - testpackage + - thelper + - tparallel + - unconvert + - unparam + - unqueryvet + - usestdlibvars + - usetesting + - varnamelen + - wastedassign + - whitespace + - wsl_v5 + - zerologlint + + settings: + varnamelen: + ignore-names: + - err + - wg + - mu + - ts + - to + - es + - op + - fd + - id + - fn + diff --git a/.woodpecker/build.yaml b/.woodpecker/build.yaml index e20cc6f..5592c8a 100644 --- a/.woodpecker/build.yaml +++ b/.woodpecker/build.yaml @@ -2,7 +2,7 @@ matrix: platform: - linux/amd64 goversion: - - 1.24 + - 1.26 labels: platform: ${platform} diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..117034a --- /dev/null +++ b/Makefile @@ -0,0 +1,70 @@ +# Copyright © 2025-2026 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 . + + +# +# no need to modify anything below +tool = sway-descratch +VERSION = $(shell grep VERSION main.go | head -1 | cut -d '"' -f2) +archs = darwin freebsd linux +PREFIX = /usr/local +UID = root +GID = 0 +HAVE_POD := $(shell pod2text -h 2>/dev/null) + +all: buildlocal + + +buildlocal: + CGO_LDFLAGS='-static' go build -tags osusergo,netgo -ldflags "-extldflags=-static" -o $(tool) + +install: buildlocal + 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/ + +clean: + rm -rf $(tool) coverage.out testdata t/out + +test: clean + mkdir -p t/out + go test ./... $(ARGS) + +testlint: test lint + +lint: + golangci-lint run --show-stats=false + +testfuzzy: clean + go test -fuzz ./... $(ARGS) + +singletest: + @echo "Call like this: make singletest TEST=TestPrepareColumns ARGS=-v" + go test -run $(TEST) $(ARGS) + +cover-report: + go test ./... -cover -coverprofile=coverage.out + go tool cover -html=coverage.out + +goupdate: + go get -t -u=patch ./... + +buildall: + ./mkrel.sh $(tool) $(VERSION) + +release: + gh release create v$(VERSION) --generate-notes + diff --git a/go.mod b/go.mod index 92803e6..2c5318c 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,8 @@ module sway-descratch -go 1.23.5 +go 1.26 require ( - codeberg.org/scip/swayipc/v2 v2.0.0 - github.com/alecthomas/repr v0.5.2 + codeberg.org/scip/swayipc/v2 v2.1.0 + github.com/alecthomas/repr v0.5.4 ) diff --git a/go.sum b/go.sum index d136470..9e22e3f 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,8 @@ codeberg.org/scip/swayipc/v2 v2.0.0 h1:uHiETbutVJAUQVSzC5/PPFo2S+gEoCnzydhErYiQYNM= codeberg.org/scip/swayipc/v2 v2.0.0/go.mod h1:F+rmNQ+NjLDr8fU7HW/jSjiUIXeYfQ1cSyBiGByhoWI= +codeberg.org/scip/swayipc/v2 v2.1.0 h1:tBiOBOUFDOA38+acZwx4BO5Yo/VVwxbqkL+R2/zmW6c= +codeberg.org/scip/swayipc/v2 v2.1.0/go.mod h1:cqicjgMgPS7tGTJgjqjSMvnLeMA+J3to/YnufcysCns= github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/alecthomas/repr v0.5.4 h1:OVP7JEcuzU9CCDsT6STCr3rg17oQfWILtPWd2EG0uN4= +github.com/alecthomas/repr v0.5.4/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= diff --git a/main.go b/main.go index c33557c..12b786f 100644 --- a/main.go +++ b/main.go @@ -28,7 +28,7 @@ import ( "github.com/alecthomas/repr" ) -const VERSION = `v0.0.3` +const VERSION = `v0.0.4` func main() { if len(os.Args) > 1 { @@ -54,7 +54,7 @@ func main() { // first, retrieve the whole sway root node root, err := ipc.GetTree() if err != nil { - log.Fatal(err) + log.Fatal(err) // nolint:gocritic } // get the hidden scratchpad workspace @@ -78,8 +78,9 @@ func main() { func retrieveWindow(ipc *swayipc.SwayIPC, scratch *swayipc.Node, id int) { // make sure the id exists var exists bool + for _, con := range scratch.FloatingNodes { - if con.Id == id { + if con.ID == id { exists = true } } @@ -95,13 +96,12 @@ func retrieveWindow(ipc *swayipc.SwayIPC, scratch *swayipc.Node, id int) { repr.Println(responses) log.Fatal(err) } - } func listScratchedContainer(scratch *swayipc.Node) { // list the windows for _, con := range scratch.FloatingNodes { - fmt.Printf("%d %s\n", con.Id, con.Name) + fmt.Printf("%d %s\n", con.ID, con.Name) } }