Skip to content

Commit 5040dd3

Browse files
committed
X support (experimental), README update
1 parent fe1e6bf commit 5040dd3

File tree

7 files changed

+133
-21
lines changed

7 files changed

+133
-21
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# desktop (WIP)
2-
The main desktop manager prgram
1+
# Desktop
2+
The main desktop environment
33

4-
Currently implements only the main menu
4+
Start by `go run -v .` or by downloading an executable in the github actions

bar.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ package main
22

33
import (
44
"fmt"
5+
"log"
56
"strconv"
67
"time"
78

9+
"github.com/BurntSushi/xgb/xproto"
10+
"github.com/BurntSushi/xgbutil"
811
"github.com/MiracleOS-Team/desktoplib/batteryHandler"
912
"github.com/MiracleOS-Team/desktoplib/foreignToplevel"
1013
"github.com/MiracleOS-Team/desktoplib/networkManagerHandler"
@@ -264,7 +267,20 @@ func createBar(nDaemon *notificationDaemon.Daemon) *gtk.Window {
264267
win.SetTitle("Main Bar")
265268
win.SetDecorated(false)
266269
win.SetResizable(false)
270+
win.SetKeepAbove(true)
271+
win.SetSkipTaskbarHint(true)
272+
win.SetSkipPagerHint(true)
267273
win.SetTypeHint(gdk.WINDOW_TYPE_HINT_DOCK)
274+
win.SetAppPaintable(true)
275+
276+
screen, _ := gdk.ScreenGetDefault()
277+
root_window, _ := screen.GetRootWindow()
278+
sc_height := root_window.WindowGetHeight()
279+
sc_width := root_window.WindowGetWidth()
280+
width := sc_width
281+
height := 100
282+
win.SetSizeRequest(width, 0)
283+
win.Move((sc_width-width)/2, sc_height-height)
268284

269285
layershell.InitForWindow(win)
270286
layershell.SetNamespace(win, "miracleos")
@@ -302,6 +318,27 @@ func createBar(nDaemon *notificationDaemon.Daemon) *gtk.Window {
302318
return true
303319
})
304320

321+
glib.TimeoutAdd(100, func() bool {
322+
gdkwin, _ := win.GetWindow()
323+
if gdkwin == nil {
324+
return true
325+
}
326+
_, height := win.GetSize()
327+
xid := uint32(gdkwin.GetXID())
328+
329+
// Setup X connection
330+
X, err := xgbutil.NewConn()
331+
if err != nil {
332+
log.Fatal(err)
333+
}
334+
335+
screen, _ := gdk.ScreenGetDefault()
336+
rw, _ := screen.GetRootWindow()
337+
setStrutPartial(X, xproto.Window(xid), uint(height), uint(rw.WindowGetWidth()))
338+
win.Move((sc_width-width)/2, sc_height-height)
339+
return false
340+
})
341+
305342
win.Add(box)
306343
return win
307344
}

go.mod

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,24 @@ module github.com/MiracleOS-Team/desktop
33
go 1.24.0
44

55
require (
6-
github.com/MiracleOS-Team/desktoplib v0.0.0-20250223152628-950d1d75967b
6+
github.com/BurntSushi/xgb v0.0.0-20210121224620-deaf085860bc
7+
github.com/BurntSushi/xgbutil v0.0.0-20190907113008-ad855c713046
8+
github.com/MiracleOS-Team/desktoplib v0.0.0-20250415145054-8dbe3c9c607b
79
github.com/MiracleOS-Team/libxdg-go v0.0.0-20250406103953-9a3b3570154b
810
github.com/dlasky/gotk3-layershell v0.0.0-20240515133811-5c5115f0d774
9-
github.com/go-git/go-git/v5 v5.14.0
11+
github.com/go-git/go-git/v5 v5.15.0
1012
github.com/gotk3/gotk3 v0.6.5-0.20240618185848-ff349ae13f56
13+
golang.org/x/text v0.24.0
1114
)
1215

