2 puan yazan GN⁺ 3 일 전 | 1 yorum | WhatsApp'ta paylaş
  • Kaydırmalı döşemeli Wayland compositör, arka plan bulanıklaştırma, screencast, render alma ve giriş işleme genelindeki iyileştirmelerle daha olgun hale geldi
  • Arka plan bulanıklaştırma ana dala dahil edildi; ext-background-effect destekleyen pencereler ve layer-shell öğeleri artık ek bir niri ayarı olmadan bulanıklaştırma isteyebiliyor, ayrıca niri tarafındaki kurallarla da bulanıklaştırma zorla uygulanabiliyor
  • Screencast tarafında hem PipeWire hem de wlr-screencopy yolunda imleç işleme, dynamic cast başlatma yöntemi, IPC sorgulama ve zorla sonlandırma, çoklu kopyalama ve kaynak serbest bırakma sorunları birlikte iyileştirildi
  • Render yapısı, iterator tabanlı modelden push tabanlı modele yeniden kuruldu; böylece render listesi oluşturma hızı ana makinelerde 2-3 kat, eski Eee PC'de ise 8 kat arttı ve bellek kullanımı da azaldı
  • Eski donanım ve giriş ortamları da elden geçirildi; eski Intel sistemlerde ekran görüntüsü ve screencast, IME ve GTK 4 popup çakışmaları, yüksek yenileme hızlı fare ve tablet eşlemesi, iç içe niri'de DMA-BUF hızlandırması gibi alanlarda gerçek kullanım kapsamı genişledi

Temel değişiklikler

  • GitHub organizasyonu kişisel hesaptan niri-wm hesabına taşındı ve ilgili projeler de birlikte düzenlendi
  • Paketleyicileri ilgilendiren değişiklikler de var
    • Asgari desteklenen Rust sürümü 1.85'e yükseldi
    • niri.service artık niri ikili dosyası yoluna /usr/bin/ değerini sabit olarak yazmıyor
    • dinit servis dosyası yapısı değişti: 3bfa4a7

Arka plan bulanıklaştırma

  • Arka plan bulanıklaştırma ana dala girdi ve pencere ile layer-shell bileşenleri ext-background-effect protokolü üzerinden bulanıklaştırma isteyebiliyor
  • Uygulama henüz ext-background-effect desteklemese bile niri tarafında window-rule ve layer-rule ile bulanıklaştırma açılabiliyor
    • Ayrıntılı ayarlar ve kısıtlamalar Window Effects belgelerinde özetlenmiş durumda
    • niri'de yapılandırılan bulanıklaştırma için doğru geometry-corner-radius gerekiyor
    • Karmaşık surface biçimlerinde çalışmıyor
  • xray blur ile normal blur birlikte sunuluyor ve varsayılan değer xray blur
    • xray blur, duvar kağıdını bir kez bulanık hesaplayıp statik görsel gibi yeniden kullandığı için çok daha verimli
    • Yalnızca duvar kağıdı değiştiğinde yeniden hesaplanıyor
    • Animasyonlu duvar kağıtlarında verimlilik avantajı azalıyor
    • Yeni layer eşleştiricisi ile normal blur yalnızca top, overlay gibi katmanlara uygulanacak şekilde değiştirilebiliyor
  • Bulanıklaştırma özelliğinin uygulanması, render yapısında değişiklik gerektirecek kadar zordu
    • Normal blur, kare ortasında daha önce render edilmiş pikselleri yeniden okuyup bulanıklaştırdıktan sonra render almaya devam ediyor
    • xray blur için doğru arka plan kırpmasını sağlamak adına pencere konumunun render kodunun geneline taşınması gerekti
    • Overview içinde xray blur desteklenirken, overview'ı yeniden render etmeme özelliğinin de korunması gerekiyordu
    • screencast engelli pencerelerle birlikte de çalışması gerekiyordu
  • Bulanıklaştırma olmadan yalnızca xray tek başına kullanılabiliyor; ayrıca blur kaynaklı renk şeritlenmesini azaltan noise ve saturation efektleri de ayrı ayrı kullanılabiliyor
  • Yeni popups bloğu ile window rule veya layer rule içinde popup menülere de saydamlık ve arka plan efektleri uygulanabiliyor
    • GTK 4'teki has-arrow=true popup'ları gibi yuvarlatılmış dikdörtgen olmayan durumlarda görünüm tuhaf olabilir
    • Web uygulamaları veya Electron Wayland popup kullanmadığı için niri bunları işleyemez
    • ext-background-effect özelliğini doğrudan uygulayan istemciler, daha karmaşık bulanıklaştırma biçimlerini de ele alabilir

