Skip to content

Commit 138546a

Browse files
committed
feat: tagList option
1 parent b13607e commit 138546a

2 files changed

Lines changed: 172 additions & 83 deletions

File tree

README.md

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,11 @@ Example query:
5656
Fetch a single output by name when you only care about one:
5757

5858
```graphql
59-
query ($name: String!) {
60-
output(name: $name) {
59+
query ($name: String!, $tagList: Boolean = true) {
60+
output(name: $name, tagList: $tagList) {
6161
name
6262
focusedTags
63+
focusedTagsList
6364
layoutName
6465
}
6566
}
@@ -77,20 +78,37 @@ subscription {
7778
}
7879
```
7980

80-
To watch a single output, filter by its human-readable name:
81+
82+
## Working with Tag Lists
83+
84+
By default RiverQL exposes tag bitmasks as river does. Some environments — notably [eww](https://elkowar.github.io/eww/)
85+
struggle with bit operations, so any query or subscription can opt into decoded
86+
lists by passing `tagList: true`.
87+
When enabled, `focusedTagsList` / `urgentTagsList` fields become non-null while
88+
the original mask fields remain available for backward compatibility.
8189

8290
```graphql
83-
subscription ($name: String!) {
84-
eventsForOutput(outputName: $name) {
85-
__typename
86-
... on OutputFocusedTags { name tags }
91+
query ($tagList: Boolean = true) {
92+
outputs(tagList: $tagList) {
93+
name
94+
focusedTags
95+
focusedTagsList
96+
urgentTags
97+
urgentTagsList
8798
}
8899
}
89100
```
90101

91-
### WebSocket Client Mode
102+
```graphql
103+
subscription ($name: String!, $tagList: Boolean = true) {
104+
eventsForOutput(outputName: $name, tagList: $tagList) {
105+
__typename
106+
... on OutputFocusedTags { name tags tagsList }
107+
}
108+
}
109+
```
92110

93-
### Client mode
111+
### Client Mode
94112

95113
When a widget or script (for example an eww widget) needs data, invoke `riverql`
96114
without `--server`:
@@ -116,7 +134,7 @@ Polling a query:
116134

117135
```clojure
118136
(defpoll river_outputs :interval "5s"
119-
"riverql 'query { outputs { name focusedTags } }' | jq -c '.data.outputs'")
137+
"riverql 'query { outputs { name focusedTags } }' | jq --unbuffered -c '.data.outputs'")
120138

121139
(defwidget river-tags []
122140
(box :orientation "vertical"
@@ -130,7 +148,7 @@ Listening for live events:
130148

131149
```clojure
132150
(deflisten events :initial "{}"
133-
"riverql 'subscription { events { __typename ... on OutputFocusedTags { name tags } } }' | jq -c '.data.events'")
151+
"riverql 'subscription { events { __typename ... on OutputFocusedTags { name tags } } }' | jq --unbuffered -c '.data.events'")
134152

135153
(defwidget river-event-feed []
136154
(box :orientation "vertical"

0 commit comments

Comments
 (0)