1316
require (
1417
dario.cat/mergo v1.0.1 // indirect
18+
github.com/BurntSushi/freetype-go v0.0.0-20160129220410-b763ddbfe298 // indirect
19+
github.com/BurntSushi/graphics-go v0.0.0-20160129215708-b43f31a4a966 // indirect
1520
github.com/Microsoft/go-winio v0.6.2 // indirect
16-
github.com/ProtonMail/go-crypto v1.1.6 // indirect
21+
github.com/ProtonMail/go-crypto v1.2.0 // indirect
1722
github.com/cli/safeexec v1.0.1 // indirect
18-
github.com/cloudflare/circl v1.6.0 // indirect
23+
github.com/cloudflare/circl v1.6.1 // indirect
1924
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
2025
github.com/distatus/battery v0.11.0 // indirect
2126
github.com/emirpasic/gods v1.18.1 // indirect
@@ -38,10 +43,9 @@ require (
3843
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
3944
github.com/skeema/knownhosts v1.3.1 // indirect
4045
github.com/xanzy/ssh-agent v0.3.3 // indirect
41-
golang.org/x/crypto v0.36.0 // indirect
42-
golang.org/x/net v0.38.0 // indirect
46+
golang.org/x/crypto v0.37.0 // indirect
47+
golang.org/x/net v0.39.0 // indirect
4348
golang.org/x/sys v0.32.0 // indirect
44-
golang.org/x/text v0.24.0 // indirect
4549
google.golang.org/protobuf v1.36.4 // indirect
4650
gopkg.in/ini.v1 v1.67.0 // indirect
4751
gopkg.in/warnings.v0 v0.1.2 // indirect

go.sum

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,15 @@ dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
33
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
44
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
55
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
6+
github.com/BurntSushi/freetype-go v0.0.0-20160129220410-b763ddbfe298 h1:1qlsVAQJXZHsaM8b6OLVo6muQUQd4CwkH/D3fnnbHXA=
7+
github.com/BurntSushi/freetype-go v0.0.0-20160129220410-b763ddbfe298/go.mod h1:D+QujdIlUNfa0igpNMk6UIvlb6C252URs4yupRUV4lQ=
8+
github.com/BurntSushi/graphics-go v0.0.0-20160129215708-b43f31a4a966 h1:lTG4HQym5oPKjL7nGs+csTgiDna685ZXjxijkne828g=
9+
github.com/BurntSushi/graphics-go v0.0.0-20160129215708-b43f31a4a966/go.mod h1:Mid70uvE93zn9wgF92A/r5ixgnvX8Lh68fxp9KQBaI0=
610
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
11+
github.com/BurntSushi/xgb v0.0.0-20210121224620-deaf085860bc h1:7D+Bh06CRPCJO3gr2F7h1sriovOZ8BMhca2Rg85c2nk=
12+
github.com/BurntSushi/xgb v0.0.0-20210121224620-deaf085860bc/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
13+
github.com/BurntSushi/xgbutil v0.0.0-20190907113008-ad855c713046 h1:O/r2Sj+8QcMF7V5IcmiE2sMFV2q3J47BEirxbXJAdzA=
14+
github.com/BurntSushi/xgbutil v0.0.0-20190907113008-ad855c713046/go.mod h1:uw9h2sd4WWHOPdJ13MQpwK5qYWKYDumDqxWWIknEQ+k=
715
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
816
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
917
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
@@ -21,6 +29,10 @@ github.com/MiracleOS-Team/desktoplib v0.0.0-20250223151317-6aea7b68fd34 h1:wjGTu
2129
github.com/MiracleOS-Team/desktoplib v0.0.0-20250223151317-6aea7b68fd34/go.mod h1:940qBf4KOP8wmnlMFYA84KfTNhdcpuIfajBtT6+nUwA=
2230
github.com/MiracleOS-Team/desktoplib v0.0.0-20250223152628-950d1d75967b h1:InDRIbIFrT6oT4pBNJwugYk+9Z11TYEJmFg9xryRKqA=
2331
github.com/MiracleOS-Team/desktoplib v0.0.0-20250223152628-950d1d75967b/go.mod h1:940qBf4KOP8wmnlMFYA84KfTNhdcpuIfajBtT6+nUwA=
32+
github.com/MiracleOS-Team/desktoplib v0.0.0-20250415143421-755a45da19d3 h1:yI4QwUiNoHXHb24RD+u39mszxkgy+haIanI8X1b9nr0=
33+
github.com/MiracleOS-Team/desktoplib v0.0.0-20250415143421-755a45da19d3/go.mod h1:+kY+aYfyWQ9r8a+HQVImsKGi8rzKh/+8jjBaMP9h7mQ=
34+
github.com/MiracleOS-Team/desktoplib v0.0.0-20250415145054-8dbe3c9c607b h1:HPI77CSKoVyeOZ779GvT0owuOTV/4AtQdGIuMRxlYKY=
35+
github.com/MiracleOS-Team/desktoplib v0.0.0-20250415145054-8dbe3c9c607b/go.mod h1:+kY+aYfyWQ9r8a+HQVImsKGi8rzKh/+8jjBaMP9h7mQ=
2436
github.com/MiracleOS-Team/libxdg-go v0.0.0-20250126160842-bc18282c37ee h1:jsl3imeBR+qACjnTzGHJt1zrvrkW5MkHyFFpsmYnzxk=
2537
github.com/MiracleOS-Team/libxdg-go v0.0.0-20250126160842-bc18282c37ee/go.mod h1:mKskdRQzPihHpgc1aUN06dlR2ECTxQWgPzOY3u2To+I=
2638
github.com/MiracleOS-Team/libxdg-go v0.0.0-20250130123149-66a2b3e59a66 h1:zax0cvv63QOakMKGH4p1UN9UfVW9bRHEe1Q2GGRPt00=
@@ -47,6 +59,8 @@ github.com/ProtonMail/go-crypto v1.1.5 h1:eoAQfK2dwL+tFSFpr7TbOaPNUbPiJj4fLYwwGE
4759
github.com/ProtonMail/go-crypto v1.1.5/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
4860
github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw=
4961
github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
62+
github.com/ProtonMail/go-crypto v1.2.0 h1:+PhXXn4SPGd+qk76TlEePBfOfivE0zkWFenhGhFLzWs=
63+
github.com/ProtonMail/go-crypto v1.2.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE=
5064
github.com/bep/godartsass v1.2.0 h1:E2VvQrxAHAFwbjyOIExAMmogTItSKodoKuijNrGm5yU=
5165
github.com/bep/godartsass v1.2.0/go.mod h1:6LvK9RftsXMxGfsA0LDV12AGc4Jylnu6NgHL+Q5/pE8=
5266
github.com/bep/godartsass/v2 v2.3.2 h1:meuc76J1C1soSCAnlnJRdGqJ5S4m6/GW+8hmOe9tOog=
@@ -59,6 +73,8 @@ github.com/cli/safeexec v1.0.1/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5
5973
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
6074
github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk=
6175
github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
76+
github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0=
77+
github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
6278
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
6379
github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=
6480
github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
@@ -86,6 +102,8 @@ github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UN
86102
github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU=
87103
github.com/go-git/go-git/v5 v5.14.0 h1:/MD3lCrGjCen5WfEAzKg00MJJffKhC8gzS80ycmCi60=
88104
github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj9ItW3Wk5k=
105+
github.com/go-git/go-git/v5 v5.15.0 h1:f5Qn0W0F7ry1iN0ZwIU5m/n7/BKB4hiZfc+zlZx7ly0=
106+
github.com/go-git/go-git/v5 v5.15.0/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8=
89107
github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
90108
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
91109
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
@@ -162,6 +180,8 @@ golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
162180
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
163181
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
164182
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
183+
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
184+
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
165185
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
166186
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
167187
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
@@ -175,6 +195,8 @@ golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
175195
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
176196
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
177197
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
198+
golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
199+
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
178200
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
179201
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
180202
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=

installation.go

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"os"
77
"os/exec"
88

9-
"github.com/MiracleOS-Team/desktoplib/foreignToplevel"
109
basedir "github.com/MiracleOS-Team/libxdg-go/baseDir"
1110
"github.com/go-git/go-git/v5"
1211
)
@@ -70,7 +69,9 @@ func checkRequiredReposAndDownload() error {
7069
URL: "https://github.com/MiracleOS-Team/desktop",
7170
Progress: os.Stdout,
7271
})
73-
return err
72+
if err != nil {
73+
return err
74+
}
7475
}
7576

