File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -48,38 +48,35 @@ var (
4848 ErrNoClass = errors .New ("empty class" )
4949)
5050
51- func Connect (display string ) Xorg {
51+ func Connect (display string ) ( * Xorg , error ) {
5252 var x Xorg
5353 var err error
5454
5555 x .conn , err = xgb .NewConnDisplay (display )
5656 if err != nil {
57- log . Fatal ( "xgb:" , err )
57+ return nil , err
5858 }
5959
6060 x .util , err = xgbutil .NewConnDisplay (display )
6161 if err != nil {
62- log . Fatal ( err )
62+ return nil , err
6363 }
6464
65- err = screensaver .Init (x .conn )
66- if err != nil {
67- log . Fatal ( "screensaver:" , err )
65+ if err : = screensaver .Init (x .conn ); err == nil {
66+ drw := xproto . Drawable ( x . root )
67+ screensaver . SelectInput ( x . conn , drw , screensaver . EventNotifyMask )
6868 }
6969
7070 setup := xproto .Setup (x .conn )
7171 x .root = setup .DefaultScreen (x .conn ).Root
7272
73- drw := xproto .Drawable (x .root )
74- screensaver .SelectInput (x .conn , drw , screensaver .EventNotifyMask )
75-
7673 x .activeAtom = x .atom ("_NET_ACTIVE_WINDOW" )
7774 x .netNameAtom = x .atom ("_NET_WM_NAME" )
7875 x .nameAtom = x .atom ("WM_NAME" )
7976 x .classAtom = x .atom ("WM_CLASS" )
8077
8178 x .spy (x .root )
82- return x
79+ return & x , nil
8380}
8481
8582func (x Xorg ) Close () {
Original file line number Diff line number Diff line change @@ -15,12 +15,13 @@ import (
1515)
1616
1717var (
18- dev streamdeck.Device
18+ dev streamdeck.Device
19+ deck * Deck
20+
1921 dbusConn * dbus.Conn
2022 keyboard uinput.Keyboard
21- x Xorg
2223
23- deck * Deck
24+ xorg * Xorg
2425 recentWindows []Window
2526
2627 deckFile = flag .String ("deck" , "deckmaster.deck" , "path to deck config file" )
@@ -79,11 +80,12 @@ func main() {
7980 log .Fatal (err )
8081 }
8182
82- x = Connect (os .Getenv ("DISPLAY" ))
83- defer x .Close ()
84-
8583 tch := make (chan interface {})
86- x .TrackWindows (tch , time .Second )
84+ xorg , err = Connect (os .Getenv ("DISPLAY" ))
85+ if err == nil {
86+ defer xorg .Close ()
87+ xorg .TrackWindows (tch , time .Second )
88+ }
8789
8890 d , err := streamdeck .Devices ()
8991 if err != nil {
Original file line number Diff line number Diff line change @@ -37,7 +37,12 @@ func (w *RecentWindowWidget) Update(dev *streamdeck.Device) {
3737}
3838
3939func (w * RecentWindowWidget ) TriggerAction () {
40+ if xorg == nil {
41+ log .Println ("xorg support is disabled!" )
42+ return
43+ }
44+
4045 if int (w .window ) < len (recentWindows ) {
41- x .RequestActivation (recentWindows [w .window ])
46+ xorg .RequestActivation (recentWindows [w .window ])
4247 }
4348}
You can’t perform that action at this time.
0 commit comments