savpavi OS: Kendi masaüstümü yazmaya karar verdim
Linux’ta masaüstünü kurcalamanın bir sonu yok. Bunu birkaç ay içinde Plasma, Hyprland, Niri, dwm, Noctalia ve DankMaterialShell arasında gidip gelirken öğrendim. Her biri bir şeyi çok iyi yapıyordu, ama hiçbiri tam olarak benim gibi çalışmıyordu. Bir yerde bar fazla kalabalıktı, bir yerde launcher istediğim şeyi aramıyordu, bir yerde tema değiştirince yarım masaüstü eski renkte kalıyordu.
13 Ekim’de farklı bir şey denedim: başka birinin shell’ini kendime uydurmak yerine kendi shell’imi yazdım. Adı savpavi-shell. Şu an her gün kullandığım masaüstü bu. Kodu herkese açık: github.com/savpavi/dotfiles/tree/main/config/savpavi-shell.
Bu yazının başlığındaki savpavi OS ise bir sonraki adım. Bu kurulumu, başka bir bilgisayara tek seferde kurulabilen bir sisteme çevirmek istiyorum. O kısım henüz hazır değil; yazının sonunda nerede olduğunu anlatıyorum.
Temel: Fedora 44 + Hyprland
Altta Fedora 44 var. Pencere yöneticisi olarak Hyprland kullanıyorum; Wayland üzerinde çalışan, pencereleri ekrana döşeyen bir tiling compositor. Yapılandırması bende Lua dosyalarında duruyor.
Hyprland tek başına sadece pencereleri yönetiyor. Bar, uygulama başlatıcı, bildirimler, kilit ekranı gibi “masaüstü” dediğimiz parçaları başka bir katman sağlıyor. Benim yıllardır değiştirip durduğum şey de tam bu katmandı.
Neden hazır shell yetmedi?
Son durağım DankMaterialShell (DMS) idi ve aslında çok iyiydi. Ama zamanla şunu fark ettim: her ayarı değiştirmek için başkasının verdiği seçenekleri arıyordum. İstediğim şey seçeneklerde yoksa ya vazgeçiyordum ya da güncellemeyle kırılacak bir yama yapıyordum.
Bir de beklemediğim bir bulgu oldu. Kitty terminali, GTK ve Qt uygulamaları 4 Ekim’den beri eski Noctalia kurulumunun renk dosyalarına bağlı kalmıştı. Ben tema değiştirdiğimi sanıyordum ama bu uygulamalar hep Nord renginde kalmıştı. Birden fazla katmanın birbirinin üstüne kurulduğu bir düzende bunu fark etmek zor.
Kendi shell’imi yazarken hedefim sıfırdan bir şey icat etmek değildi. Hazır parçaları ve araçları kullanıp hepsini kendi zevkime göre tek bir yerde toplamak istedim.
savpavi-shell’de neler var?
savpavi-shell, Quickshell ile yazılmış bir shell. Quickshell, masaüstü parçalarını QML ile yazmanı sağlayan bir araç takımı. Şu an 62 QML dosyasından oluşuyor ve bir systemd kullanıcı servisi olarak açılışta başlıyor.
- Bar: Üstte yüzen, ince, tek parça bir bar. İki monitörde de çalışıyor. Çalışma alanları, odaktaki pencere, çalan müzik ve küçük bir ses görselleştiricisi, hava durumu, sistem tepsisi, CPU/RAM, Tailscale, telefona dosya gönderme, saat ve takvim var. Dar ekranda bazı parçalar kendiliğinden gizleniyor.
- Launcher (Alt+Space): Uygulama arıyor,
/ile dosya adı arıyor,digile dosyaların içinde arıyor. Super+X ile pano geçmişini açıyor. Pano kaydı, şifre yöneticisinin “bu bir şifre” diye işaretlediği kopyaları kaydetmiyor. - Bildirimler, kilit ekranı, ses göstergesi, oturum menüsü ve duvar kağıdı seçici. Bunların hepsi artık DMS’e değil, kendi shell’ime ait. Kilit ekranı sistemin kendi şifre doğrulamasını (PAM) kullanıyor ve haftalardır günlük kilidim o.
- Ayarlar penceresi (Super+Alt+S): 12 sayfa. Tema ve duvar kağıdı, pencere boşlukları, bar parçaları, bildirimler, ekranlar, ses, klavye, varsayılan uygulamalar, kısayollar ve güç ayarları buradan değişiyor. Hyprland ayarlarına dokunan her değişiklik önce Hyprland’in kendi kontrolünden geçiyor. Kontrol başarısız olursa değişiklik geri alınıyor. Ekran ayarında ise 15 saniye içinde onaylamazsan eski haline dönüyor.
- Kısayol sayfası (Super+K): Hangi tuşun ne yaptığını, Hyprland yapılandırmasındaki yorumlardan okuyup gösteriyor.
Tek komutla tema
En sevdiğim parça dot-shell-theme. 15 tema arasından birini seçtiğimde shell’in renkleri, Hyprland’in pencere kenarlıkları ve imleci, ayrıca GTK, Qt, KDE, Kitty, Vesktop, Zed ve btop’un renkleri aynı anda değişiyor.
dot-shell-theme pick # listeden seç
dot-shell-theme apply dwm-nord # doğrudan uygula
dot-shell-theme wall # temanın bir sonraki duvar kağıdı
Temaya hareketli bir duvar kağıdı bağlıysa onu da açıyor. Yukarıda anlattığım “yarım masaüstü eski renkte kaldı” sorununu çözen şey bu oldu. Artık renklerin tek bir kaynağı var.
Yol boyunca takıldığım yerler
Her şey ilk seferde olmadı. Not aldığım birkaç ders:
- Hyprland’in odaktaki pencere bilgisi boş geliyordu. Lua yapılandırmalı Hyprland’de Quickshell’in hazır
Hyprland.activeTopleveldeğeri bende boş döndü. Pencere bilgisini başka bir arabirimden (ToplevelManager) almak gerekti. - Geçiş sırasında bilgisayar tamamen dondu. Aynı anda büyük bir disk taraması, yüzlerce GB’lık bir indirme ve shell’in yeniden yüklenmesi vardı. Kesin nedeni bulamadım; kayıtlarda iz yoktu. O günden beri ağır disk işlerini masaüstü denemeleriyle aynı anda yapmıyorum.
- Geri dönüş yolu şart. DMS’i silmedim. Ayarlar penceresinden tek tıkla ona geçebiliyorum. Kendi yazdığın bir şeyin bozulacağı günü baştan kabul etmek gerekiyor.
savpavi OS: Sırada ne var?
Bu masaüstünü şimdilik bir dotfiles deposu olarak tutuyorum. Depo herkese açık: github.com/savpavi/dotfiles. Ama başka bir bilgisayarda aynı ortamı kurmak hâlâ elle birçok adım istiyor.
Plan, bunu kurulabilir bir ISO’ya çevirmek. Kafamdaki yapı iki katmanlı:
- savpavi OS: Herkese açık temel. Hyprland, savpavi-shell, temalar, launcher ve
dot-*araçları. İçinde kişisel hiçbir şey olmayacak; monitör ayarları gibi makineye özel şeyler ilk açılışta ayarlar penceresinden yapılacak. - Benim katmanım: Temelin üstüne kendi uygulamalarımı, servislerimi ve makineme özel ayarlarımı ekleyen, paylaşmayacağım ayrı bir parça.
Yöntem olarak Fedora’nın kendi araçlarını düşünüyorum: bir kickstart dosyası ve ISO’yu üreten livemedia-creator. Önce kurulu paketleri “temel” ve “kişisel” diye ayırmam, sonra ISO’yu bir sanal makinede deneyip açıldığını görmem lazım.
Bu adımların hiçbirine henüz başlamadım. Hazır olduğunda, ISO’yu bir sanal makinede kurup denediğim yazıyı da buraya ekleyeceğim.