7677
_, mosIcons := os.Stat("/opt/miracleos-software/Icons")
@@ -80,53 +81,75 @@ func checkRequiredReposAndDownload() error {
8081
URL: "https://github.com/MiracleOS-Team/Icons",
8182
Progress: os.Stdout,
8283
})
83-
return err
84+
if err != nil {
85+
return err
86+
}
8487
}
8588

8689
_, mosIconsInstall := os.Stat("/usr/share/icons/MiracleOSIcons")
8790

8891
if os.IsNotExist(mosIconsInstall) {
8992
err := os.CopyFS("/usr/share/icons/MiracleOSIcons", os.DirFS("/opt/miracleos-software/Icons/MiracleOSIcons"))
90-
return err
93+
if err != nil {
94+
return err
95+
}
9196
}
9297

9398
_, appIconsAlias := os.Stat("/opt/miracleos-software/desk-data/app-icons-alias.json")
9499
if os.IsNotExist(appIconsAlias) {
95-
downloadFile("https://github.com/MiracleOS-Team/desktoplib/raw/refs/heads/main/app-icons-alias.json", "/opt/miracleos-software/desk-data/app-icons-alias.json")
100+
err := downloadFile("https://github.com/MiracleOS-Team/desktoplib/raw/refs/heads/main/app-icons-alias.json", "/opt/miracleos-software/desk-data/app-icons-alias.json")
101+
if err != nil {
102+
return err
103+
}
96104
}
97105