İsteğe bağlı include

  • config include için isteğe bağlı include eklendi
    • include optional=true "optional-config.kdl" şeklinde kullanıldığında dosya olmasa bile yapılandırma yüklemesi başarısız olmaz
    • Dosya yoksa her yapılandırma yeniden yüklemesinde bir uyarı günlüğü bırakılır ama yapılandırma yüklenmeye devam eder
    • Dosya daha sonra oluşursa izlenen değişiklik algılanır ve otomatik olarak yeniden yüklenir
    • Dosya mevcut olup söz dizimi hatası içeriyorsa yine ayrıştırma hatası sayılır
  • include yolundaki ~, ev dizini olarak genişletiliyor
    • ~/file.kdl, /home/user/file.kdl olarak genişletilir

İşaretçi sarmalama ve kaydırma

  • Görünümü kaydıran hareket sırasında işaretçi ekranın bir kenarından karşı kenara sarılıyor
    • Blender'a benzer bir davranış
    • Böylece monitör kenarına yakın başlansa bile birden fazla pencere doğal şekilde kaydırılmaya devam edilebiliyor

Ekran yayını iyileştirmeleri

  • niri’nin ekran yayını, hem PipeWire üzerinden xdg-desktop-portal-gnome hem de wlr-screencopy üzerinden iyileştirildi
  • Pencere ekran yayınında imleç işleme

    • PipeWire’da imleci doğrudan video karelerinin içine çizmek yerine artık imleç meta verisi destekleniyor
      • Video karelerine imleç eklenmiyor; imleç simgesi ve koordinatlar ayrı bir arabellek üzerinden gönderiliyor
      • OBS veya tarayıcı gibi tüketici tarafı imleci kendisi çiziyor
    • Hem monitör yakalama hem de pencere yakalamada çalışıyor
    • Pencere yakalamada imleç, yalnızca gerçekten ilgili pencerenin veya onun açılır pencerelerinin üzerindeyse görünüyor
    • Sürükle ve bırak simgesi de birlikte çiziliyor
    • Uygulama sürecinde PipeWire’daki bellek bozulması sorunu da ortaya çıkarıldı ve düzeltildi
    • PipeWire’ın niyeti ile libwebrtc gibi tüketici uygulamaları arasındaki uyumsuzluk da doğrulandı
    • Test edilen ortamlarda düzgün çalışıyor
    • screenshot-window show-pointer=true ile pencere ekran görüntülerine de işaretçi eklenebiliyor
  • Dynamic cast target başlatma yöntemi değişti

    • Dynamic cast target, ekran yayını hedefini kısayol tuşuyla anında değiştirme özelliğidir
    • Önceden başlatılırken 1×1 siyah piksel video akışı olarak açılıyordu
    • Artık ilk gerçek hedef seçilene kadar video akışı başlatılmıyor
    • Microsoft Teams’te görülen kısa süreli 1×1 video sorununu önleyebilir
  • Cast IPC

    • Devam eden ekran yayınları artık IPC üzerinden görülebiliyor
    • niri msg casts ile etkin cast’ler görüntülenebiliyor
    • event stream üzerinden cast events aboneliği yapılabiliyor
    • Cast nesnesi tür, geçerli hedef ve etkin durum bilgisi sağlıyor
    • PipeWire ekran yayını node ID, wlr-screencopy ise istemci süreç ID bilgisi sağlıyor
    • DankMaterialShell bu IPC’yi kullanarak zaten ekran yayını göstergesi açıyor
    • niri msg action stop-cast --session-id <ID> ile PipeWire ekran yayını zorla sonlandırılabiliyor
  • wlr-screencopy ile ilgili sınırlamalar ve düzeltmeler

    • wlr-screencopy, ekran yayını ile ekran görüntüsünü sağlam biçimde ayırmanın bir yolunu sunmadığı için bazı sezgisel yöntemler gerekiyor
    • xdg-desktop-portal-wlr, tek bir wlr-screencopy manager nesnesini sürekli açık tuttuğundan bitiş anını hemen anlamak zorlaşıyor
    • Bu sorunlar yeni ext-image-copy-capture protokolünde çözülüyor, ancak henüz niri’ye eklenmedi
  • Diğer ekran yayını düzeltmeleri

    • damage kopyalanırken, wlr-screencopy istemcisi imleci istemese bile her zaman dahil edilmesine neden olan hata düzeltildi
    • damage içeren çok kareli kopyaların aynı anda istenmesi durumundaki davranış düzeltildi
    • İstemci kapandığında olduğu gibi bazı durumlarda niri’nin wlr-screencopy verilerinin serbest bırakılmaması sorunu giderildi
    • Varsayılan PipeWire ekran yayını arabellek sayısı 16’dan 8’e düşürüldü
    • pipewire-rs içindeki use-after-free sorunundan kaçınmak için struct alanlarının sırası yeniden düzenlendi
    • Dynamic cast hedefi pencereye çevrildiğinde bir kare boyunca z-order’ın yanlış çizilmesine neden olan render hatası düzeltildi

