Ege Bostancı

savpavi OS: Kendi masaüstümü yazmaya karar verdim

31 Ekim 2026 4 dk okuma

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.

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:

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ı:

  1. 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.
  2. 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.