Compare commits
7 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7e03a1b364 | |||
|
1f1b6e3772 |
|||
|
23cacd940f |
|||
|
23f5b32d2c |
|||
|
ba7f37dbb6 |
|||
|
e9df618c59 |
|||
|
3345c46837 |
18 changed files with 89 additions and 57 deletions
|
|
@ -1,11 +1,11 @@
|
|||
steps:
|
||||
vendor:
|
||||
image: golang:1.18
|
||||
image: golang:1.22
|
||||
commands:
|
||||
- go mod vendor
|
||||
|
||||
build:
|
||||
image: golang:1.18
|
||||
image: golang:1.22
|
||||
commands:
|
||||
- make
|
||||
- mkdir release
|
||||
|
|
|
|||
6
Makefile
6
Makefile
|
|
@ -14,3 +14,9 @@ linux-arm64:
|
|||
|
||||
clean:
|
||||
rm -fr build/* 2>/dev/null || true
|
||||
|
||||
tool-gofumpt:
|
||||
which golangci-lint > /dev/null 2>&1 || go install mvdan.cc/gofumpt@latest
|
||||
|
||||
fmt: tool-gofumpt
|
||||
gofumpt -w --extra .
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ Blocks compatible with [i3blocks](https://github.com/vivien/i3blocks).
|
|||
* `df` for `du` block
|
||||
* `xdg-open` for `du` block
|
||||
* `playerctl` for `spotify` block
|
||||
* `pamixer` for `volume` block
|
||||
|
||||
## Installation
|
||||
|
||||
|
|
@ -101,7 +102,7 @@ markup=pango
|
|||
interval=3
|
||||
|
||||
[ip_eth0_ip6]
|
||||
command=/path/to/ip -iface=eth0 -version=ip4 -name=Bar
|
||||
command=/path/to/ip -iface=eth0 -version=ip6 -name=Bar
|
||||
format=json
|
||||
markup=pango
|
||||
interval=3
|
||||
|
|
@ -179,9 +180,11 @@ interval=3
|
|||
|
||||
Show volume.
|
||||
|
||||
Note: use `pamixer --list-sinks`
|
||||
|
||||
```
|
||||
[volume]
|
||||
command=/path/to/volume -channel=Master
|
||||
command=/path/to/volume -sinks="Default:alsa_output.pci-0000_00_1f.3.analog-stereo;Headset:bluez_output.00_1B_66_B6_87_05"
|
||||
format=json
|
||||
markup=pango
|
||||
interval=1
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package main
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/enescakir/emoji"
|
||||
"github.com/xellio/tools/acpi"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
|
|
@ -13,7 +14,6 @@ import (
|
|||
|
||||
func main() {
|
||||
datas, err := acpi.Battery()
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,11 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
"os"
|
||||
"os/exec"
|
||||
"sync"
|
||||
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
)
|
||||
|
||||
func runCmd(wg *sync.WaitGroup, value string) {
|
||||
|
|
|
|||
|
|
@ -3,10 +3,11 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/enescakir/emoji"
|
||||
"github.com/itchyny/timefmt-go"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
|
|||
|
|
@ -3,12 +3,13 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
)
|
||||
|
||||
func DiskUsage(path string) int {
|
||||
|
|
|
|||
|
|
@ -3,12 +3,13 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/atotto/clipboard"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
"net"
|
||||
"os"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/atotto/clipboard"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
@ -24,7 +25,6 @@ func main() {
|
|||
)
|
||||
|
||||
iface, err := net.InterfaceByName(*argIface)
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,16 +2,16 @@ package main
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/atotto/clipboard"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/atotto/clipboard"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
)
|
||||
|
||||
func main() {
|
||||
resp, err := http.Get("https://api.ipify.org/")
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,12 +4,13 @@ import (
|
|||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/itchyny/timefmt-go"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
"io"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/itchyny/timefmt-go"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
)
|
||||
|
||||
type Telemetry struct {
|
||||
|
|
@ -24,7 +25,6 @@ func main() {
|
|||
flag.Parse()
|
||||
|
||||
resp, err := http.Get(*argApi)
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,9 +3,10 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
)
|
||||
|
||||
func ProcessExists(process string) bool {
|
||||
|
|
|
|||
|
|
@ -3,13 +3,14 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
)
|
||||
|
||||
type Telemetry struct {
|
||||
|
|
@ -41,7 +42,6 @@ func main() {
|
|||
}
|
||||
|
||||
resp, err := http.Get(*argFeed)
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,15 +2,10 @@ package main
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
sos"
|
||||
"os/"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
r "gitnet.fr/deblan/i3-blocks-gsrrindg
|
||||
r "gitnet.fr/deblan/i3-blocks-gsrrindg
|
||||
r "gitnet.fr/deblan/i3-blocks-gsrrindg
|
||||
r "gitnet.fr/deblan/i3-blocks-gsrrindg
|
||||
r "gitnet.fr/deblan/i3-blocks-gsrrindg
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -3,46 +3,68 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
"os/exec"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
)
|
||||
|
||||
func Volume(channel string) int {
|
||||
output, _ := exec.Command("amixer", "get", channel).Output()
|
||||
func Volume(id string) int {
|
||||
output, _ := exec.Command("pamixer", "--sink", id, "--get-volume").Output()
|
||||
|
||||
regex, _ := regexp.Compile(`\[(\d+)%\]`)
|
||||
data := regex.FindStringSubmatch(string(output))
|
||||
|
||||
volume, _ := strconv.Atoi(data[1])
|
||||
volume, _ := strconv.Atoi(strings.TrimSpace(string(output)))
|
||||
|
||||
return volume
|
||||
}
|
||||
|
||||
func main() {
|
||||
argChannel := flag.String("channel", "Master", "the channel")
|
||||
argSinks := flag.String("sinks", "", "list of sinks, eg: CUSTOM_NAME:SINK_VALUE;CUSTOM_NAME2:SINK_VALUE2")
|
||||
flag.Parse()
|
||||
|
||||
volume := Volume(*argChannel)
|
||||
sinks := strings.Split(*argSinks, ";")
|
||||
|
||||
var symbole string
|
||||
var items []string
|
||||
|
||||
if volume == 0 {
|
||||
symbole = "\uf026"
|
||||
} else if volume < 50 {
|
||||
symbole = "\uf027"
|
||||
} else {
|
||||
symbole = "\uf028"
|
||||
for _, sink := range sinks {
|
||||
info := strings.Split(sink, ":")
|
||||
|
||||
if len(info) != 2 {
|
||||
continue
|
||||
}
|
||||
|
||||
name := info[0]
|
||||
id := info[1]
|
||||
volume := Volume(id)
|
||||
|
||||
var symbole string
|
||||
|
||||
if volume == 0 {
|
||||
symbole = "\uf026"
|
||||
} else if volume < 50 {
|
||||
symbole = "\uf027"
|
||||
} else {
|
||||
symbole = "\uf028"
|
||||
}
|
||||
|
||||
label := r.TextWithPadding(
|
||||
name,
|
||||
r.FB{
|
||||
Foreground: r.Color("grey1"),
|
||||
Background: r.Color("black2"),
|
||||
},
|
||||
)
|
||||
|
||||
value := r.TextWithPadding(fmt.Sprintf("%d%% %s", volume, r.FontAwesome(symbole)), r.FB{
|
||||
Foreground: r.Color("grey1"),
|
||||
Background: r.Color("black1"),
|
||||
})
|
||||
|
||||
items = append(items, fmt.Sprintf("%s%s", label, value))
|
||||
}
|
||||
|
||||
value := r.TextWithPadding(fmt.Sprintf("%d%% %s", volume, r.FontAwesome(symbole)), r.FB{
|
||||
Foreground: r.Color("grey1"),
|
||||
Background: r.Color("black1"),
|
||||
})
|
||||
|
||||
options := r.NewBlockOptions()
|
||||
options.FullText = value
|
||||
options.FullText = strings.Join(items, "")
|
||||
block := r.Block("volume", options)
|
||||
|
||||
fmt.Println(block)
|
||||
|
|
|
|||
|
|
@ -3,13 +3,14 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
)
|
||||
|
||||
func openBrowser(wg *sync.WaitGroup, url string) {
|
||||
|
|
@ -34,7 +35,6 @@ func main() {
|
|||
}
|
||||
|
||||
resp, err := http.Get(url)
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,11 +3,12 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
"net"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
|
|||
|
|
@ -2,13 +2,14 @@ package main
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
// "os"
|
||||
"flag"
|
||||
"fmt"
|
||||
"os/exec"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
r "gitnet.fr/deblan/i3-blocks-go/rendering"
|
||||
// "os"
|
||||
)
|
||||
|
||||
type WindowProperty struct {
|
||||
|
|
|
|||
2
go.mod
2
go.mod
|
|
@ -1,6 +1,6 @@
|
|||
module gitnet.fr/deblan/i3-blocks-go
|
||||
|
||||
go 1.18
|
||||
go 1.22
|
||||
|
||||
require (
|
||||
github.com/enescakir/emoji v1.0.0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue