mirror of
https://github.com/lobehub/lobehub.git
synced 2026-03-26 13:19:34 +07:00
✨ feat(desktop): Linux window specialization (#13059)
* ✨ feat(desktop): Linux window specialization - Add minimize/maximize/close buttons for Linux (WinControl) - Linux: no tray, close main window quits app - Linux: native window shadow and opaque background - i18n for window control tooltips Made-with: Cursor * 🌐 i18n: add window control translations for all locales Made-with: Cursor * 🐛 fix(desktop): show WinControl in SimpleTitleBar only on Linux Made-with: Cursor * 🐛 fix(desktop): limit custom titlebar controls to Linux Avoid rendering duplicate window controls on Windows and keep the Linux maximize button in sync with the current window state. Made-with: Cursor --------- Co-authored-by: LiJian <onlyyoulove3@gmail.com>
This commit is contained in:
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "فشل الاتصال بالتفويض",
|
||||
"waitingOAuth.helpText": "إذا لم يفتح المتصفح تلقائياً، يرجى النقر على إلغاء والمحاولة مرة أخرى",
|
||||
"waitingOAuth.retry": "إعادة المحاولة",
|
||||
"waitingOAuth.title": "في انتظار الاتصال بالتفويض"
|
||||
"waitingOAuth.title": "في انتظار الاتصال بالتفويض",
|
||||
"window.close": "إغلاق النافذة",
|
||||
"window.maximize": "تكبير النافذة",
|
||||
"window.minimize": "تصغير النافذة"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Неуспешна връзка за удостоверяване",
|
||||
"waitingOAuth.helpText": "Ако браузърът не се е отворил автоматично, моля натиснете отказ и опитайте отново",
|
||||
"waitingOAuth.retry": "Опитай отново",
|
||||
"waitingOAuth.title": "Изчакване на връзка за удостоверяване"
|
||||
"waitingOAuth.title": "Изчакване на връзка за удостоверяване",
|
||||
"window.close": "Затвори прозореца",
|
||||
"window.maximize": "Максимизирай прозореца",
|
||||
"window.minimize": "Минимизирай прозореца"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Autorisierungsverbindung fehlgeschlagen",
|
||||
"waitingOAuth.helpText": "Falls sich der Browser nicht automatisch geöffnet hat, klicken Sie bitte auf Abbrechen und versuchen Sie es erneut",
|
||||
"waitingOAuth.retry": "Erneut versuchen",
|
||||
"waitingOAuth.title": "Warten auf Autorisierungsverbindung"
|
||||
"waitingOAuth.title": "Warten auf Autorisierungsverbindung",
|
||||
"window.close": "Fenster schließen",
|
||||
"window.maximize": "Fenster maximieren",
|
||||
"window.minimize": "Fenster minimieren"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Authorization Connection Failed",
|
||||
"waitingOAuth.helpText": "If the browser did not open automatically, please click cancel and try again",
|
||||
"waitingOAuth.retry": "Retry",
|
||||
"waitingOAuth.title": "Waiting for Authorization Connection"
|
||||
"waitingOAuth.title": "Waiting for Authorization Connection",
|
||||
"window.close": "Close window",
|
||||
"window.maximize": "Maximize window",
|
||||
"window.minimize": "Minimize window"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Fallo en la conexión de autorización",
|
||||
"waitingOAuth.helpText": "Si el navegador no se abrió automáticamente, por favor haz clic en cancelar e inténtalo de nuevo",
|
||||
"waitingOAuth.retry": "Reintentar",
|
||||
"waitingOAuth.title": "Esperando conexión de autorización"
|
||||
"waitingOAuth.title": "Esperando conexión de autorización",
|
||||
"window.close": "Cerrar ventana",
|
||||
"window.maximize": "Maximizar ventana",
|
||||
"window.minimize": "Minimizar ventana"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "اتصال احراز هویت ناموفق بود",
|
||||
"waitingOAuth.helpText": "اگر مرورگر بهطور خودکار باز نشد، لطفاً لغو را بزنید و دوباره تلاش کنید",
|
||||
"waitingOAuth.retry": "تلاش مجدد",
|
||||
"waitingOAuth.title": "در انتظار اتصال احراز هویت"
|
||||
"waitingOAuth.title": "در انتظار اتصال احراز هویت",
|
||||
"window.close": "بستن پنجره",
|
||||
"window.maximize": "حداکثر کردن پنجره",
|
||||
"window.minimize": "حداقل کردن پنجره"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Échec de la connexion d'autorisation",
|
||||
"waitingOAuth.helpText": "Si le navigateur ne s'est pas ouvert automatiquement, veuillez cliquer sur annuler et réessayer",
|
||||
"waitingOAuth.retry": "Réessayer",
|
||||
"waitingOAuth.title": "En attente de la connexion d'autorisation"
|
||||
"waitingOAuth.title": "En attente de la connexion d'autorisation",
|
||||
"window.close": "Fermer la fenêtre",
|
||||
"window.maximize": "Maximiser la fenêtre",
|
||||
"window.minimize": "Minimiser la fenêtre"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Connessione di autorizzazione fallita",
|
||||
"waitingOAuth.helpText": "Se il browser non si è aperto automaticamente, fai clic su annulla e riprova",
|
||||
"waitingOAuth.retry": "Riprova",
|
||||
"waitingOAuth.title": "In attesa della connessione di autorizzazione"
|
||||
"waitingOAuth.title": "In attesa della connessione di autorizzazione",
|
||||
"window.close": "Chiudi finestra",
|
||||
"window.maximize": "Massimizza finestra",
|
||||
"window.minimize": "Minimizza finestra"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "認証接続に失敗しました",
|
||||
"waitingOAuth.helpText": "ブラウザが自動的に開かない場合は、キャンセルをクリックして再試行してください",
|
||||
"waitingOAuth.retry": "再試行",
|
||||
"waitingOAuth.title": "認証接続を待機中"
|
||||
"waitingOAuth.title": "認証接続を待機中",
|
||||
"window.close": "ウィンドウを閉じる",
|
||||
"window.maximize": "ウィンドウを最大化",
|
||||
"window.minimize": "ウィンドウを最小化"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "권한 연결 실패",
|
||||
"waitingOAuth.helpText": "브라우저가 자동으로 열리지 않으면, 취소를 클릭한 후 다시 시도하세요.",
|
||||
"waitingOAuth.retry": "다시 시도",
|
||||
"waitingOAuth.title": "인증 연결 대기 중"
|
||||
"waitingOAuth.title": "인증 연결 대기 중",
|
||||
"window.close": "창 닫기",
|
||||
"window.maximize": "창 최대화",
|
||||
"window.minimize": "창 최소화"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Autorisatieverbinding mislukt",
|
||||
"waitingOAuth.helpText": "Als de browser niet automatisch is geopend, klik dan op annuleren en probeer het opnieuw",
|
||||
"waitingOAuth.retry": "Opnieuw proberen",
|
||||
"waitingOAuth.title": "Wachten op autorisatieverbinding"
|
||||
"waitingOAuth.title": "Wachten op autorisatieverbinding",
|
||||
"window.close": "Venster sluiten",
|
||||
"window.maximize": "Venster maximaliseren",
|
||||
"window.minimize": "Venster minimaliseren"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Nie udało się nawiązać połączenia autoryzacyjnego",
|
||||
"waitingOAuth.helpText": "Jeśli przeglądarka nie otworzyła się automatycznie, kliknij Anuluj i spróbuj ponownie",
|
||||
"waitingOAuth.retry": "Spróbuj ponownie",
|
||||
"waitingOAuth.title": "Oczekiwanie na połączenie autoryzacyjne"
|
||||
"waitingOAuth.title": "Oczekiwanie na połączenie autoryzacyjne",
|
||||
"window.close": "Zamknij okno",
|
||||
"window.maximize": "Maksymalizuj okno",
|
||||
"window.minimize": "Minimalizuj okno"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Falha na conexão de autorização",
|
||||
"waitingOAuth.helpText": "Se o navegador não abriu automaticamente, clique em cancelar e tente novamente",
|
||||
"waitingOAuth.retry": "Tentar novamente",
|
||||
"waitingOAuth.title": "Aguardando conexão de autorização"
|
||||
"waitingOAuth.title": "Aguardando conexão de autorização",
|
||||
"window.close": "Fechar janela",
|
||||
"window.maximize": "Maximizar janela",
|
||||
"window.minimize": "Minimizar janela"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Не удалось подключиться к авторизации",
|
||||
"waitingOAuth.helpText": "Если браузер не открылся автоматически, нажмите «Отмена» и попробуйте снова",
|
||||
"waitingOAuth.retry": "Повторить",
|
||||
"waitingOAuth.title": "Ожидание подключения к авторизации"
|
||||
"waitingOAuth.title": "Ожидание подключения к авторизации",
|
||||
"window.close": "Закрыть окно",
|
||||
"window.maximize": "Развернуть окно",
|
||||
"window.minimize": "Свернуть окно"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Yetkilendirme Bağlantısı Başarısız",
|
||||
"waitingOAuth.helpText": "Tarayıcı otomatik olarak açılmadıysa, lütfen iptal edip tekrar deneyin",
|
||||
"waitingOAuth.retry": "Tekrar Dene",
|
||||
"waitingOAuth.title": "Yetkilendirme Bağlantısı Bekleniyor"
|
||||
"waitingOAuth.title": "Yetkilendirme Bağlantısı Bekleniyor",
|
||||
"window.close": "Pencereyi kapat",
|
||||
"window.maximize": "Pencereyi büyüt",
|
||||
"window.minimize": "Pencereyi küçült"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "Kết nối xác thực thất bại",
|
||||
"waitingOAuth.helpText": "Nếu trình duyệt không tự động mở, vui lòng nhấn hủy và thử lại",
|
||||
"waitingOAuth.retry": "Thử lại",
|
||||
"waitingOAuth.title": "Đang chờ kết nối xác thực"
|
||||
"waitingOAuth.title": "Đang chờ kết nối xác thực",
|
||||
"window.close": "Đóng cửa sổ",
|
||||
"window.maximize": "Phóng to cửa sổ",
|
||||
"window.minimize": "Thu nhỏ cửa sổ"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "授权连接失败",
|
||||
"waitingOAuth.helpText": "如果浏览器没有自动打开,请点击取消后重新尝试",
|
||||
"waitingOAuth.retry": "重试",
|
||||
"waitingOAuth.title": "等待授权连接"
|
||||
"waitingOAuth.title": "等待授权连接",
|
||||
"window.close": "关闭窗口",
|
||||
"window.maximize": "最大化窗口",
|
||||
"window.minimize": "最小化窗口"
|
||||
}
|
||||
|
||||
@@ -120,5 +120,8 @@
|
||||
"waitingOAuth.errorTitle": "授權連接失敗",
|
||||
"waitingOAuth.helpText": "如果瀏覽器沒有自動打開,請點擊取消後重新嘗試",
|
||||
"waitingOAuth.retry": "重試",
|
||||
"waitingOAuth.title": "等待授權連接"
|
||||
"waitingOAuth.title": "等待授權連接",
|
||||
"window.close": "關閉視窗",
|
||||
"window.maximize": "最大化視窗",
|
||||
"window.minimize": "最小化視窗"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user