iToverDose/Yazılım· 14 MAYIS 2026 · 00:07

Tauri 2 ile Menü Çubuğu Uygulamaları Geliştirirken Karşılaşacağınız 5 Kritik Detay

Tauri 2 kullanarak menü çubuğu uygulamaları geliştirirken dikkat edilmesi gereken en önemli püf noktalarını keşfedin. Bu ipuçları sayesinde uygulamanızın kullanıcı dostu ve sorunsuz çalışmasını sağlayabilirsiniz.

DEV Community3 dk okuma0 Yorumlar

Tauri 2 kullanarak menü çubuğu uygulamaları geliştirmek, ilk bakışta basit gibi görünse de aslında oldukça fazla kenar durum ve dikkat gerektiren ayrıntılar içeriyor. Menü çubuğu uygulamaları genellikle sadece bir simge ve açılır pencere olarak algılanır, ancak arka planda karmaşık davranışlar ve ayarlar gerektirebilir. 8 yıldır solo geliştirici olarak 7 Mac uygulaması yayınlamış biri olarak, bu süreçte karşılaştığım zorlukları ve çözümleri sizinle paylaşmak istiyorum.

Tauri 2’nin Temel Menü Çubuğu Desteği

Tauri 2, menü çubuğu uygulamaları için yerleşik destek sunuyor, ancak bazı kritik özelliklerin manuel olarak yapılandırılması gerekiyor. Temel kurulum aşağıdaki gibi yapılabilir:

use tauri::{ tray::{TrayIconBuilder, TrayIconEvent}, Manager, };

TrayIconBuilder::new()
    .icon(app.default_window_icon().unwrap().clone())
    .on_tray_icon_event(|tray, event| {
        if let TrayIconEvent::Click { .. } = event {
            // Pencereyi göster/gizle
        }
    })
    .build(app)?;

Bu kod parçası, menü çubuğu simgesini oluşturur ve tıklama olaylarını dinleyerek pencerenin gösterilmesini veya gizlenmesini sağlar. Ancak, bu sadece başlangıç noktasıdır.

Dock ve Uygulama Geçişçisinde Gizleme

Menü çubuğu uygulamalarının en büyük dezavantajlarından biri, kullanıcıların uygulamayı Dock’ta veya Cmd+Tab ile açılan uygulama geçişçisinde görmesidir. Bu durum, kullanıcı deneyimini olumsuz etkileyebilir. Bu sorunu çözmek için uygulamanın Info.plist dosyasında aşağıdaki ayarı yapmanız gerekiyor:

LSUIElement

Alternatif olarak, Tauri’nin yapılandırma dosyasında (tauri.conf.json) bu ayarı aşağıdaki gibi ekleyebilirsiniz:

{
  "bundle": {
    "macOS": {
      "infoPlist": {
        "LSUIElement": true
      }
    }
  }
}

Bu ayar uygulamanın Dock’ta görünmesini engeller ve kullanıcıların sadece menü çubuğundaki simgeyi görmesini sağlar.

Pencereyi Simgeye Yakın Konumlandırma

Tauri 2, pencereyi otomatik olarak menü çubuğu simgesine yakın konumlandırmıyor. Bu, kullanıcı deneyimi açısından önemli bir eksiklik. Pencerenin simgeye yakın konumlanmasını sağlamak için aşağıdaki kodu kullanabilirsiniz:

fn pencereyi_simgeye_yakin_konumla(
    pencere: &WebviewWindow,
    simge_konumu: &tauri::PhysicalRect
) {
    let pencere_boyutu = pencere.outer_size().unwrap();
    let x = simge_konumu.position.x + (simge_konumu.size.width as i32 / 2) -
            (pencere_boyutu.width as i32 / 2);
    let y = simge_konumu.position.y + simge_konumu.size.height as i32;
    pencere.set_position(tauri::PhysicalPosition::new(x, y)).ok();
}

Bu kod, pencerenin yatay olarak simgenin ortasına, dikey olarak ise simgenin altında açılmasını sağlar. Ayrıca, ikincil monitörlerde pencerenin ekran dışında kalmasını önlemek için ekran kenarlarını da kontrol etmek önemlidir.

Pencereyi Göster/Gizle ve Yeniden Oluşturma Yaklaşımı

Menü çubuğu uygulamalarında pencereyi göster/gizle ve yeniden oluşturma olmak üzere iki farklı yaklaşım tercih edilebilir. Her ikisinin de avantajları ve dezavantajları bulunmaktadır.

  • Göster/Gizle: Pencere bellekte kalır ve kullanıcıya daha hızlı yanıt verir. Uygulama durumunun korunmasını sağlar.
  • Yeniden Oluşturma: Pencere her açıldığında sıfırdan oluşturulur. Bu, uygulamaların taze bir başlangıç yapmasını sağlar, ancak eski donanımlarda performansı olumsuz etkileyebilir.

Kişisel olarak, menü çubuğu uygulamalarımda göster/gizle yaklaşımını tercih ediyorum. Uygulama durumunun korunması, kullanıcı deneyimini önemli ölçüde iyileştiriyor.

if pencere.is_visible().unwrap_or(false) {
    pencere.hide().ok();
} else {
    pencere.show().ok();
    pencere.set_focus().ok();
}

Odak Kaybı Durumunda Pencereyi Otomatik Gizleme

Kullanıcılar, menü çubuğu uygulamalarından beklenen bir davranış olarak, pencereye tıkladıktan sonra başka bir yere tıkladıklarında pencerenin otomatik olarak gizlenmesini bekler. Bu davranışı sağlamak için aşağıdaki kodu kullanabilirsiniz:

pencere.on_window_event(|olay| {
    if let WindowEvent::Focused(false) = olay {
        pencere.hide().ok();
    }
});

Ancak, bu yaklaşımın bir kenar durumu bulunmaktadır: pencereye bağlı bir diyalog penceresinin (örneğin dosya seçici) açılması durumunda, ana pencere odak kaybı nedeniyle otomatik olarak gizlenebilir. Bu sorunu önlemek için, bir bayrak kullanarak çocuk pencere açıkken otomatik gizlemeyi devre dışı bırakabilirsiniz.

Sonuç: Tauri 2 ile Menü Çubuğu Uygulamaları Geliştirmenin Sırları

Tauri 2, menü çubuğu uygulamaları geliştirmek için oldukça iyi bir destek sunuyor. Ancak, pencere konumlandırma, otomatik gizleme davranışı ve LSUIElement ayarı gibi kritik konuların belgelerde tek bir yerde ele alınmamış olması, geliştiriciler için zorluk oluşturabiliyor. Neyse ki, bu sorunların hepsi çözülebilir nitelikte ve doğru yaklaşımlarla uygulamanızın kullanıcı dostu ve sorunsuz çalışmasını sağlayabilirsiniz.

Eğer bu ipuçları size yardımcı olduysa, bir kalp emojisi bırakmanız büyük bir fark yaratabilir. Teşekkürler!

Yapay zeka özeti

Tauri 2 kullanarak menü çubuğu uygulamaları geliştirirken karşılaşılan kritik ayrıntıları öğrenin. Uygulamanızın kullanıcı dostu ve sorunsuz çalışmasını sağlayacak ipuçları burada.

Yorumlar

00
YORUM BIRAK
ID #UM124C

0 / 1200 KARAKTER

İnsan doğrulaması

2 + 9 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.