Skip to content

Commit ecf9d78

Browse files
author
electricface
committed
feat(cursor-helper): set com.deepin.wm cursorTheme
1 parent bc1d2d9 commit ecf9d78

6 files changed

Lines changed: 51 additions & 22 deletions

File tree

cursor-helper/main.go

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ package main
2121

2222
// #cgo pkg-config: x11 xcursor xfixes gtk+-3.0
2323
// #include <stdlib.h>
24-
// #include "cursor.h"
2524
import "C"
2625

2726
import (
@@ -30,7 +29,6 @@ import (
3029
"strings"
3130
"sync"
3231
"time"
33-
"unsafe"
3432

3533
"pkg.deepin.io/dde/api/themes"
3634
"pkg.deepin.io/lib/dbus1"
@@ -98,11 +96,6 @@ func main() {
9896
name = os.Args[1]
9997
}
10098

101-
if C.init_gtk() == -1 {
102-
logger.Warning("Init gtk or x11 thread environment failed")
103-
return
104-
}
105-
10699
if name != "" {
107100
setTheme(name)
108101
return
@@ -147,17 +140,8 @@ func setTheme(name string) {
147140
return
148141
}
149142

150-
doSetTheme(name)
151-
}
152-
153-
func doSetTheme(name string) {
154143
err := themes.SetCursorTheme(name)
155144
if err != nil {
156145
logger.Warning("Set failed:", err)
157146
}
158-
159-
cName := C.CString(name)
160-
defer C.free(unsafe.Pointer(cName))
161-
C.set_gtk_cursor(cName)
162-
C.set_qt_cursor(cName)
163147
}
File renamed without changes.

themes/cursor.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package themes
2+
3+
// #cgo pkg-config: x11 xcursor xfixes gtk+-3.0
4+
// #include <stdlib.h>
5+
// #include "cursor.h"
6+
import "C"
7+
import (
8+
"unsafe"
9+
)
10+
11+
func setGtkCursor(name string) {
12+
C.init_gtk()
13+
cName := C.CString(name)
14+
defer C.free(unsafe.Pointer(cName))
15+
C.set_gtk_cursor(cName)
16+
}
17+
18+
func setQtCursor(name string) {
19+
cName := C.CString(name)
20+
defer C.free(unsafe.Pointer(cName))
21+
C.set_qt_cursor(cName)
22+
}
File renamed without changes.

themes/settings.go

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@ package themes
2222

2323
import (
2424
"fmt"
25-
"pkg.deepin.io/gir/glib-2.0"
2625
"os"
2726
"path"
27+
28+
"github.com/linuxdeepin/go-dbus-factory/com.deepin.wm"
2829
"pkg.deepin.io/dde/api/themes/scanner"
30+
"pkg.deepin.io/gir/glib-2.0"
31+
"pkg.deepin.io/lib/dbus1"
2932
dutils "pkg.deepin.io/lib/utils"
3033
)
3134

@@ -93,24 +96,32 @@ func SetIconTheme(name string) error {
9396

9497
func SetCursorTheme(name string) error {
9598
if !scanner.IsCursorTheme(getThemePath(name, scanner.ThemeTypeCursor, "icons")) {
96-
return fmt.Errorf("Invalid theme '%s'", name)
99+
return fmt.Errorf("invalid theme '%s'", name)
97100
}
98101

99-
setGtk2Cursor(name)
100-
setGtk3Cursor(name)
102+
err := setGtk2Cursor(name)
103+
if err != nil {
104+
_, _ = fmt.Fprintln(os.Stderr, err)
105+
}
106+
err = setGtk3Cursor(name)
107+
if err != nil {
108+
_, _ = fmt.Fprintln(os.Stderr, err)
109+
}
101110
setDefaultCursor(name)
102-
setWMCursor(name)
103111

104112
old := getXSettingsValue(xsKeyCursorName)
105113
if old == name {
106114
return nil
107115
}
108116

109117
if !setXSettingsKey(xsKeyCursorName, name) {
110-
return fmt.Errorf("Set theme to '%s' by xsettings failed",
118+
return fmt.Errorf("set theme to '%s' by xsettings failed",
111119
name)
112120
}
113121

122+
setQtCursor(name)
123+
setGtkCursor(name)
124+
setWMCursor(name)
114125
return nil
115126
}
116127

@@ -121,6 +132,18 @@ func setWMCursor(name string) {
121132
defer ifc.Unref()
122133
ifc.SetString("cursor-theme", name)
123134
}
135+
136+
sessionBus, err := dbus.SessionBus()
137+
if err != nil {
138+
_, _ = fmt.Fprintln(os.Stderr, "failed to get session bus:", err)
139+
return
140+
}
141+
142+
wmObj := wm.NewWm(sessionBus)
143+
err = wmObj.CursorTheme().Set(0, name)
144+
if err != nil {
145+
_, _ = fmt.Fprintln(os.Stderr, "failed to set wm cursorTheme:", err)
146+
}
124147
}
125148

126149
func GetCursorTheme() string {

0 commit comments

Comments
 (0)