some qol stuff

This commit is contained in:
2026-05-10 14:46:19 +01:00
parent 1aa14f9fd5
commit 98cd855349
8 changed files with 66 additions and 6 deletions
+4
View File
@@ -143,6 +143,9 @@ var jabberBytes []byte
//go:embed assets/fail.png //go:embed assets/fail.png
var failBytes []byte var failBytes []byte
//go:embed assets/please_wait.gif
var pleaseWaitBytes []byte
func loadAsset(key string, data []byte) { func loadAsset(key string, data []byte) {
loader := gdkpixbuf.NewPixbufLoader() loader := gdkpixbuf.NewPixbufLoader()
loader.Write(data) loader.Write(data)
@@ -197,6 +200,7 @@ func init() {
"moderate": moderateBytes, "moderate": moderateBytes,
"jabber": jabberBytes, "jabber": jabberBytes,
"fail": failBytes, "fail": failBytes,
"please_wait": pleaseWaitBytes,
} { } {
loadAsset(key, data) loadAsset(key, data)
} }
Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

+17
View File
@@ -136,9 +136,11 @@ func switchToTab(jid string, w *gtk.Window) {
u.Get(&ocu) u.Get(&ocu)
if mu.MucUserItem.Role == "moderator" { if mu.MucUserItem.Role == "moderator" {
gen.Prepend(gtk.NewSeparator(gtk.OrientationHorizontal))
gen.Prepend(userbox) gen.Prepend(userbox)
} else { } else {
gen.Append(userbox) gen.Append(userbox)
gen.Append(gtk.NewSeparator(gtk.OrientationHorizontal))
} }
//id := ocu.ID //id := ocu.ID
@@ -147,6 +149,10 @@ func switchToTab(jid string, w *gtk.Window) {
//} //}
nick_label := gtk.NewLabel(JidMustParse(u.From).Resource) nick_label := gtk.NewLabel(JidMustParse(u.From).Resource)
custom_nick, ok := loadedConfig.CustomNicks[ocu.ID]
if ok {
nick_label.SetText(custom_nick)
}
nick_label.SetEllipsize(pango.EllipsizeEnd) nick_label.SetEllipsize(pango.EllipsizeEnd)
nick_label.AddCSSClass(mu.MucUserItem.Role) nick_label.AddCSSClass(mu.MucUserItem.Role)
if mu.MucUserItem.Role == "visitor" { if mu.MucUserItem.Role == "visitor" {
@@ -366,6 +372,10 @@ func switchToTab(jid string, w *gtk.Window) {
win.SetDefaultSize(400, 400) win.SetDefaultSize(400, 400)
profile_box := gtk.NewBox(gtk.OrientationVertical, 0) profile_box := gtk.NewBox(gtk.OrientationVertical, 0)
nick := gtk.NewLabel(JidMustParse(u.From).Resource) nick := gtk.NewLabel(JidMustParse(u.From).Resource)
if custom_nick != "" {
nick.SetText(custom_nick)
}
ver_text := gtk.NewLabel(loadedLocale["gettingVersion"]) ver_text := gtk.NewLabel(loadedLocale["gettingVersion"])
ver_text.AddCSSClass("visitor") ver_text.AddCSSClass("visitor")
@@ -418,6 +428,13 @@ func switchToTab(jid string, w *gtk.Window) {
profile_box.Append(gtk.NewLabel(loadedLocale["affiliatedAs"] + mu.MucUserItem.Affiliation)) profile_box.Append(gtk.NewLabel(loadedLocale["affiliatedAs"] + mu.MucUserItem.Affiliation))
} }
if ocu.ID != "" {
ocu_label := gtk.NewLabel(ocu.ID)
ocu_label.AddCSSClass("jid")
ocu_label.SetSelectable(true)
profile_box.Append(ocu_label)
}
go func() { go func() {
myIQ, err := stanza.NewIQ(stanza.Attrs{ myIQ, err := stanza.NewIQ(stanza.Attrs{
+10 -5
View File
@@ -149,6 +149,14 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
m.Get(&ocu) m.Get(&ocu)
id := JidMustParse(m.From).Resource id := JidMustParse(m.From).Resource
custom_nick, ok := loadedConfig.CustomNicks[ocu.ID]
if ok {
id = custom_nick
}
if id == "" {
id = JidMustParse(m.From).Bare()
}
if loadedConfig.CompactMode { if loadedConfig.CompactMode {
al := gtk.NewLabel(id) al := gtk.NewLabel(id)
@@ -174,11 +182,8 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
} else { } else {
authorBox := gtk.NewBox(gtk.OrientationHorizontal, 10) authorBox := gtk.NewBox(gtk.OrientationHorizontal, 10)
contentBox := gtk.NewBox(gtk.OrientationHorizontal, 0) contentBox := gtk.NewBox(gtk.OrientationHorizontal, 0)
n := JidMustParse(m.From).Resource
if n == "" { al := gtk.NewLabel(id)
n = JidMustParse(m.From).Resource
}
al := gtk.NewLabel(n)
al.AddCSSClass("author") al.AddCSSClass("author")
al.SetSelectable(true) al.SetSelectable(true)
+6 -1
View File
@@ -16,6 +16,7 @@ import (
"github.com/go-analyze/charts" "github.com/go-analyze/charts"
"golang.org/x/net/html/charset" "golang.org/x/net/html/charset"
"path/filepath" "path/filepath"
"github.com/google/uuid"
"github.com/BurntSushi/toml" "github.com/BurntSushi/toml"
"gosrc.io/xmpp" "gosrc.io/xmpp"
@@ -176,6 +177,8 @@ func main() {
{Var: "http://jabber.org/protocol/muc"}, {Var: "http://jabber.org/protocol/muc"},
{Var: "λ"}, {Var: "λ"},
{Var: "urn:xmpp:attention:0"}, {Var: "urn:xmpp:attention:0"},
{Var: "urn:xmpp:carbons:2"},
{Var: "urn:xmpp:ping"},
}, },
} }
iqResp.Payload = &payload iqResp.Payload = &payload
@@ -433,9 +436,10 @@ func main() {
pingStatus.AddCSSClass("pending") pingStatus.AddCSSClass("pending")
before := time.Now() before := time.Now()
iq := new(stanza.IQ) iq := new(stanza.IQ)
iq.Id = uuid.New().String()
iq.From = clientroot.Session.BindJid iq.From = clientroot.Session.BindJid
iq.To = iq.From
iq.Type = "get" iq.Type = "get"
iq.Payload = &Ping{}
ctx, _ := context.WithTimeout(context.Background(), 30*time.Second) ctx, _ := context.WithTimeout(context.Background(), 30*time.Second)
mychan, err := client.SendIQ(ctx, iq) mychan, err := client.SendIQ(ctx, iq)
@@ -1161,6 +1165,7 @@ func activate(app *gtk.Application) {
i := (gtk.NewImageFromPaintable(clientAssets["chart_bar"])) i := (gtk.NewImageFromPaintable(clientAssets["chart_bar"]))
i.AddCSSClass("icon") i.AddCSSClass("icon")
pBox.Append(i) pBox.Append(i)
pingStatus = gtk.NewLabel("...") pingStatus = gtk.NewLabel("...")
pBox.Append(pingStatus) pBox.Append(pingStatus)
+1
View File
@@ -26,6 +26,7 @@ type lambdaConfig struct {
Debug bool Debug bool
ShowPresenceUpdates bool ShowPresenceUpdates bool
CompactMode bool CompactMode bool
CustomNicks map[string]string
} }
type mucUnit struct { type mucUnit struct {
+27
View File
@@ -0,0 +1,27 @@
package main
// Implementation of XEP-0199: XMPP Ping
// https://xmpp.org/extensions/xep-0199.html
import (
"encoding/xml"
"gosrc.io/xmpp/stanza"
)
type Ping struct {
stanza.IQ
XMLName xml.Name `xml:"urn:xmpp:ping ping"`
ResultSet *stanza.ResultSet `xml:"set,omitempty"`
}
func (v *Ping) Namespace() string {
return v.XMLName.Space
}
func (v *Ping) GetSet() *stanza.ResultSet {
return v.ResultSet
}
func init() {
stanza.TypeRegistry.MapExtension(stanza.PKTIQ, xml.Name{Space: "urn:xmpp:ping", Local: "ping"}, Ping{})
}
+1
View File
@@ -51,3 +51,4 @@ func init() {
stanza.TypeRegistry.MapExtension(stanza.PKTIQ, xml.Name{Space: "vcard-temp", Local: "vCard"}, VCard{}) stanza.TypeRegistry.MapExtension(stanza.PKTIQ, xml.Name{Space: "vcard-temp", Local: "vCard"}, VCard{})
stanza.TypeRegistry.MapExtension(stanza.PKTPresence, xml.Name{Space: "vcard-temp:x:update", Local: "x"}, VCardUpdate{}) stanza.TypeRegistry.MapExtension(stanza.PKTPresence, xml.Name{Space: "vcard-temp:x:update", Local: "x"}, VCardUpdate{})
} }