Animasyonlar ve pencere davranışı

  • Animasyon senkronizasyonu daha doğru hale geldi
    • niri, tek tek animasyonların ayrı ayrı ayarlanmasına izin veriyor; ancak tam olarak eşleşmeleri gerektiğinde senkronize çalıştırıyor
    • Pencere yeniden boyutlandırma animasyonu, buna neden olan yatay görünüm kaydırma animasyonuyla senkronize ediliyor
    • Tam ekran veya büyütülmüş durumdan çıkarken görünüm kaydırma senkronizasyonunun eksik olması nedeniyle pencerenin anında geri dönüp ekranın yavaşça kayması sorunu düzeltildi
  • Belirli sürükleme yollarında diğer döşemeli pencerelerin yatay hareket animasyonunun atlanmasına neden olan sorun giderildi
    • Bu sorun, büyütülmüş pencerenin sürüklenerek büyütmeden çıkarılması ve özgün olarak yüzen bir pencereyse tekrar floating durumuna döndürülmesiyle
    • monitör kenarına yakın sürüklemelerde sağ/sol workspace kaydırma mantığının çakışmasından kaynaklanıyordu
    • Düzeltme commit’i: df3f3979e936ed6800b4fbd55843bb0fe2554f15
  • Workspace’in en sol sütunu dışarı çekilip tekrar bırakıldığında özgün yerine değil sağ tarafa yerleşmesi sorunu da düzeltildi
  • Yapılandırma hatası bildirimlerinin gösterim süresi artık animasyon slowdown/speedup ayarlarından etkilenmiyor

IME ve açılır pencereler

  • GTK 4 açılır metin girişleri ve IME birlikte çalışmama şeklindeki eski bir sorun dolaylı olarak çözüldü
    • Fcitx5 gibi bir IME açıkken metin girişli açılır pencereler açılamıyordu
    • Açılır pencere işaretçi ve klavye grab’ini alırken IME de klavye grab’i kullandığı için çakışma oluşuyordu
    • niri açılır pencerenin grab’ini bıraktığında pencere çoğu zaman anında kapanıyordu
    • Smithay yapısını tamamen değiştirmeden çalışmasını sağlamak için bazı kontroller gevşetildi
    • Artık IME kullanıcıları Nautilus’ta dosya yeniden adlandırma gibi işlemleri yapabiliyor

