mirror of
https://codeberg.org/scip/sway-descratch.git
synced 2026-08-24 14:54:21 +02:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 02c1792d02 | |||
| 12794946a1 | |||
|
|
5f392e9d60 | ||
| 81e7474846 |
104
.golangci.yml
Normal file
104
.golangci.yml
Normal file
@@ -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
|
||||||
|
|
||||||
@@ -16,6 +16,9 @@ builds:
|
|||||||
goos:
|
goos:
|
||||||
- linux
|
- linux
|
||||||
- freebsd
|
- freebsd
|
||||||
|
goarch:
|
||||||
|
- amd64
|
||||||
|
- arm64
|
||||||
|
|
||||||
archives:
|
archives:
|
||||||
- formats: [tar.gz]
|
- formats: [tar.gz]
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ matrix:
|
|||||||
platform:
|
platform:
|
||||||
- linux/amd64
|
- linux/amd64
|
||||||
goversion:
|
goversion:
|
||||||
- 1.24
|
- 1.26
|
||||||
|
lintversion:
|
||||||
|
- v2.12.2
|
||||||
|
|
||||||
labels:
|
labels:
|
||||||
platform: ${platform}
|
platform: ${platform}
|
||||||
@@ -21,7 +23,7 @@ steps:
|
|||||||
event: [push]
|
event: [push]
|
||||||
image: golang:${goversion}
|
image: golang:${goversion}
|
||||||
commands:
|
commands:
|
||||||
- curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.5.0
|
- curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b $(go env GOPATH)/bin ${lintversion}
|
||||||
- golangci-lint --version
|
- golangci-lint --version
|
||||||
- golangci-lint run ./...
|
- golangci-lint run ./...
|
||||||
depends_on: [build]
|
depends_on: [build]
|
||||||
|
|||||||
70
Makefile
Normal file
70
Makefile
Normal file
@@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
|
||||||
6
go.mod
6
go.mod
@@ -1,8 +1,8 @@
|
|||||||
module sway-descratch
|
module sway-descratch
|
||||||
|
|
||||||
go 1.23.5
|
go 1.26
|
||||||
|
|
||||||
require (
|
require (
|
||||||
codeberg.org/scip/swayipc/v2 v2.0.0-test1
|
codeberg.org/scip/swayipc/v2 v2.1.0
|
||||||
github.com/alecthomas/repr v0.5.2
|
github.com/alecthomas/repr v0.5.4
|
||||||
)
|
)
|
||||||
|
|||||||
8
go.sum
8
go.sum
@@ -1,4 +1,8 @@
|
|||||||
codeberg.org/scip/swayipc/v2 v2.0.0-test1 h1:F4tOtE0gvxoh4mWQbV2+rG55cVJsCtkD5YME/6qxjqw=
|
codeberg.org/scip/swayipc/v2 v2.0.0 h1:uHiETbutVJAUQVSzC5/PPFo2S+gEoCnzydhErYiQYNM=
|
||||||
codeberg.org/scip/swayipc/v2 v2.0.0-test1/go.mod h1:F+rmNQ+NjLDr8fU7HW/jSjiUIXeYfQ1cSyBiGByhoWI=
|
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 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=
|
||||||
github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
|
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=
|
||||||
|
|||||||
17
main.go
17
main.go
@@ -28,7 +28,16 @@ import (
|
|||||||
"github.com/alecthomas/repr"
|
"github.com/alecthomas/repr"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const VERSION = `v0.0.4`
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
if len(os.Args) > 1 {
|
||||||
|
if os.Args[1] == "-v" {
|
||||||
|
fmt.Printf("This is sway-descratch version %s\n", VERSION)
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// we need a session to sway via IPC
|
// we need a session to sway via IPC
|
||||||
ipc := swayipc.NewSwayIPC()
|
ipc := swayipc.NewSwayIPC()
|
||||||
|
|
||||||
@@ -45,7 +54,7 @@ func main() {
|
|||||||
// first, retrieve the whole sway root node
|
// first, retrieve the whole sway root node
|
||||||
root, err := ipc.GetTree()
|
root, err := ipc.GetTree()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err) // nolint:gocritic
|
||||||
}
|
}
|
||||||
|
|
||||||
// get the hidden scratchpad workspace
|
// get the hidden scratchpad workspace
|
||||||
@@ -69,8 +78,9 @@ func main() {
|
|||||||
func retrieveWindow(ipc *swayipc.SwayIPC, scratch *swayipc.Node, id int) {
|
func retrieveWindow(ipc *swayipc.SwayIPC, scratch *swayipc.Node, id int) {
|
||||||
// make sure the id exists
|
// make sure the id exists
|
||||||
var exists bool
|
var exists bool
|
||||||
|
|
||||||
for _, con := range scratch.FloatingNodes {
|
for _, con := range scratch.FloatingNodes {
|
||||||
if con.Id == id {
|
if con.ID == id {
|
||||||
exists = true
|
exists = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -86,13 +96,12 @@ func retrieveWindow(ipc *swayipc.SwayIPC, scratch *swayipc.Node, id int) {
|
|||||||
repr.Println(responses)
|
repr.Println(responses)
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func listScratchedContainer(scratch *swayipc.Node) {
|
func listScratchedContainer(scratch *swayipc.Node) {
|
||||||
// list the windows
|
// list the windows
|
||||||
for _, con := range scratch.FloatingNodes {
|
for _, con := range scratch.FloatingNodes {
|
||||||
fmt.Printf("%d %s\n", con.Id, con.Name)
|
fmt.Printf("%d %s\n", con.ID, con.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user