feat: allow backlisting apps, with 2 different types of blacklist

closes #239
This commit is contained in:
Louis Pontoise authored and lwouis committed 2020-07-18 03:33:49 +09:00
1 parent d8175450a7
commit d32951f06f
26 files changed
+284 -10

No files matched your search

+4
View File
@@ -96,6 +96,7 @@
D04BAFB90E00AA5D662EAF24 /* PermissionsWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA9DF10D0CC4CA0C8F814 /* PermissionsWindow.swift */; };
D04BAFB973C3D28718FAEB87 /* Windows.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BACD976030676FD0761D5 /* Windows.swift */; };
D04BAFBC862BA5FE0294EA7A /* AXUIElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA6F823BC0EDA9AA4B80A /* AXUIElement.swift */; };
D04BAFF30A98CF287F85DA1E /* BlacklistsTab.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA27695D9A5824720BD7B /* BlacklistsTab.swift */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@@ -131,6 +132,7 @@
D04BA2526DC6726E0F7ACF7C /* LabelAndControl.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LabelAndControl.swift; sourceTree = "<group>"; };
D04BA258B56193958D60978A /* ThumbnailView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThumbnailView.swift; sourceTree = "<group>"; };
D04BA26C75F76C277653C932 /* FeedbackWindow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedbackWindow.swift; sourceTree = "<group>"; };
D04BA27695D9A5824720BD7B /* BlacklistsTab.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlacklistsTab.swift; sourceTree = "<group>"; };
D04BA282BB16C1554595A968 /* Applications.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Applications.swift; sourceTree = "<group>"; };
D04BA2A68FFD585C3A64434A /* zh-CN */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = "zh-CN"; path = InfoPlist.strings; sourceTree = "<group>"; };
D04BA2C7B51F68651B3C60E2 /* 6 windows - 1 line.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "6 windows - 1 line.jpg"; sourceTree = "<group>"; };
@@ -476,6 +478,7 @@
D04BACE22DC907F03D193075 /* GeneralTab.swift */,
D04BAD60C97E609A759E721E /* UpdatesTab.swift */,
D04BA788228BA86D9EFBD1ED /* AcknowledgmentsTab.swift */,
D04BA27695D9A5824720BD7B /* BlacklistsTab.swift */,
);
path = tabs;
sourceTree = "<group>";
@@ -1085,6 +1088,7 @@
D04BA7E39FA539DD8316447A /* PermissionView.swift in Sources */,
D04BA446D702C5E252AF2319 /* TitleLabel.swift in Sources */,
D04BAD43C122A1C7E88B0362 /* MouseEvents.swift in Sources */,
D04BAFF30A98CF287F85DA1E /* BlacklistsTab.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
+12
View File
@@ -52,6 +52,9 @@
/* No comment provided by engineer. */
"Auto-install updates periodically" = "Auto-install updates periodically";
/* No comment provided by engineer. */
"Blacklists" = "Blacklists";
/* No comment provided by engineer. */
"Cancel" = "Cancel";
@@ -76,6 +79,9 @@
/* No comment provided by engineer. */
"Don’t check for updates periodically" = "Don’t check for updates periodically";
/* No comment provided by engineer. */
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/* No comment provided by engineer. */
"End" = "End";
@@ -106,6 +112,9 @@
/* No comment provided by engineer. */
"I think the app could be improved with…" = "I think the app could be improved with…";
/* No comment provided by engineer. */
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/* No comment provided by engineer. */
"Latest releases" = "Latest releases";
@@ -136,6 +145,9 @@
/* No comment provided by engineer. */
"Not allowed" = "Not allowed";
/* No comment provided by engineer. */
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/* No comment provided by engineer. */
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "تثبيت التحديثات بشكل دوري تلقائي";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "إلغاء";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "لا تبحث عن تحديثات بشكل دوري";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "اعتقد أنه بالإمكان تطوير البرنامج بـ…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "آخر الإصدارات";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "رخصة GPL-3.0";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "Updates regelmäßig automatisch installieren";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "Abbrechen";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Nicht regelmäßig nach Updates suchen";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "Ich denke so könnte die Anwendung verbessert werden…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "Neuste Versionen";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "GPL-3.0 Lizenz";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "Auto-install updates periodically";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "Cancel";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Don’t check for updates periodically";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "I think the app could be improved with…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "Latest releases";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "GPL-3.0 license";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "Auto instalar actualizaciones periódicamente";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "Cancelar";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "No comprobar actualizaciones periódicamente";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "Creo que la aplicación podría mejorarse con…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "Últimos lanzamientos";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "Licencia GPL-3.0";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "Asenna päivitykset automaattisesti aika ajoin";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "Peru";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Älä tarkista päivityksiä";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "Ohjelmaa voisi mielestäni parantaa…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "Uusimmat julkaisut";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "GPL-3.0 -lisenssi";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "Auto-installer les mises-à-jour périodiquement";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "Annuler";
@@ -80,6 +83,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.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "Fin";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "Je pense que l’app pourrait être améliorée avec…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "Dernières versions";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "Licence GPL-3.0";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Ouvrir Préférences Accessibilité…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "Frissítések automatikus telepítése";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "Mégsem";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Ne keressen frissítéseket automatikusan";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "Azt gondolom hasznos lenne az app bővítése ezzel…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "Legutóbbi kiadások";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "GPL-3.0 license";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "La procedure di auto-install aggiorna periodicamente";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "Cancella";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Non controllare gli aggiornamenti periodicamente";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "Credo che l’applicazione possa essere migliorata con…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "Ultimi rilasci";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "Licenza GPL-3.0";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "更新を定期的に自動インストールする";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "キャンセル";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "定期的に更新を確認しない";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "アプリの◯◯を改善したい";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "最新バージョン";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "GPL-3.0ライセンス";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
+17 -5
View File
@@ -6,7 +6,7 @@
"About" = "정보";
/*No comment provided by engineer.*/
"Accessibility" = "Accessibility";
"Accessibility" = "접근성";
/*No comment provided by engineer.*/
"Acknowledgments" = "감사의 말";
@@ -39,7 +39,7 @@
"Allowed" = "Allowed";
/*No comment provided by engineer.*/
"AltTab needs some permissions" = "AltTab needs some permissions";
"AltTab needs some permissions" = "AltTab이 권한을 필요로 합니다.";
/*No comment provided by engineer.*/
"Apparition delay:" = "나타나는 시간:";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "자동으로 업데이트 설치하기";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "취소";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "주기적으로 업데이트를 확인하지 않기";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "이 앱의 개선방안은…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "최신 출시";
@@ -144,10 +153,13 @@
"NSHumanReadableCopyright" = "GPL-3.0 라이선스";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Screen Recording Preferences…" = "Open Screen Recording Preferences…";
"Open Accessibility Preferences…" = "접근성 설정 열기...";
/*No comment provided by engineer.*/
"Open Screen Recording Preferences…" = "화면 녹화 설정 열기...";
/*No comment provided by engineer.*/
"Optional: email (if you want a reply)" = "답변을 원하면 이메일 남겨주세요";
@@ -174,7 +186,7 @@
"Screen including mouse" = "마우스를 포함한 화면";
/*No comment provided by engineer.*/
"Screen Recording" = "Screen Recording";
"Screen Recording" = "화면 녹화";
/*No comment provided by engineer.*/
"Screen showing AltTab" = "AltTab이 보여지는 화면";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "Installeer regelmatig automatisch updates";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "Annuleer";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Controleer niet regelmatig op updates";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "Ik denk dat het programma verbeterd kan worden door…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "Laatste releases";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "GPL 3.0-licentie";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "Instalar atualizações periódicas automaticamente";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "Cancelar";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Não verifique periodicamente por atualizações";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "Eu acho que a aplicação poderia ser melhorada com…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "Últimas atualizações";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "Licença GPL-3.0";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "Автоматически устанавливать обновления";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "Отмена";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Не проверять обновления";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "Я думаю, что приложение может быть улучшено…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "Последние обновления";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "Лицензия GPL-3.0";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "Güncellemeleri periyodik olarak otomatik yükle";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "İptal";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "Güncellemeleri periyodik olarak kontrol etme";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "Bence uygulama … ile geliştirilebilir.";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "Son sürüm";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "GPL-3.0 lisansı";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "定期自动安装更新";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "取消";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "不自动检查更新";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "我认为该应用程序可以这样改进…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "最新版本";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "GPL-3.0 协议";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "打开辅助功能偏好设置";
@@ -56,6 +56,9 @@
/*No comment provided by engineer.*/
"Auto-install updates periodically" = "定期自動安裝更新";
/*No comment provided by engineer.*/
"Blacklists" = "Blacklists";
/*Cancel button*/
"Cancel" = "取消";
@@ -80,6 +83,9 @@
/*No comment provided by engineer.*/
"Don’t check for updates periodically" = "不要定期自動檢查更新";
/*No comment provided by engineer.*/
"Don’t show windows from these apps" = "Don’t show windows from these apps";
/*No comment provided by engineer.*/
"End" = "End";
@@ -110,6 +116,9 @@
/*No comment provided by engineer.*/
"I think the app could be improved with…" = "我認為這個 app 可以改善在…";
/*No comment provided by engineer.*/
"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active";
/*No comment provided by engineer.*/
"Latest releases" = "最新版本";
@@ -143,6 +152,9 @@
/*Copyright (human-readable)*/
"NSHumanReadableCopyright" = "GPL-3.0 授權";
/*No comment provided by engineer.*/
"Only if the window is fullscreen" = "Only if the window is fullscreen";
/*No comment provided by engineer.*/
"Open Accessibility Preferences…" = "Open Accessibility Preferences…";
+11 -1
View File
@@ -37,7 +37,10 @@ class Preferences {
"fadeOutAnimation": "false",
"hideSpaceNumberLabels": "false",
"startAtLogin": "true",
"hideMenubarIcon": "false"
"hideMenubarIcon": "false",
"dontShowBlacklist": "",
"disableShortcutsBlacklist": ["com.realvnc.vncviewer", "com.microsoft.rdc.macos", "com.teamviewer.TeamViewer", "org.virtualbox.app.VirtualBoxVM", "com.parallels.vm", "com.citrix.XenAppViewer"].joined(separator: "\n"),
"disableShortcutsBlacklistOnlyFullscreen": "true",
]
// constant values
@@ -75,6 +78,9 @@ class Preferences {
static var hideSpaceNumberLabels: Bool { defaults.bool("hideSpaceNumberLabels") }
static var startAtLogin: Bool { defaults.bool("startAtLogin") }
static var hideMenubarIcon: Bool { defaults.bool("hideMenubarIcon") }
static var dontShowBlacklist: [String] { blacklistStringToArray(defaults.string("dontShowBlacklist")) }
static var disableShortcutsBlacklist: [String] { blacklistStringToArray(defaults.string("disableShortcutsBlacklist")) }
static var disableShortcutsBlacklistOnlyFullscreen: Bool { defaults.bool("disableShortcutsBlacklistOnlyFullscreen") }
// macro values
static var theme: ThemePreference { defaults.macroPref("theme", ThemePreference.allCases) }
@@ -137,6 +143,10 @@ class Preferences {
defaults.set(new, forKey: preference)
}
}
static func blacklistStringToArray(_ blacklist: String) -> [String] {
return blacklist.components(separatedBy: "\n").map { $0.trimmingCharacters(in: .whitespaces) }
}
}
// MacroPreference are collection of values derived from a single key
+12 -1
View File
@@ -102,7 +102,8 @@ class Windows {
!(Preferences.appsToShow == .active && window.application.runningApplication != NSWorkspace.shared.frontmostApplication) &&
!(Preferences.spacesToShow == .active && window.spaceId != Spaces.currentSpaceId) &&
!(Preferences.screensToShow == .showingAltTab && !isOnScreen(window, screen)) &&
(Preferences.showTabsAsWindows || !window.isTabbed)
(Preferences.showTabsAsWindows || !window.isTabbed) &&
!Preferences.dontShowBlacklist.contains(window.application.runningApplication.bundleIdentifier ?? "")
}
static func isOnScreen(_ window: Window, _ screen: NSScreen) -> Bool {
@@ -113,4 +114,14 @@ class Windows {
}
return true
}
static func checkIfShortcutsShouldBeDisabled() {
let activeWindow = list[0]
App.app.shortcutsShouldBeDisabled =
Preferences.disableShortcutsBlacklist.contains(activeWindow.application.runningApplication.bundleIdentifier ?? "") &&
(!Preferences.disableShortcutsBlacklistOnlyFullscreen || activeWindow.isFullscreen)
if App.app.shortcutsShouldBeDisabled && App.app.appIsBeingUsed {
App.app.hideUi()
}
}
}
@@ -74,6 +74,7 @@ private func applicationActivated(_ element: AXUIElement) throws {
guard let existingIndex = Windows.list.firstIndexThatMatches(appFocusedWindow, wid) else { return }
Windows.list.insertAndScaleRecycledPool(Windows.list.remove(at: existingIndex), at: 0)
App.app.refreshOpenUi([Windows.list[0], Windows.list[existingIndex]])
Windows.checkIfShortcutsShouldBeDisabled()
}
}
}
@@ -135,6 +136,7 @@ private func focusedWindowChanged(_ element: AXUIElement, _ pid: pid_t) throws {
Windows.list.insertAndScaleRecycledPool(Window(element, app, wid, axTitle, isFullscreen, isMinimized, position), at: 0)
App.app.refreshOpenUi([Windows.list[0]])
}
Windows.checkIfShortcutsShouldBeDisabled()
}
}
}
@@ -184,6 +186,7 @@ private func windowResized(_ element: AXUIElement) throws {
let window = Windows.list[index]
window.isFullscreen = isFullscreen
App.app.refreshOpenUi([window])
Windows.checkIfShortcutsShouldBeDisabled()
}
}
}
+1 -1
View File
@@ -24,7 +24,7 @@ private func observe_() {
}
private func keyboardHandler(proxy: CGEventTapProxy, type: CGEventType, cgEvent: CGEvent, userInfo: UnsafeMutableRawPointer?) -> Unmanaged<CGEvent>? {
if type == .keyDown || type == .keyUp || type == .flagsChanged {
if (type == .keyDown || type == .keyUp || type == .flagsChanged) && !App.app.shortcutsShouldBeDisabled {
if let event_ = NSEvent(cgEvent: cgEvent),
// workaround: NSEvent.characters is not safe outside of the main thread; this is not documented by Apple
// see https://github.com/Kentzo/ShortcutRecorder/issues/114#issuecomment-606465340
+3
View File
@@ -8,6 +8,7 @@ let cgsMainConnectionId = CGSMainConnectionID()
class App: NSApplication, NSApplicationDelegate {
static let name = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String
static let id = Bundle.main.object(forInfoDictionaryKey: "CFBundleIdentifier") as! String
static let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
static let licence = Bundle.main.object(forInfoDictionaryKey: "NSHumanReadableCopyright") as! String
static let repository = "https://github.com/lwouis/alt-tab-macos"
@@ -19,6 +20,7 @@ class App: NSApplication, NSApplicationDelegate {
var feedbackWindow: FeedbackWindow?
var isFirstSummon = true
var appIsBeingUsed = false
var shortcutsShouldBeDisabled = false
override init() {
super.init()
@@ -71,6 +73,7 @@ class App: NSApplication, NSApplicationDelegate {
GeneralTab(),
AppearanceTab(),
UpdatesTab(),
BlacklistsTab(),
AboutTab(),
AcknowledgmentsTab(),
]
@@ -9,8 +9,8 @@ class TextArea: NSTextField, NSTextFieldDelegate {
self.callback = callback
delegate = self
cell = TextFieldCell(placeholder, nLinesHigh == 1)
let width: CGFloat = font!.xHeight * nCharactersWide + TextArea.padding * 2
let height: CGFloat = fittingSize.height * CGFloat(nLinesHigh) + TextArea.padding * 2
let width: CGFloat = (font!.xHeight * nCharactersWide + TextArea.padding * 2).rounded()
let height: CGFloat = (fittingSize.height * CGFloat(nLinesHigh) + TextArea.padding * 2).rounded()
fit(width, height)
}
@@ -22,6 +22,17 @@ class LabelAndControl: NSObject {
return views
}
static func makeTextArea(_ nCharactersWide: CGFloat, _ nLinesHigh: Int, _ placeholder: String, _ rawName: String, extraAction: ActionClosure? = nil) -> [NSView] {
let textArea = TextArea(nCharactersWide, nLinesHigh, placeholder)
textArea.callback = {
controlWasChanged(textArea)
extraAction?(textArea)
}
textArea.identifier = NSUserInterfaceItemIdentifier(rawName)
textArea.stringValue = Preferences.getString(rawName)!
return [textArea]
}
static func makeLabelWithDropdown(_ labelText: String, _ rawName: String, _ values: [MacroPreference], _ suffixText: String? = nil) -> [NSView] {
return makeLabelWithProvidedControl(labelText, rawName, makeDropDown(rawName, values), suffixText)
}
@@ -0,0 +1,28 @@
import Cocoa
import Sparkle
import Preferences
class BlacklistsTab: NSViewController, PreferencePane {
let preferencePaneIdentifier = PreferencePane.Identifier("Blacklists")
let preferencePaneTitle = NSLocalizedString("Blacklists", comment: "")
let toolbarItemIcon = NSImage(named: "NSScriptTemplate")!
override func loadView() {
let dontShowBlacklistLabel = NSTextField(labelWithString: NSLocalizedString("Don’t show windows from these apps", comment: ""))
let dontShowBlacklist = LabelAndControl.makeTextArea(50, 3, ["com.apple.Safari", "com.apple.TextEdit"].joined(separator: "\n"), "dontShowBlacklist")
let disableShortcutsBlacklistLabel = NSTextField(labelWithString: NSLocalizedString("Ignore shortcuts while a window from these apps is active", comment: ""))
let disableShortcutsBlacklistCheckbox = LabelAndControl.makeLabelWithCheckbox(NSLocalizedString("Only if the window is fullscreen", comment: ""), "disableShortcutsBlacklistOnlyFullscreen", labelPosition: .right)
let disableShortcutsBlacklist = LabelAndControl.makeTextArea(50, 3, ["com.apple.Safari", "com.apple.TextEdit"].joined(separator: "\n"), "disableShortcutsBlacklist")
let grid = GridView([
[dontShowBlacklistLabel],
dontShowBlacklist,
[disableShortcutsBlacklistLabel],
disableShortcutsBlacklistCheckbox,
disableShortcutsBlacklist,
])
grid.row(at: 2).topPadding = GridView.interPadding * 1.5
grid.fit()
view = grid
}
}