Sürükle ve bırak ile giriş aygıtları

  • Sürükle ve bırak sırasında Escape tuşuna basarak işlem iptal edilebiliyor
  • Giriş aygıtları genelinde de çeşitli düzeltmeler yapıldı
    • Yüksek yenileme hızlı farelerle hide-after-inactive-ms veya idle izleme daemon’ları birlikte kullanıldığında zamanla yavaşlama sorunu düzeltildi
    • libwayland-server v1.23 ve sonrasında, Wayland arabellek boyutu artırılarak yanıt vermeyen pencereler üzerinde yüksek yenileme hızlı fare hareketlerinde pencerenin hızlıca çökmesi önleniyor
    • map-to-focused-output tablet seçeneği eklendi; böylece sabit tek bir çıktı yerine o anda odaklanmış çıktıya eşleme yapılabiliyor
    • Workspace’in en üst pikselinde imlecin büyütülmüş pencereyi her zaman doğru işaret etmemesi sorunu düzeltildi
    • Alt-Tab’in ekranda görünmeden önce fare girdisine tepki vermesi sorunu düzeltildi
    • Trackball’un on-button-down kaydırması artık overview içinde de çalışıyor
    • Özel .xkb keymap yüklendikten sonra da Num Lock durumu korunuyor
    • tmux üzerinden başka bir TTY’de başlatıldığında giriş aygıtlarının hiç kullanılamaması sorunu düzeltildi
    • libinput plugins yükleme desteği etkinleştirildi

GPU profilleme ve render optimizasyonu

  • Smithay ve niri'de kullanılan Tracy için GPU profilleme entegrasyonu eklendi
    • GPU zaman damgası sorgularını gönderip, tamamlanan değerleri toplayarak Tracy'ye ileten çalışma Smithay'e eklendi: çalışma PR'ı
    • Hem Smithay içindeki GPU işleri hem de compositörün kendi GPU işleri için aralık işaretleme mümkün hale geldi
    • Tek bir kare içinde DRM buffer render'ı ile PipeWire ekran yayını buffer render'ının nasıl çakıştığı izlenebiliyor
    • Çoklu GPU sistemlerde GPU başına izler de görülebiliyor
    • blur performansının beklenenden yavaş olmadığını doğrulamak ve GPU render darboğazından kaynaklanan dropped frame sorunlarını teşhis etmek kolaylaştı
  • Render listesi oluşturma yöntemi iterator tabanlı yapıdan push tabanlı yapıya dönüştürüldü
    • Önceden render öğeleri -> impl Iterator<Item = ...> biçiminde birleştiriliyordu
    • Koşullu dallanma, lifetime, &self ödünç alma, &mut Renderer ile çakışma, ara Vec tahsisi ve crate sınırı sorunları gibi çeşitli karmaşıklıklar vardı
    • Yeni yapıda render fonksiyonu, öğeleri içeri itmek için push: &mut dyn FnMut(Element) alıyor
    • Ara fonksiyonlar, üst düzey push çağrısını saran closure'larla mevcut mantığı koruyabiliyor
    • Geçici Vec ortadan kalktı ve borrowing sorunları da çözüldü
    • niri'de iterator'ın erken sonlandırma avantajına pratikte ihtiyaç yoktu
  • Bu refaktör ile render listesi oluşturma hızı büyük ölçüde arttı
    • Ana makinede 2~3 kat hızlandı
    • Eski bir Eee PC'de 8 kat hızlandı
    • Render listesi oluşturma, doğrudan GPU render süresinin kendisi olmasa da ekran yeniden çizilmese bile sık çalıştığı için iyileştirmenin etkisi büyük
    • Bellek kullanımı da azaldı; yeni yoldaki tahsislerin çoğu artık yalnızca çıktı vektörünü büyütmek için yapılıyor
    • Ayrıntılı motivasyon ve diff için PR'a bakılabilir

Eski donanım desteği

  • Eski Intel dizüstülerde ekran görüntüsünün başarısız olmasına neden olan sorunun Smithay'deki hatalı OpenGL enum değeri olduğu ortaya çıkarıldı ve düzeltildi: kök neden analizi PR'ı
  • niri shader'ları da küçük ölçüde optimize edildi; böylece çok eski bir ASUS Eee PC'nin kısıtlı GPU'sunda bile
    • pencere yeniden boyutlandırma animasyonu
    • compositörün yuvarlatılmış köşeleri
    • çalışabilir hale geldi

