Skip to content

Commit fdbb494

Browse files
committed
Finish Auto-Install, Fix the bar's Icon size, make the icons round as in the video, update dependencies, fix css loading, fix user info in the main menu
1 parent 99b01ed commit fdbb494

File tree

7 files changed

+129
-18
lines changed

7 files changed

+129
-18
lines changed

bar.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,12 @@ func createWorkspaces() *gtk.Box {
213213

214214
pathn, err := foreignToplevel.GetIconFromToplevel(k, 16, 1)
215215
if err == nil {
216-
img, _ := gtk.ImageNewFromFile(pathn)
216+
217+
pixb, _ := gdk.PixbufNewFromFile(pathn)
218+
219+
pixbuf, _ := pixb.ScaleSimple(16, 16, gdk.INTERP_BILINEAR)
220+
221+
img, _ := gtk.ImageNewFromPixbuf(pixbuf)
217222
imgButton.Add(img)
218223
}
219224

desktop.css

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,12 +228,13 @@
228228
.app {
229229
transition: all 1s;
230230
background: rgba(255, 255, 255, 0.25);
231-
padding: 5px;
231+
padding: 12px;
232232
border-radius: 20000px;
233233
padding-top: 8px;
234234
padding-bottom: 8px;
235235
margin-left: 5px;
236236
margin-right: 5px;
237+
237238
}
238239

239240
.clock-text {
@@ -284,3 +285,4 @@
284285
.workspaces * {
285286
margin: 0px;
286287
}
288+

go.mod

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ go 1.24.0
44

55
require (
66
github.com/MiracleOS-Team/desktoplib v0.0.0-20250223152628-950d1d75967b
7-
github.com/MiracleOS-Team/libxdg-go v0.0.0-20250301094649-51ce3be1ff64
7+
github.com/MiracleOS-Team/libxdg-go v0.0.0-20250406103953-9a3b3570154b
88
github.com/dlasky/gotk3-layershell v0.0.0-20240515133811-5c5115f0d774
9+
github.com/go-git/go-git/v5 v5.14.0
910
github.com/gotk3/gotk3 v0.6.5-0.20240618185848-ff349ae13f56
1011
)
1112

1213
require (
13-
dario.cat/mergo v1.0.0 // indirect
14+
dario.cat/mergo v1.0.1 // indirect
1415
github.com/Microsoft/go-winio v0.6.2 // indirect
15-
github.com/ProtonMail/go-crypto v1.1.5 // indirect
16+
github.com/ProtonMail/go-crypto v1.1.6 // indirect
1617
github.com/cli/safeexec v1.0.1 // indirect
1718
github.com/cloudflare/circl v1.6.0 // indirect
1819
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
@@ -23,7 +24,6 @@ require (
2324
github.com/gek64/displayController v1.0.2 // indirect
2425
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
2526
github.com/go-git/go-billy/v5 v5.6.2 // indirect
26-
github.com/go-git/go-git/v5 v5.14.0 // indirect
2727
github.com/go-ole/go-ole v1.3.0 // indirect
2828
github.com/godbus/dbus/v5 v5.1.0 // indirect
2929
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
@@ -38,10 +38,10 @@ require (
3838
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
3939
github.com/skeema/knownhosts v1.3.1 // indirect
4040
github.com/xanzy/ssh-agent v0.3.3 // indirect
41-
golang.org/x/crypto v0.35.0 // indirect
42-
golang.org/x/net v0.35.0 // indirect
43-
golang.org/x/sys v0.30.0 // indirect
44-
golang.org/x/text v0.22.0 // indirect
41+
golang.org/x/crypto v0.36.0 // indirect
42+
golang.org/x/net v0.38.0 // indirect
43+
golang.org/x/sys v0.32.0 // indirect
44+
golang.org/x/text v0.24.0 // indirect
4545
google.golang.org/protobuf v1.36.4 // indirect
4646
gopkg.in/ini.v1 v1.67.0 // indirect
4747
gopkg.in/warnings.v0 v0.1.2 // indirect

go.sum

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
22
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
33
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
4+
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
5+
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
46
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
57
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
68
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
@@ -39,8 +41,12 @@ github.com/MiracleOS-Team/libxdg-go v0.0.0-20250301093905-6732d62f3069 h1:orQKUC
3941
github.com/MiracleOS-Team/libxdg-go v0.0.0-20250301093905-6732d62f3069/go.mod h1:GA/p+ukjyXCsrcpGvs0/gFp1NeHAMtJG/sYT0JcImfE=
4042
github.com/MiracleOS-Team/libxdg-go v0.0.0-20250301094649-51ce3be1ff64 h1:e3W++m1e0wH5RQoS85VSALnurUYkUM1hyktvZ4z9glg=
4143
github.com/MiracleOS-Team/libxdg-go v0.0.0-20250301094649-51ce3be1ff64/go.mod h1:GA/p+ukjyXCsrcpGvs0/gFp1NeHAMtJG/sYT0JcImfE=
44+
github.com/MiracleOS-Team/libxdg-go v0.0.0-20250406103953-9a3b3570154b h1:9rDnd3Y2/1HAP96ivsiuJ+Eerk8+sYiPjGvL1sFBbQc=
45+
github.com/MiracleOS-Team/libxdg-go v0.0.0-20250406103953-9a3b3570154b/go.mod h1:GA/p+ukjyXCsrcpGvs0/gFp1NeHAMtJG/sYT0JcImfE=
4246
github.com/ProtonMail/go-crypto v1.1.5 h1:eoAQfK2dwL+tFSFpr7TbOaPNUbPiJj4fLYwwGE1FQO4=
4347
github.com/ProtonMail/go-crypto v1.1.5/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
48+
github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw=
49+
github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
4450
github.com/bep/godartsass v1.2.0 h1:E2VvQrxAHAFwbjyOIExAMmogTItSKodoKuijNrGm5yU=
4551
github.com/bep/godartsass v1.2.0/go.mod h1:6LvK9RftsXMxGfsA0LDV12AGc4Jylnu6NgHL+Q5/pE8=
4652
github.com/bep/godartsass/v2 v2.3.2 h1:meuc76J1C1soSCAnlnJRdGqJ5S4m6/GW+8hmOe9tOog=
@@ -154,6 +160,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
154160
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
155161
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
156162
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
163+
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
164+
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
157165
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
158166
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
159167
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
@@ -165,6 +173,8 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn
165173
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
166174
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
167175
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
176+
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
177+
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
168178
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
169179
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
170180
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -185,13 +195,17 @@ golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s=
185195
golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
186196
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
187197
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
198+
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
199+
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
188200
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
189201
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
190202
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
191203
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
192204
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
193205
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
194206
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
207+
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
208+
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
195209
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
196210
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
197211
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=

installation.go

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"io"
55
"net/http"
66
"os"
7+
"os/exec"
78

89
"github.com/MiracleOS-Team/desktoplib/foreignToplevel"
910
basedir "github.com/MiracleOS-Team/libxdg-go/baseDir"
@@ -18,6 +19,13 @@ func checkRequiredDirectoriesAndCreate() error {
1819
return err
1920
}
2021

22+
_, deskData := os.Stat("/opt/miracleos-software/desk-data")
23+
24+
if os.IsNotExist(deskData) {
25+
err := os.Mkdir("/opt/miracleos-software/desk-data", os.ModePerm)
26+
return err
27+
}
28+
2129
_, labWCConf := os.Stat(basedir.GetXDGDirectory("config").(string) + "/labwc")
2230
if os.IsNotExist(labWCConf) {
2331
err := os.Mkdir(basedir.GetXDGDirectory("config").(string)+"/labwc", os.ModePerm)
@@ -65,6 +73,33 @@ func checkRequiredReposAndDownload() error {
6573
return err
6674
}
6775

76+
_, mosIcons := os.Stat("/opt/miracleos-software/Icons")
77+
78+
if os.IsNotExist(mosIcons) {
79+
_, err := git.PlainClone("/opt/miracleos-software/Icons", false, &git.CloneOptions{
80+
URL: "https://github.com/MiracleOS-Team/Icons",
81+
Progress: os.Stdout,
82+
})
83+
return err
84+
}
85+
86+
_, mosIconsInstall := os.Stat("/usr/share/icons/MiracleOSIcons")
87+
88+
if os.IsNotExist(mosIconsInstall) {
89+
err := os.CopyFS("/usr/share/icons/MiracleOSIcons", os.DirFS("/opt/miracleos-software/Icons/MiracleOSIcons"))
90+
return err
91+
}
92+
93+
_, appIconsAlias := os.Stat("/opt/miracleos-software/desk-data/app-icons-alias.json")
94+
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")
96+
}
97+
98+
_, wallpaperDark := os.Stat("/usr/share/backgrounds/miracleos_dark_default.jpg")
99+
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")
101+
}
102+
68103
// download labwc data
69104

70105
_, autostartFile := os.Stat(basedir.GetXDGDirectory("config").(string) + "/labwc/autostart")
@@ -92,7 +127,21 @@ func checkRequiredReposAndDownload() error {
92127

93128
func checkRequiredSoftwareAndInstall() error {
94129
_, err := foreignToplevel.ListToplevels()
95-
return err
130+
if err != nil {
131+
return err
132+
}
133+
134+
_, err = exec.LookPath("swww")
135+
if err != nil {
136+
return err
137+
}
138+
139+
_, err = exec.LookPath("mpvpaper")
140+
if err != nil {
141+
return err
142+
}
143+
144+
return nil
96145
}
97146

98147
func EnsureInstallation() error {

main.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,14 @@ func loadCSS() {
1313
// Load CSS into GTK
1414
provider, _ := gtk.CssProviderNew()
1515
//err = provider.LoadFromData(css)
16-
err := provider.LoadFromPath("/opt/miracleos-software/desktop/desktop.css")
17-
//err := provider.LoadFromPath("desktop.css")
16+
17+
err := provider.LoadFromPath("desktop.css")
1818
if err != nil {
19-
log.Println("Failed to load CSS into GTK:", err)
20-
return
19+
err = provider.LoadFromPath("/opt/miracleos-software/desktop/desktop.css")
20+
if err != nil {
21+
log.Println("Failed to load CSS into GTK:", err)
22+
return
23+
}
2124
}
2225

2326
display, err := gdk.DisplayGetDefault()

mainMenu.go

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@ package main
33
import (
44
"fmt"
55
"os"
6+
"os/user"
67
"sort"
78

89
"github.com/MiracleOS-Team/libxdg-go/desktopFiles"
910
"github.com/dlasky/gotk3-layershell/layershell"
1011
"github.com/gotk3/gotk3/gdk"
1112
"github.com/gotk3/gotk3/gtk"
13+
"golang.org/x/text/cases"
14+
"golang.org/x/text/language"
1215
)
1316

1417
func createAppGroup(apps []desktopFiles.DesktopFile) *gtk.Box {
@@ -109,12 +112,47 @@ func createAppList() *gtk.ScrolledWindow {
109112
}
110113

111114
func createUserInfo() *gtk.Box {
115+
userObject, err := user.Current()
116+
if err != nil {
117+
panic(err)
118+
}
119+
120+
subtitle := "Standard User"
121+
122+
groups, err := userObject.GroupIds()
123+
if err == nil {
124+
for _, groupId := range groups {
125+
gp, err := user.LookupGroupId(groupId)
126+
if err != nil {
127+
continue
128+
}
129+
if gp.Name == "sudo" {
130+
subtitle = "Administrator"
131+
}
132+
if gp.Name == "wheel" {
133+
subtitle = "Administrator"
134+
}
135+
136+
}
137+
138+
}
139+
112140
userBox, _ := gtk.BoxNew(gtk.ORIENTATION_HORIZONTAL, 10)
113141
userImage, _ := gtk.ImageNewFromFile("images/pp.png")
114-
userLabel, _ := gtk.LabelNew("Abdi\nanonymous@gmail.com")
115-
userLabel.SetXAlign(0)
142+
userNameBox, _ := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 0)
143+
144+
userNameLabel, _ := gtk.LabelNew(cases.Title(language.English, cases.Compact).String(userObject.Username))
145+
userNameLabel.SetXAlign(0)
146+
sc, _ := userNameLabel.GetStyleContext()
147+
sc.AddClass("h2")
148+
149+
userSubtitleLabel, _ := gtk.LabelNew(subtitle)
150+
userSubtitleLabel.SetXAlign(0)
151+
152+
userNameBox.PackStart(userNameLabel, false, false, 0)
153+
userNameBox.PackEnd(userSubtitleLabel, false, false, 0)
116154
userBox.PackStart(userImage, false, false, 5)
117-
userBox.PackStart(userLabel, false, false, 5)
155+
userBox.PackStart(userNameBox, false, false, 5)
118156
return userBox
119157
}
120158

0 commit comments

Comments
 (0)