From 5b2cf528681d587f6f254912179dd616c00e0e95 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Fri, 5 Dec 2025 21:13:48 +0100 Subject: [PATCH] moved to codeberg --- .goreleaser.yaml | 65 ----------------------- .woodpecker/build.yaml | 36 ------------- .woodpecker/release.yaml | 15 ------ Makefile.dist | 18 ------- README.md | 3 ++ descratcher-rofi.sh | 5 -- go.mod | 8 --- go.sum | 4 -- main.go | 110 --------------------------------------- mkrel.sh | 69 ------------------------ 10 files changed, 3 insertions(+), 330 deletions(-) delete mode 100644 .goreleaser.yaml delete mode 100644 .woodpecker/build.yaml delete mode 100644 .woodpecker/release.yaml delete mode 100644 Makefile.dist delete mode 100755 descratcher-rofi.sh delete mode 100644 go.mod delete mode 100644 go.sum delete mode 100644 main.go delete mode 100755 mkrel.sh diff --git a/.goreleaser.yaml b/.goreleaser.yaml deleted file mode 100644 index e753cf6..0000000 --- a/.goreleaser.yaml +++ /dev/null @@ -1,65 +0,0 @@ -# vim: set ts=2 sw=2 tw=0 fo=cnqoj - -version: 2 - -before: - hooks: - - go mod tidy - -gitea_urls: - api: https://codeberg.org/api/v1 - download: https://codeberg.org - -builds: - - env: - - CGO_ENABLED=0 - goos: - - linux - - freebsd - -archives: - - formats: [tar.gz] - # this name template makes the OS and Arch compatible with the results of `uname`. - name_template: >- - {{ .ProjectName }}_ - {{- title .Os }}_ - {{- if eq .Arch "amd64" }}x86_64 - {{- else if eq .Arch "386" }}i386 - {{- else }}{{ .Arch }}{{ end }} - {{- if .Arm }}v{{ .Arm }}{{ end }}_{{ .Tag }} - # use zip for windows archives - format_overrides: - - goos: windows - formats: [zip] - - goos: linux - formats: [tar.gz,binary] - files: - - src: "*.md" - strip_parent: true - - src: Makefile.dist - dst: Makefile - wrap_in_directory: true - -changelog: - sort: asc - filters: - exclude: - - "^docs:" - - "^test:" - groups: - - title: Improved - regexp: '^.*?(feat|add|new)(\([[:word:]]+\))??!?:.+$' - order: 0 - - title: Fixed - regexp: '^.*?(bug|fix)(\([[:word:]]+\))??!?:.+$' - order: 1 - - title: Changed - order: 999 - -release: - header: "# Release Notes" - footer: >- - - --- - - Full Changelog: [{{ .PreviousTag }}...{{ .Tag }}](https://codeberg.org/scip/sway-descratch/compare/{{ .PreviousTag }}...{{ .Tag }}) diff --git a/.woodpecker/build.yaml b/.woodpecker/build.yaml deleted file mode 100644 index e20cc6f..0000000 --- a/.woodpecker/build.yaml +++ /dev/null @@ -1,36 +0,0 @@ -matrix: - platform: - - linux/amd64 - goversion: - - 1.24 - -labels: - platform: ${platform} - -steps: - build: - when: - event: [push] - image: golang:${goversion} - commands: - - go get - - go build - - linter: - when: - event: [push] - image: golang:${goversion} - commands: - - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.5.0 - - golangci-lint --version - - golangci-lint run ./... - depends_on: [build] - - test: - when: - event: [push] - image: golang:${goversion} - commands: - - go get - - go test -v -cover - depends_on: [build,linter] diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml deleted file mode 100644 index 916c008..0000000 --- a/.woodpecker/release.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# build release - -labels: - platform: linux/amd64 - -steps: - goreleaser: - image: goreleaser/goreleaser - when: - event: [tag] - environment: - GITEA_TOKEN: - from_secret: DEPLOY_TOKEN - commands: - - goreleaser release --clean --verbose diff --git a/Makefile.dist b/Makefile.dist deleted file mode 100644 index 55d2f38..0000000 --- a/Makefile.dist +++ /dev/null @@ -1,18 +0,0 @@ -# -*-make-*- - -.PHONY: install all - -tool = rpn -PREFIX = /usr/local -UID = root -GID = 0 - -all: - @echo "Type 'sudo make install' to install the tool." - @echo "To change prefix, type 'sudo make install PREFIX=/opt'" - -install: - install -d -o $(UID) -g $(GID) $(PREFIX)/bin - install -d -o $(UID) -g $(GID) $(PREFIX)/share/doc - install -o $(UID) -g $(GID) -m 555 $(tool) $(PREFIX)/sbin/ - install -o $(UID) -g $(GID) -m 444 *.md $(PREFIX)/share/doc/ diff --git a/README.md b/README.md index bc4bfc4..df6013b 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,9 @@ # sway-descratch +> [!CAUTION] +> This software is now being maintained on [Codeberg](https://codeberg.org/scip/sway-descratch/). + This is a more practical example for [swayipc module usage](https://codeberg.org/scip/swayipc). With sway you can move windows to a "scratchpad", i.e. like iconify it. There may be an diff --git a/descratcher-rofi.sh b/descratcher-rofi.sh deleted file mode 100755 index 5a7fede..0000000 --- a/descratcher-rofi.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -descratch \ - | rofi -matching fuzzy -dmenu -p "Select window from scratchpad to show" \ - | cut -d' ' -f1 | xargs -I{} --no-run-if-empty "descratch" {} diff --git a/go.mod b/go.mod deleted file mode 100644 index 629c621..0000000 --- a/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module sway-descratch - -go 1.23.5 - -require ( - codeberg.org/scip/swayipc/v2 v2.0.0-test1 - github.com/alecthomas/repr v0.5.2 -) diff --git a/go.sum b/go.sum deleted file mode 100644 index 249c286..0000000 --- a/go.sum +++ /dev/null @@ -1,4 +0,0 @@ -codeberg.org/scip/swayipc/v2 v2.0.0-test1 h1:F4tOtE0gvxoh4mWQbV2+rG55cVJsCtkD5YME/6qxjqw= -codeberg.org/scip/swayipc/v2 v2.0.0-test1/go.mod h1:F+rmNQ+NjLDr8fU7HW/jSjiUIXeYfQ1cSyBiGByhoWI= -github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= -github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= diff --git a/main.go b/main.go deleted file mode 100644 index 3151429..0000000 --- a/main.go +++ /dev/null @@ -1,110 +0,0 @@ -package main - -/* - This is a more practical example. With sway you can move windows to - a "scratchpad", i.e. like iconify it. There may be an official way - to get back such windows, but I didn't find a good one. There's the - "scratchpad show" command, but it doesn't allow you to select a - window, it just shows the next one (and it keeps it in the floating - state). - - So, this example program lists all windows currently garaged on the - scratchpad. When called with a windows id, it gets back the window - to the current workspace and gives it focus - thus descratching it. - - To add comfort to the process I added a small script which you can - use as a ui to it. It uses rofi which makes a handy ui. To use it, - compile descratch with "go build", copy the descratch binary to - some location within your $PATH and run the script. -*/ - -import ( - "fmt" - "log" - "os" - "strconv" - - "codeberg.org/scip/swayipc/v2" - "github.com/alecthomas/repr" -) - -func main() { - // we need a session to sway via IPC - ipc := swayipc.NewSwayIPC() - - err := ipc.Connect() - if err != nil { - log.Fatal(err) - } - defer func() { - if err := ipc.Close(); err != nil { - log.Fatal(err) - } - }() - - // first, retrieve the whole sway root node - root, err := ipc.GetTree() - if err != nil { - log.Fatal(err) - } - - // get the hidden scratchpad workspace - scratch := getScratch(root) - - if len(os.Args) > 1 { - // called with an arg, consider it to be a container id - id, err := strconv.Atoi(os.Args[1]) - if err != nil { - log.Fatalf("failed to convert arg %s to integer: %s", os.Args[1], err) - } - - // switch to it - retrieveWindow(ipc, scratch, id) - } else { - // no args, just list scratched windows - listScratchedContainer(scratch) - } -} - -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 { - exists = true - } - } - - if !exists { - log.Fatalf("no window with id %d exists on the scratchpad", id) - } - - // scratched windows are floating, so we move it to current - // workspace, disable the floating state and switch focus to it - responses, err := ipc.RunContainerCommand(id, "move workspace current", "floating toggle", "focus") - if err != nil { - 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) - } -} - -func getScratch(root *swayipc.Node) *swayipc.Node { - // the root node only has output nodes, we iterate over them and - // look for the internal one named__i3. This in turn only has one - // workspace, the scratchpad workspace, which we return. - for _, output := range root.Nodes { - if output.Name == "__i3" { - return output.Nodes[0] - } - } - - return nil -} diff --git a/mkrel.sh b/mkrel.sh deleted file mode 100755 index 66f3381..0000000 --- a/mkrel.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/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 = descratch -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 -