Diğer iyileştirmeler

  • Bazı sistemlerde belirli uygulamalar kapandıktan sonra oluşan VRAM sızıntısı sorunu düzeltildi
  • ext-foreign-toplevel-list protokolü eklendi; böylece Quickshell gibi ortamlarda Wayland pencere nesneleri ile niri IPC pencere ID'lerini eşlemek kolaylaştı
  • Ayarlarda yinelenen bind hatası oluştuğunda, aynı bind'in ilk tanım konumu da birlikte gösteriliyor
  • Mod+LMB ile pencere sürüklerken grabbing cursor gösteriliyor
  • niri msg action load-config-file komutuna --path argümanı eklendi; böylece çalışma zamanında başka bir yapılandırma dosyasına geçilebiliyor
  • nested niri'ye DMA-BUF desteği eklendi; böylece Mesa'nın wl_drm kullanımını bırakmasının ardından donanım hızlandırma yeniden çalışıyor
  • niri'nin monitör kenarına yakın layer-shell açılır pencerelerine eklediği padding kaldırıldı
  • Varsayılan yapılandırma değişiklikleri de yer alıyor
    • Mod+M: maximize-window-to-edges
    • Mod+Shift+R: switch-preset-column-width-back
  • force-disable-connectors-on-resume hata ayıklama bayrağı eklendi; böylece TTY geçişi veya uykudan dönüş sırasında ekran zorla blank yapılabiliyor
  • windowed fullscreen modunda pencere köşelerinin doğru şekilde dik açı olarak işlenmesi düzeltildi
  • overview açıkken ekranın sürekli yeniden çizilmesine neden olan sorun düzeltildi
  • Etkileşimli sürükleme sırasında relative-to=workspace-view gradient border render'ı küçük ölçüde düzeltildi
  • Important Hotkeys iletişim kutusunda diaeresis kısayolunun render'ı iyileştirildi
  • niri msg action içindeki expel-window-from-column açıklaması, gerçek davranışla uyumlu olacak şekilde alttaki pencereyi dışarı atan yöntem olarak düzeltildi
  • İstemciler yakın zamanda kaldırılmış bir output'u kullanmaya çalıştığında oluşabilen çeşitli panic durumları düzeltildi
  • clip-to-geometry, y_invert buffer ekleyen istemcilerle birlikte kullanıldığında render'ın bozulmasına yol açan sorun düzeltildi
  • OpenBSD derlemesi düzeltildi
  • nested niri artık kendi pencere app-id değerini ayarlıyor
  • Yeni bir GPU takıldığında ignore-drm-device hata ayıklama ayarı yeniden değerlendiriliyor; böylece /dev/dri/by-path/ sembolik bağlantıları da kullanılabiliyor

Smithay güncellemeleri yansıtıldı

  • Smithay güncellemesiyle birlikte çeşitli altyapı iyileştirmeleri de geldi
    • ARM Mac gibi bazı cihazlarda otomatik GPU seçimi iyileştirildi
    • Asahi ve Pinephone artık elle render-drm-device ayarı yapmadan doğrudan çalışabiliyor
    • wl_shimeji gibi bazı layer-shell istemcilerinin davranışı iyileştirildi
    • Monitör EDID bilgisinin geç yüklendiği dock desteği iyileştirildi
    • Eski Intel sistemlerde ekran görüntüsü ve ekran yayını artık çalışıyor
    • Uyku sırasında USB-C dock çıkarıldığında eski output'un kalması sorunu düzeltildi
    • Bazı istemcilerde zxdg_exporter_v2 panic sorunu düzeltildi
    • Pano protokolünü açıkça yok etmeyen istemcilerdeki bellek sızıntısı düzeltildi
    • GTK 4.23 geliştirme sürümünde ortaya çıkmaya başlayan text-input content hint ve purpose ile ilgili panic sorunları düzeltildi
    • drag-and-drop, IME text input, çoklu GPU ve genel performans da iyileştirildi