98106
_, wallpaperDark := os.Stat("/usr/share/backgrounds/miracleos_dark_default.jpg")
99107
if os.IsNotExist(wallpaperDark) {
100-
downloadFile("https://raw.githubusercontent.com/MiracleOS-Team/miracleos-team.github.io/refs/heads/main/brand/wallpaper.jpg", "/usr/share/backgrounds/miracleos_dark_default.jpg")
108+
err := downloadFile("https://raw.githubusercontent.com/MiracleOS-Team/miracleos-team.github.io/refs/heads/main/brand/wallpaper.jpg", "/usr/share/backgrounds/miracleos_dark_default.jpg")
109+
if err != nil {
110+
return err
111+
}
101112
}
102113

103114
// download labwc data
104115

105116
_, autostartFile := os.Stat(basedir.GetXDGDirectory("config").(string) + "/labwc/autostart")
106117
if os.IsNotExist(autostartFile) {
107-
downloadFile("https://github.com/MiracleOS-Team/Dotfiles/raw/refs/heads/main/labwc/autostart", basedir.GetXDGDirectory("config").(string)+"/labwc/autostart")
118+
err := downloadFile("https://github.com/MiracleOS-Team/Dotfiles/raw/refs/heads/main/labwc/autostart", basedir.GetXDGDirectory("config").(string)+"/labwc/autostart")
119+
if err != nil {
120+
return err
121+
}
108122
}
109123

110124
_, environmentFile := os.Stat(basedir.GetXDGDirectory("config").(string) + "/labwc/environment")
111125
if os.IsNotExist(environmentFile) {
112-
downloadFile("https://github.com/MiracleOS-Team/Dotfiles/raw/refs/heads/main/labwc/environment", basedir.GetXDGDirectory("config").(string)+"/labwc/environment")
126+
err := downloadFile("https://github.com/MiracleOS-Team/Dotfiles/raw/refs/heads/main/labwc/environment", basedir.GetXDGDirectory("config").(string)+"/labwc/environment")
127+
if err != nil {
128+
return err
129+
}
113130
}
114131

