feat: add preference for title truncation style

some users may prefer the window titles to be truncated in the middle, or at the start
This commit is contained in:
Louis Pontoise authored and lwouis committed 2020-07-16 02:17:27 +09:00
1 parent 1fc620d405
commit 3bddd7ea17
21 files changed
+233 -2

No files matched your search

+12
View File
@@ -76,6 +76,9 @@
/* No comment provided by engineer. */
"Don’t check for updates periodically" = "Don’t check for updates periodically";
/* No comment provided by engineer. */
"End" = "End";
/* No comment provided by engineer. */
"Fade out animation:" = "Fade out animation:";
@@ -115,6 +118,9 @@
/* No comment provided by engineer. */
"Max windows per row:" = "Max windows per row:";
/* No comment provided by engineer. */
"Middle" = "Middle";
/* No comment provided by engineer. */
"Min windows per row:" = "Min windows per row:";
@@ -208,6 +214,9 @@
/* No comment provided by engineer. */
"Source code repository" = "Source code repository";
/* No comment provided by engineer. */
"Start" = "Start";
/* No comment provided by engineer. */
"Start at login:" = "Start at login:";
@@ -241,6 +250,9 @@
/* No comment provided by engineer. */
"Window title font size:" = "Window title font size:";
/* No comment provided by engineer. */
"Window title truncation:" = "Window title truncation:";
/* No comment provided by engineer. */
"You didn’t write your email, thus can’t receive any response." = "You didn’t write your email, thus can’t receive any response.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "لا تبحث عن تحديثات بشكل دوري";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "Fade out animation:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "الحد الأعلى للنوافذ للصف:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "الحد الأدنى للنوافذ للصف:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "مخزن شفرة المصدر";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "شغّل البرنامج عند الدخول:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "حجم خط عنوان النافذة:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "لم تكتب بريدك؛ فلذلك لن تحصل على رد.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Nicht regelmäßig nach Updates suchen";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "Ausblenden animieren:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "Maximale Anzahl von Fenstern pro Reihe:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "Minimale Anzahl von Fenstern pro Reihe:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "Code Repository";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "Bei Login starten:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "Fenster Titel Größe:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "Du hast keine Mail-Adresse angegeben, sodass man dir nicht antworten kann.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Don’t check for updates periodically";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "Fade out animation:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "Max windows per row:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "Min windows per row:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "Source code repository";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "Start at login:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "Window title font size:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "You didn’t write your email, thus can’t receive any response.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "No comprobar actualizaciones periódicamente";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "Fade out animation:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "Ventanas máximas por fila:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "Ventanas mínimas por fila:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "Repositorio de código fuente";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "Cargar al inicio:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "Tamaño de fuente del título de la ventana:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "You didn’t write your email, thus can’t receive any response.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Älä tarkista päivityksiä";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "Fade out animation:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "Enimmäismäärä ikkunoita rivillä:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "Vähimmäismäärä ikkunoita rivillä:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "Lähdekoodi";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "Käynnistä kirjautuessa:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "Otsikkotekstin koko:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "You didn’t write your email, thus can’t receive any response.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Ne pas chercher de mise-à-jour périodiquement";
/*No comment provided by engineer.*/
"End" = "Fin";
/*No comment provided by engineer.*/
"Fade out animation:" = "Animer la disparition :";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "Max de fenêtres par ligne :";
/*No comment provided by engineer.*/
"Middle" = "Milieu";
/*No comment provided by engineer.*/
"Min windows per row:" = "Min de fenêtres par ligne :";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "Repo du code source";
/*No comment provided by engineer.*/
"Start" = "Début";
/*No comment provided by engineer.*/
"Start at login:" = "Lancer au démarrage :";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "Taille du titres des fenêtres :";
/*No comment provided by engineer.*/
"Window title truncation:" = "Troncature du titres des fenêtres :";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "Vous n’avez pas saisi votre email, et ne pourrez donc pas recevoir de réponse.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Ne keressen frissítéseket automatikusan";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "Fade out animation:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "Legtöbb ablak soronként:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "Legkevesebb ablak soronként:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "Forrás kód tárhely";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "Betöltés bejelentkezéskor:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "Ablak címsor font méret:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "You didn’t write your email, thus can’t receive any response.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Non controllare gli aggiornamenti periodicamente";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "Fade out animation:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "Massimo numero di finestre per riga:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "Minimo numero di finestre per riga:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "Archivio codice sorgente";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "Inizia al login:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "Dimensione del carattere del titolo della finestra:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "You didn’t write your email, thus can’t receive any response.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "定期的に更新を確認しない";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "フェードアウトアニメーション";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "一列に最大表示可能な個数:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "一列に最小表示可能な個数:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "ソースコードレポジトリ";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "ログイン時に起動:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "ウィンドウに表示されるタイトルフォントサイズ:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "You didn’t write your email, thus can’t receive any response.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "주기적으로 업데이트를 확인하지 않기";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "페이드 아웃 애니메이션:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "한 줄당 최대 윈도우 개수:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "한 줄당 최소 윈도우 개수:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "소스 코드";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "로그인 시 자동 실행:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "윈도우 제목 글꼴 크기:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "이메일을 적지 않으면 답변을 받을 수 없습니다.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Controleer niet regelmatig op updates";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "Fade-out animatie:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "Maximaal aantal vensters per rij:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "Minimaal aantal vensters per rij:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "Broncode-repository";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "Start bij inloggen:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "Tekstgrootte venstertitel:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "Je hebt geen e-mail ingevoerd en kunt dus geen reactie ontvangen.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Não verifique periodicamente por atualizações";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "Fade out animation:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "Qtde máxima de janelas por linha:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "Qtde mínima de janelas por linha:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "Repositório do Código Fonte";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "Iniciar ao efetuar login:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "Tamanho da fonte do título da aplicação:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "You didn’t write your email, thus can’t receive any response.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Не проверять обновления";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "Анимация затухания:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "Макс. количество окон в ряду:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "Мин. количество окон в ряду:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "Репозиторий исходного кода";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "Запускать при входе в систему:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "Размер заголовка:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "Вы не написали свою электронную почту, поэтому не можете получить ответ.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Güncellemeleri periyodik olarak kontrol etme";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "Fade out animation:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "Satır başına maksimum pencere sayısı:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "Satır başına minimum pencere sayısı:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "Kaynak kodu deposu";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "Başlangıçta çalıştır:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "Pencere başlığı yazı tipi boyutu:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "You didn’t write your email, thus can’t receive any response.";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "不自动检查更新";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "淡出动画:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "每行最多窗口数:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "每行最少窗口数:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "源代码仓库";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "开机启动:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "窗口标题字号:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "未填写电子邮箱地址将无法收到回复。";
@@ -80,6 +80,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "不要定期自動檢查更新";
/*No comment provided by engineer.*/
"End" = "End";
/*No comment provided by engineer.*/
"Fade out animation:" = "淡出動畫:";
@@ -119,6 +122,9 @@
/*No comment provided by engineer.*/
"Max windows per row:" = "每列最多顯示的視窗數:";
/*No comment provided by engineer.*/
"Middle" = "Middle";
/*No comment provided by engineer.*/
"Min windows per row:" = "每列最少的視窗數:";
@@ -215,6 +221,9 @@
/*No comment provided by engineer.*/
"Source code repository" = "原始碼儲存庫";
/*No comment provided by engineer.*/
"Start" = "Start";
/*No comment provided by engineer.*/
"Start at login:" = "在登入時啟動:";
@@ -248,6 +257,9 @@
/*No comment provided by engineer.*/
"Window title font size:" = "視窗標題的字體大小:";
/*No comment provided by engineer.*/
"Window title truncation:" = "Window title truncation:";
/*No comment provided by engineer.*/
"You didn’t write your email, thus can’t receive any response." = "若沒有填寫 Email,您將無法收到回覆";
+16
View File
@@ -29,6 +29,7 @@ class Preferences {
"windowDisplayDelay": "0",
"theme": "0",
"showOnScreen": "0",
"titleTruncation": "0",
"alignThumbnails": "0",
"appsToShow": "0",
"spacesToShow": "0",
@@ -78,6 +79,7 @@ class Preferences {
// macro values
static var theme: ThemePreference { defaults.macroPref("theme", ThemePreference.allCases) }
static var showOnScreen: ShowOnScreenPreference { defaults.macroPref("showOnScreen", ShowOnScreenPreference.allCases) }
static var titleTruncation: TitleTruncationPreference { defaults.macroPref("titleTruncation", TitleTruncationPreference.allCases) }
static var alignThumbnails: AlignThumbnailsPreference { defaults.macroPref("alignThumbnails", AlignThumbnailsPreference.allCases) }
static var appsToShow: AppsToShowPreference { defaults.macroPref("appsToShow", AppsToShowPreference.allCases) }
static var spacesToShow: SpacesToShowPreference { defaults.macroPref("spacesToShow", SpacesToShowPreference.allCases) }
@@ -204,6 +206,20 @@ enum ShowOnScreenPreference: String, CaseIterable, MacroPreference {
}
}
enum TitleTruncationPreference: String, CaseIterable, MacroPreference {
case end = "End"
case middle = "Middle"
case start = "Start"
var localizedString: LocalizedString {
switch self {
case .end: return NSLocalizedString("End", comment: "")
case .middle: return NSLocalizedString("Middle", comment: "")
case .start: return NSLocalizedString("Start", comment: "")
}
}
}
enum AlignThumbnailsPreference: String, CaseIterable, MacroPreference {
case left = "Left"
case center = "Center"
+11 -1
View File
@@ -22,10 +22,20 @@ class ThumbnailTitleView: BaseLabel {
private func makeParagraphStyle(_ size: CGFloat) -> NSMutableParagraphStyle {
let paragraphStyle = NSParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
paragraphStyle.lineBreakMode = .byTruncatingTail
paragraphStyle.lineBreakMode = getTruncationMode()
paragraphStyle.maximumLineHeight = size + magicOffset
paragraphStyle.minimumLineHeight = size + magicOffset
paragraphStyle.allowsDefaultTighteningForTruncation = false
return paragraphStyle
}
private func getTruncationMode() -> NSLineBreakMode {
if Preferences.titleTruncation == .end {
return .byTruncatingTail
}
if Preferences.titleTruncation == .middle {
return .byTruncatingMiddle
}
return .byTruncatingHead
}
}
@@ -80,7 +80,7 @@ class LabelAndControl: NSObject {
LabelAndControl.updateControlExtras(senderControl, newValue)
Preferences.set(senderControl.identifier!.rawValue, newValue)
// some preferences require re-creating some components
if ["iconSize", "fontHeight", "theme"].contains(where: { (pref: String) -> Bool in pref == senderControl.identifier!.rawValue }) {
if ["iconSize", "fontHeight", "theme", "titleTruncation"].contains(where: { (pref: String) -> Bool in pref == senderControl.identifier!.rawValue }) {
(App.shared as! App).resetPreferencesDependentComponents()
}
}
@@ -16,6 +16,7 @@ class AppearanceTab: NSViewController, PreferencePane {
LabelAndControl.makeLabelWithSlider(NSLocalizedString("Rows of windows:", comment: ""), "rowsCount", 1, 20, 20, true),
LabelAndControl.makeLabelWithSlider(NSLocalizedString("Window app icon size:", comment: ""), "iconSize", 0, 64, 11, false, "px"),
LabelAndControl.makeLabelWithSlider(NSLocalizedString("Window title font size:", comment: ""), "fontHeight", 0, 64, 11, false, "px"),
LabelAndControl.makeLabelWithDropdown(NSLocalizedString("Window title truncation:", comment: ""), "titleTruncation", TitleTruncationPreference.allCases),
LabelAndControl.makeLabelWithDropdown(NSLocalizedString("Show on:", comment: ""), "showOnScreen", ShowOnScreenPreference.allCases),
LabelAndControl.makeLabelWithSlider(NSLocalizedString("Apparition delay:", comment: ""), "windowDisplayDelay", 0, 2000, 11, false, "ms"),
LabelAndControl.makeLabelWithCheckbox(NSLocalizedString("Fade out animation:", comment: ""), "fadeOutAnimation", extraAction: { _ in App.app.thumbnailsPanel.updateFadeOutAnimation() }),