1 yorum

 
GN⁺ 3 일 전
Hacker News yorumları
  • Niri o kadar iyi ki, yaklaşık 5 ay önce ona geçtim ve o zamandan beri son birkaç yılda Windows'tan ayrılmakla verdiğim en iyi karar gibi geliyor
    Yazara gerçekten çok büyük minnet duyuyorum
    dotfiles'ımda eskiden CLI araç ayarları, tema geçişi vb. için kurulum script'leri vardı; artık Arch tabanlı sistemlerde Niri'yi de tamamen destekliyor
    Yeni bir masaüstü ortamını hızlıca denemek istiyorsanız https://github.com/nickjj/dotfiles başlangıç için oldukça iyi
    Hem ana masaüstümde hem de seyahat dizüstü bilgisayarımda kullanıyorum

    • Ben de aynı durumdayım; ultrawide kavisli monitör ile Niri kombinasyonu özellikle çok iyi gidiyor
    • Nirimod'a da mutlaka bakın
      Resmi değil ama gerçekten harika
    • Omarchy buna benzer bir çalışma alanı başına scrollable mod geçişi ekledi
      Win/Cmd + L ile tiling ve scrolling arasında geçiş yapıyorsunuz ve şu anda bunu gerçekten çok sık kullanıyorum
  • Niri sayesinde scroll tabanlı pencere yönetimiyle ilk kez tanıştım ve hemen kafama yattı
    Kısa süre önce Mac için OmniWM'e çalışma alanı başına tam Niri emülasyon modu geldi; neyse ki Sequoia ile de uyumlu, bu yüzden hemen ana pencere yöneticim oldu
    [1] https://github.com/BarutSRB/OmniWM

    • Paneru, macOS'ta Niri'yi taklit etmek için özellikle bu amaçla çıkmış yeni bir araç
    • Bende de benzer
      Niri yaklaşımını ilk öğrendiğimde gerçekten çok hoşuma gitmişti ve Mac'te de benzer bir şey aramayı sürdürdüm
      Şimdiye kadar kullandıklarım arasında en iyi uygulama bu; elbette ufak tefek bazı quirks var ama en azından benim için daily driver olarak fazlasıyla yeterli
      Özellikle tabbed columns gerçekten çok iyi
      Bakımcıyı ve katkıda bulunanları alkışlıyorum
  • Mac kullanıyorsanız OmniWM'i tavsiye ederim
    Sadece Niri tarzı yerleşim değil, Hyprland'e daha yakın yerleşimler de var ve bu sayede macOS'ta çalışmak çok daha rahat hale geldi
    https://github.com/BarutSRB/OmniWM
    İlk kullanmaya başladığım dönemde de paylaşmıştım; kullanmaya devam ettikçe gerçekten iyi olduğunu gördüm ve güçlü şekilde tavsiye edebilirim

    • Kusura bakmayın ama demo videosu hayatımda gördüğüm en kötü demo videolarından biri seviyesinde
      Onu izledikten sonra bu yazılımı denemek isteyecek kimse olacağını sanmıyorum; mevcut kullanıcı olsanız bile sildirmek isteyebilir
  • GNOME için PaperWM extension kullanıyorum; muhtemelen Niri de buradan ilham aldı
    Kesinlikle ilginç bir çalışma biçimi ama bir çalışma alanında pencere sayısı 3'ü geçince biraz zahmetli hissettirdiği için ona tamamen aşık olmuş değilim
    Yine de ciddi şekilde deniyorum ve bir GNOME extension'ı olduğu için fazla ayar yapmadan GNOME DE'nin geri kalanını olduğu gibi kullanabilmek güzel

    • Bir süredir Niri'ye geçmek istiyordum ama ek ayarları oturtma süreci hep birkaç günümü alıyordu
      top bar, idle timeout, bildirimler gibi şeyleri de halletmek gerektiği içindi
      Ama yakın zamanda Wayland için desktop shell'ler olduğunu öğrendim ve bunlar GNOME benzeri bir ortamdan beklediğiniz şeylerin çoğunu büyük zahmet olmadan sağlıyor
      Ayar diyalogları, uygulama tepsisi, kaynak izleme, top bar; hepsi dahil
      Şu anda dank material shell kullanıyorum ve desktop shell ile compositor'ü istediğiniz gibi eşleştirebilmek gerçekten çok hoş
    • Ben de aynı fikirdeyim; PaperWM'in müdahaleci olmayan bir GNOME extension'ı olması hoşuma gidiyor
      Genel olarak iş akışım iyileşti ama bunun yanında desktop grid gibi iki üç başka extension'ı da kaldırabildim
  • Birden fazla özel fullscreen çalışma alanı arasında hızlıca geçiş yapmaya ve sadece klavyeyle pencere yönetimi yapan tiling WM akışına tamamen alıştım
    Genelde her çalışma alanında tek bir uygulama ya da tmux açık tek bir terminal tutuyorum; sadece ara sıra iki uygulamayı yan yana koyuyorum
    Benzer akıştan Niri'ye geçenlerin zihinsel modelinin nasıl değiştiğini gerçekten merak ediyorum

    • KDE, GNOME ve Niri'de her zaman aktivite/proje bazlı çalışma alanları kullandım
      Steam ve oyun wiki'sinin olduğu bir çalışma alanı, Emacs ve doküman tarayıcısının olduğu bir çalışma alanı, Godot ve oyun geliştirme uygulamalarının olduğu bir çalışma alanı gibi
      Niri'nin güzel yanı, çok fazla pencere açıldığı için bir şeyleri kapatmam gerekiyormuş baskısını neredeyse hiç hissettirmemesi
      Ayırıp düzenlemek oldukça kolay
      Uygulama bazlı çalışma alanlarını neden kullandıklarını pek anlamıyorum
      Tek bir Firefox içinde iş ve hobi sekmelerinin birbirine karışmasından da hoşlanmıyorum
    • Oldukça uzun süredir tiling kullanıcısıyım ve düzenim de benzerdi
      awesome, qtile, kısa bir süre xmonad, ardından i3, Wayland'e geçince sway, biraz da hyprland kullandım
      Hep karşıma çıkan sorun, pencere sayısı 3'ü geçince yatay yerleşimin pek iyi çalışmaması, dikey bölmelerin de fazla küçülmesiydi
      Öte yandan okuduğum şeyin yanına yeni bir pencere açmak ya da terminalin yanında bir ipython grafiği göstermek istediğim anlar sık oluyordu
      O zaman ya stacked layout'a almak ya da yeni bir çalışma alanına taşımak gerekiyordu; bu da ciddi bir sürtünme yaratıyor, pencere yönetimi yüzünden çalışma akışını sık sık bölüyordu
      Niri'de yeni pencereyi sadece açıyorsunuz; ihtiyacınız olan yerde beliriyor, diğer pencereler solda ve sağda kalıyor, siz de scroll yaparak gidiyorsunuz
      Şimdi iş akışım eskisine göre biraz daha dağınık ama aslında bu daha hoşuma gidiyor
      Geleneksel tiling WM'ler düzen ister ve bunu kolaylaştırır; Niri'de ise ille de düzenli olmak zorunda değilsiniz
      Bazen pencereyi hemen bulamadığımda overview kullanıyorum; ayrıca rofi ile pencere araması da ekledim
      İlk başta sway günlerimden kalan alışkanlıkla isimli çalışma alanlarını kullanmaya devam ettim ama artık kullanmıyorum
    • KDE'den neredeyse aynı akışla geçtim
      Çalışma alanı 1, zellij açık fullscreen terminaldi; 2 tarayıcıydı; 3 de iki kadar sohbet uygulamasıydı ve aralarında kısayollarla geçiyordum
      Başta Niri'yi Plasma'dan daha hafif ve farklı olduğu için kullanıyordum ama şimdi iş akışım da biraz değişti
      Pencerelerin çoğunu hâlâ ekran boyutunda kullanıyorum; 1 geliştirme, 2 tarayıcı ve bazen e-posta okuyucu, 3 sohbet uygulamaları gibi benzer şekilde düzenliyorum
      Ama kısa komutlar yazmak ya da uzun süren işleri açık bırakmak için yeni terminal penceresi çok daha sık açıyorum
      KDE'de bu pencereler arkada üst üste duruyordu; şimdi ise 1'in içinde yan yana duruyorlar
      Geriye dönüp bakınca Alt-Tab ile gidip gelmek artık oldukça sıkışık hissettiriyor; Super-hjkl ile gezinmek çok daha hafif geliyor
      Elbette kişiden kişiye değişir ama pencerelerin üst üste binmek yerine yan yana yerleşmesi iş akışını daha hafif hissettiriyor
    • Bu aslında tiling'den çok fullscreen ile çalışma alanlarının birleşimine daha yakın görünüyor
      i3 ya da sway gibi manuel tiling WM'ler ve büyük bir monitör kullandığınızda ekranı birden çok çalışma bölgesine ayırıp her bölgeye role göre birkaç uygulama yerleştirerek çalışma alanı sayısını azaltabilirsiniz
      scrolling benzer ama farklı bir akış ve özellikle küçük ekranlarda esnekliğin önemli olduğu durumlarda iyi çalışıyor
    • Uygulama başına bir çalışma alanı tiling WM'de bana pek anlamlı gelmiyor
      O akış floating WM'e daha uygun
      tiling WM'in asıl gücü gerçekten pencereleri tile etmesinde ve benim için tarayıcı, editör ve terminalden oluşan holy trinity bunun özü
      Ayrıca super+hjkl ya da yön tuşlarıyla uzamsal olarak gezebilmek gerekiyor
      Bu yüzden proje bazlı çalışma alanları çok daha doğal ve tiling WM'e daha uygun hissettiriyor
      Niri, yeni pencereleri sağda açıp mevcut yerleşimi bozmadığı için bunu çok daha iyi yapıyor
      Örneğin bir PDF açsanız bile mevcut düzeni koruyarak yeni pencereye kolayca geçebiliyorsunuz
  • İlgili bağlantılar
    The dank case for scrolling window managers - https://news.ycombinator.com/item?id=46820468 - Ocak 2026 (61 yorum)
    Niri 25.11 released with alt-tab and other improvements - https://news.ycombinator.com/item?id=46097051 - Kasım 2025 (1 yorum)
    Niri – A scrollable-tiling Wayland compositor - https://news.ycombinator.com/item?id=45461500 - Ekim 2025 (229 yorum)
    The Future Is Niri - https://news.ycombinator.com/item?id=43342178 - Mart 2025 (216 yorum)
    Niri: A scrollable-tiling Wayland compositor - https://news.ycombinator.com/item?id=37367687 - Eylül 2023 (37 yorum)

  • NNN (Niri-Nix-Noctalia) dots denemek isterseniz flake'imi alabilirsiniz
    https://github.com/MostlyKIGuess/nix-flake-public

    • Yıllarca window manager kullandım ama WM dışındaki ayarları da elle yapmak zorunda kalma eşiği yüzünden sonunda yine tamamlanmış masaüstü ortamlarına geri döndüm
      Sadece dark mode gibi şeyler bile uğraştırıyordu; Noctalia ise tam da benim istediğim yönde görünüyor
      Paylaştığın için teşekkürler
  • mangowm'in wl-only dalını kullanıyorum (wlroots 0.20 tabanlı)
    Çok daha az kaynak tüketiyor, daha fazla yerleşim sunuyor ve daha az sorun çıkarıyor
    Niri tarafının görsel efektleri daha iyi görünüyor olabilir ama yine de bir kez denemeye değer
    HDR gerekiyorsa biraz daha beklemek lazım
    https://github.com/mangowm/mango

    • Hangi sorunların daha az olduğunu merak ettim
      Benim deneyimimde Niri gerçekten taş gibi sağlamdı
  • Sanki Rus bir dahi, 100 milyon dolarlık Claude tokenından daha iyi bir şey yapmış gibi görünüyor
    Ama tabii bu asla toplu bir çılgınlık değil; o yüzden gidip SPY alın havası var

    • Gerçekten bir dahi gibi görünüyor
      Sürüm notlarını okumak bile başlı başına güzel
  • Geçen yılın sonunda i3'ü 10 yıldan uzun kullandıktan sonra Niri'ye geçtim
    Monitör boyutuna bağlı olmayan yatay scroll ve tanımladığınız kısayol sayısıyla sınırlı olmayan çalışma alanı sayısı gerçekten özgürleştirici
    Grafik tarafındaki işçilik de iyi
    Ama hâlâ can sıkan bir eksik var: X uyumluluk katmanı xwayland-satellite, X uygulamaları ile Wayland uygulamaları arasında drag and drop'u henüz desteklemiyor
    [1]: https://davidyat.es/2026/01/28/niri/
    [2]: https://github.com/Supreeeme/xwayland-satellite/issues/133

    • Ben de benzer durumdayım
      Eskiden hep aynı şeyleri aynı çalışma alanlarında tutma alışkanlığım vardı, bu yüzden hatırlamak kolaydı; şimdi ise yerleşim oraya buraya dağılabiliyor
      Ayrıca scratch'i epey özlüyorum
      Biraz daha uğraşıp ayarları elden geçirsem çözülebilir gibi duruyor ama henüz ona zaman ayırmadım