115132
_, menuFile := os.Stat(basedir.GetXDGDirectory("config").(string) + "/labwc/menu.xml")
116133
if os.IsNotExist(menuFile) {
117-
downloadFile("https://github.com/MiracleOS-Team/Dotfiles/raw/refs/heads/main/labwc/menu.xml", basedir.GetXDGDirectory("config").(string)+"/labwc/menu.xml")
134+
err := downloadFile("https://github.com/MiracleOS-Team/Dotfiles/raw/refs/heads/main/labwc/menu.xml", basedir.GetXDGDirectory("config").(string)+"/labwc/menu.xml")
135+
if err != nil {
136+
return err
137+
}
118138
}
119139

120140
_, rcFile := os.Stat(basedir.GetXDGDirectory("config").(string) + "/labwc/rc.xml")
121141
if os.IsNotExist(rcFile) {
122-
downloadFile("https://github.com/MiracleOS-Team/Dotfiles/raw/refs/heads/main/labwc/rc.xml", basedir.GetXDGDirectory("config").(string)+"/labwc/rc.xml")
142+
err := downloadFile("https://github.com/MiracleOS-Team/Dotfiles/raw/refs/heads/main/labwc/rc.xml", basedir.GetXDGDirectory("config").(string)+"/labwc/rc.xml")
143+
if err != nil {
144+
return err
145+
}
123146
}
124147

125148
return nil
126149
}
127150

128151
func checkRequiredSoftwareAndInstall() error {
129-
_, err := foreignToplevel.ListToplevels()
152+
_, err := exec.LookPath("wlrctl")
130153
if err != nil {
131154
return err
132155
}

main.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package main
22

33
import (
4+
"fmt"
45
"log"
56
"os"
67

8+
"github.com/BurntSushi/xgb/xproto"
9+
"github.com/BurntSushi/xgbutil"
10+
"github.com/BurntSushi/xgbutil/xprop"
711
"github.com/MiracleOS-Team/desktoplib/wallpaper"
812
"github.com/gotk3/gotk3/gdk"
913
"github.com/gotk3/gotk3/gtk"
@@ -70,6 +74,24 @@ func firstN(s string, n int) string {
7074
return s
7175
}
7276

77+
func setStrutPartial(xu *xgbutil.XUtil, win xproto.Window, height uint, screenWidth uint) error {
78+
// Reserve space at the bottom of the screen
79+
strutPartial := []uint{
80+
0, 0, 0, height, // left, right, top, bottom
81+
0, 0, 0, 0, // left_start, left_end, right_start, right_end
82+
0, 0, // top_start, top_end
83+
0, screenWidth - 1, // bottom_start, bottom_end
84+
}
85+
err := xprop.ChangeProp32(xu, win, "_NET_WM_STRUT_PARTIAL", "CARDINAL", strutPartial...)
86+
87+
if err != nil {
88+
return fmt.Errorf("failed to set _NET_WM_STRUT_PARTIAL: %s", err)
89+
}
90+
91+
xprop.ChangeProp32(xu, win, "_NET_WM_STRUT", "CARDINAL", 0, 0, 0, height)
92+
return nil
93+
}
94+
7395
func main() {
7496
err := EnsureInstallation()
7597
if err != nil {

notifications.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ func createNotificationBar(nDaemon *notificationDaemon.Daemon) *gtk.Window {
130130
win.SetTitle("Notification Bar")
131131
win.SetDecorated(false)
132132
win.SetResizable(false)
133+
win.SetKeepAbove(true)
134+
win.SetSkipTaskbarHint(true)
135+
win.SetSkipPagerHint(true)
136+
win.SetAppPaintable(true)
133137

134138
layershell.InitForWindow(win)
135139
layershell.SetNamespace(win, "miracleos")

0 commit comments

Comments
 (0)