From ff1a18527e357090e2a2a28c98f0bd7a1250e06e Mon Sep 17 00:00:00 2001 From: PalmerAL Date: Wed, 3 Jan 2024 16:01:40 -0600 Subject: [PATCH] Improve the process of writing userscripts (#2362) * add link from settings page to userscript directory * watch for changes to userscript directory --- js/preload/default.js | 6 +++- js/userscripts.js | 56 +++++++++++++++++++++++++++---- localization/languages/ar.json | 1 + localization/languages/be.json | 3 +- localization/languages/bg.json | 1 + localization/languages/bn.json | 1 + localization/languages/ca.json | 1 + localization/languages/cs.json | 1 + localization/languages/da.json | 1 + localization/languages/de.json | 1 + localization/languages/el.json | 3 +- localization/languages/en-US.json | 1 + localization/languages/es.json | 1 + localization/languages/fa.json | 1 + localization/languages/fi.json | 1 + localization/languages/fr.json | 1 + localization/languages/hr.json | 1 + localization/languages/hu.json | 1 + localization/languages/id.json | 1 + localization/languages/it.json | 1 + localization/languages/ja.json | 1 + localization/languages/ko.json | 1 + localization/languages/lt.json | 1 + localization/languages/nl.json | 1 + localization/languages/pl.json | 1 + localization/languages/pt-BR.json | 1 + localization/languages/pt-PT.json | 1 + localization/languages/ru.json | 1 + localization/languages/sr.json | 1 + localization/languages/th.json | 1 + localization/languages/tr.json | 1 + localization/languages/uk.json | 1 + localization/languages/uz.json | 1 + localization/languages/vi.json | 3 +- localization/languages/zh-CN.json | 1 + localization/languages/zh-TW.json | 1 + package.json | 4 +-- pages/settings/index.html | 3 ++ pages/settings/settings.js | 7 ++++ scripts/buildBrowser.js | 2 ++ 40 files changed, 106 insertions(+), 12 deletions(-) diff --git a/js/preload/default.js b/js/preload/default.js index d502cbe29..8f88f0e0e 100644 --- a/js/preload/default.js +++ b/js/preload/default.js @@ -50,7 +50,11 @@ window.addEventListener('message', function (e) { return } - if (e.data && e.data.message && e.data.message === 'showCredentialList') { + if (e.data?.message === 'showCredentialList') { ipc.send('showCredentialList') } + + if (e.data?.message === 'showUserscriptDirectory') { + ipc.send('showUserscriptDirectory') + } }) diff --git a/js/userscripts.js b/js/userscripts.js index c8c25f883..fa8aa9700 100644 --- a/js/userscripts.js +++ b/js/userscripts.js @@ -1,5 +1,8 @@ /* implements userscript support */ +var path = require('path') +var chokidar = require('chokidar') + var webviews = require('webviews.js') var settings = require('util/settings/settings.js') var bangsPlugin = require('searchbar/bangsPlugin.js') @@ -65,22 +68,37 @@ function urlMatchesPattern (url, pattern) { } const userscripts = { + scriptDir: path.join(window.globalArgs['user-data-path'], 'userscripts'), scripts: [], // {options: {}, content} + showDirectory: function () { + electron.shell.openPath(userscripts.scriptDir) + }, + ensureDirectoryExists: function () { + fs.access(userscripts.scriptDir, fs.constants.R_OK, function (err) { + if (err) { + fs.mkdir(userscripts.scriptDir, function (err) { + if (err) { + console.warn('failed to create userscripts directory', err) + } + }) + } + }) + }, loadScripts: function () { userscripts.scripts = [] - var path = require('path') - var scriptDir = path.join(window.globalArgs['user-data-path'], 'userscripts') - - fs.readdir(scriptDir, function (err, files) { - if (err || files.length === 0) { + fs.readdir(userscripts.scriptDir, function (err, files) { + if (err) { + userscripts.ensureDirectoryExists() + return + } else if (files.length === 0) { return } // store the scripts in memory files.forEach(function (filename) { if (filename.endsWith('.js')) { - fs.readFile(path.join(scriptDir, filename), 'utf-8', function (err, file) { + fs.readFile(path.join(userscripts.scriptDir, filename), 'utf-8', function (err, file) { if (err || !file) { return } @@ -127,6 +145,26 @@ const userscripts = { }) }) }, + startDirWatcher: function () { + userscripts.stopDirWatcher() // destroy any previous instance + userscripts.watcherInstance = chokidar.watch(userscripts.scriptDir, { + ignoreInitial: true, + disableGlobbing: true, + awaitWriteFinish: { + stabilityThreshold: 500, + pollInterval: 100 + } + }) + userscripts.watcherInstance.on('all', debounce(function () { + userscripts.loadScripts() + }, 100)) + }, + stopDirWatcher: function () { + if (userscripts.watcherInstance) { + userscripts.watcherInstance.close() + userscripts.watcherInstance = null + } + }, getMatchingScripts: function (src) { return userscripts.scripts.filter(function (script) { if ( @@ -167,12 +205,18 @@ const userscripts = { settings.listen('userscriptsEnabled', function (value) { if (value === true) { userscripts.loadScripts() + userscripts.startDirWatcher() } else { userscripts.scripts = [] + userscripts.stopDirWatcher() } }) webviews.bindEvent('dom-ready', userscripts.onPageLoad) + webviews.bindIPC('showUserscriptDirectory', function () { + userscripts.showDirectory() + }) + bangsPlugin.registerCustomBang({ phrase: '!run', snippet: l('runUserscript'), diff --git a/localization/languages/ar.json b/localization/languages/ar.json index fedbabbf0..788306827 100644 --- a/localization/languages/ar.json +++ b/localization/languages/ar.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "يمكن سكريبت المستخدم من تغير سلوك المواقع - معرفة المزيد." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "خاص user-agent إستخدم", "settingsUpdateNotificationsToggle": "إبحث تلقائيا عن التحديثات", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/be.json b/localization/languages/be.json index b6fcbe6ed..55092de6b 100644 --- a/localization/languages/be.json +++ b/localization/languages/be.json @@ -163,7 +163,8 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Карыстальнiцкiя скрыпты дазваляюць змяняць паводзіны сайтаў - даведацца больш." }, - "settingsUserAgentToggle": "Выкарыстоўваць карыстацкі user agent", + "settingsUserscriptShowDirectory": null, //missing translation, + "settingsUserAgentToggle": "Выкарыстоўваць карыстацкі user agent", "settingsUpdateNotificationsToggle": "Аўтаматычна правяраць наяўнасць абнаўленняў", "settingsUsageStatisticsToggle": { "unsafeHTML": "Адпраўляць статыстыку выкарыстання (Больш інфармацыі)" diff --git a/localization/languages/bg.json b/localization/languages/bg.json index bac7fa7a1..af0967fe0 100644 --- a/localization/languages/bg.json +++ b/localization/languages/bg.json @@ -162,6 +162,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Потребителските скриптове Ви позволяват да промените поведението на уеб сайтове - научете повече." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Използване на персонализиран потребителски агент", "settingsUpdateNotificationsToggle": "Автоматично проверяване за актуализации", "settingsUsageStatisticsToggle": null, //missing translation diff --git a/localization/languages/bn.json b/localization/languages/bn.json index d5c0c293c..573e66f88 100644 --- a/localization/languages/bn.json +++ b/localization/languages/bn.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "ব্যবহারকারীর স্ক্রিপ্ট আপনাকে ওয়েবসাইটের আচরণ পরিবর্তন করার অনুমতি দেয় - আরও শিখুন " }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "একটি কাস্টম ব্যবহারকারী এজেন্ট ব্যবহার করুন", "settingsUpdateNotificationsToggle": "স্বয়ংক্রিয়ভাবে আপডেটগুলির জন্য পরীক্ষা করুন", "settingsUsageStatisticsToggle": null, //missing translation diff --git a/localization/languages/ca.json b/localization/languages/ca.json index 11f3a97d8..2db0ca455 100644 --- a/localization/languages/ca.json +++ b/localization/languages/ca.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Els scripts d'usuari et permeten modificar el comportament dels llocs web - més informació." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Utilitzar un agent d'usuari personalitzat", "settingsUpdateNotificationsToggle": "Comprovar actualitzacions automàticament", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/cs.json b/localization/languages/cs.json index 8180fbbff..4d8356036 100644 --- a/localization/languages/cs.json +++ b/localization/languages/cs.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Uživatelské skripty umožňují upravit chování webových stránek - více informací." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Použít vlastní User-Agent řetězec", "settingsUpdateNotificationsToggle": "Automaticky kontrolovat aktualizace", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/da.json b/localization/languages/da.json index 2e29a0447..f4d9a76af 100644 --- a/localization/languages/da.json +++ b/localization/languages/da.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Brugerscripts giver dig mulighed for at ændre adfærd på websteder - få mere at vide her." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Brug en brugerdefineret brugeragent", "settingsUpdateNotificationsToggle": "Kontroller automatisk for opdateringer", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/de.json b/localization/languages/de.json index bc0ce9deb..9be420913 100644 --- a/localization/languages/de.json +++ b/localization/languages/de.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Benutzerdefinierte Skripte erlauben es das Verhalten von Webseiten zu modifizieren - mehr dazu.." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Benutzerdefinierten Benutzer-Agent nutzen", "settingsUpdateNotificationsToggle": "Automatisch nach Aktualisierungen überprüfen", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/el.json b/localization/languages/el.json index e60ea65b3..ba9dcfe0d 100644 --- a/localization/languages/el.json +++ b/localization/languages/el.json @@ -163,7 +163,8 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Τα scripts χρηστών σας επιτρέπουν να τροποποιήσετε την συμπεριφορά των ιστοσελίδων - μάθετε περισσότερα." }, - "settingsUserAgentToggle": "Χρήση προσαρμοσμένου χρήστη agent", + "settingsUserscriptShowDirectory": null, //missing translation, + "settingsUserAgentToggle": "Χρήση προσαρμοσμένου χρήστη agent", "settingsUpdateNotificationsToggle": "Αυτόματος έλεγχος για ενημερώσεις", "settingsUsageStatisticsToggle": { "unsafeHTML": "Αποστολή στατιστικών χρήσης (Παραπάνω πληροφορίες)" diff --git a/localization/languages/en-US.json b/localization/languages/en-US.json index 532cef2de..8c450c970 100644 --- a/localization/languages/en-US.json +++ b/localization/languages/en-US.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "User scripts allow you to modify the behavior of websites - learn more." }, + "settingsUserscriptShowDirectory": "Show script directory", "settingsUserAgentToggle": "Use a custom user agent", "settingsUpdateNotificationsToggle": "Automatically check for updates", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/es.json b/localization/languages/es.json index 5bf4fbfdc..cf60124ba 100644 --- a/localization/languages/es.json +++ b/localization/languages/es.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Los userscripts te permiten modificar el comportamiento de los sitios web - Más información." }, //"learn more" was translated to "más información" (more info) + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Usar agente de usuario personalizado", "settingsUpdateNotificationsToggle": "Buscar actualizaciones automáticamente", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/fa.json b/localization/languages/fa.json index f976b76f9..055bcbfe1 100644 --- a/localization/languages/fa.json +++ b/localization/languages/fa.json @@ -164,6 +164,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "اسکریپت های کاربر این اجازه را به شما می دهند تا رفتار سایت ها را تغییر دهید - اطلاعات بیشتر." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": null, //missing translation "settingsUpdateNotificationsToggle": null, //missing translation "settingsUsageStatisticsToggle": null, //missing translation diff --git a/localization/languages/fi.json b/localization/languages/fi.json index 2f71d1df0..d40512410 100644 --- a/localization/languages/fi.json +++ b/localization/languages/fi.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Komentosarjat mahdollistavat sivustojen käyttäytymisen mukauttamisen - lisätietoja." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Käytä mukautettua käyttäjäagenttia", "settingsUpdateNotificationsToggle": "Tarkista päivitykset automaattisesti", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/fr.json b/localization/languages/fr.json index 2fb3af430..1ad75cf5f 100644 --- a/localization/languages/fr.json +++ b/localization/languages/fr.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Les scripts personnalisés vous permettent de modifier le comportement des pages web - en savoir plus (en anglais)." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Utiliser un user-agent particulier", "settingsUpdateNotificationsToggle": "Vérifier automatiquement pour des mises à jour", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/hr.json b/localization/languages/hr.json index 9e4037b21..56e8db4e5 100644 --- a/localization/languages/hr.json +++ b/localization/languages/hr.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Korisničke skripte omogućuju vam izmjenu ponašanja web stranica - Saznajte više." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Upotrijebite prilagođeni korisnički agent", "settingsUpdateNotificationsToggle": "Automatski provjeri ima li ažuriranja", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/hu.json b/localization/languages/hu.json index 940a730b9..46ea4fc85 100644 --- a/localization/languages/hu.json +++ b/localization/languages/hu.json @@ -161,6 +161,7 @@ "settingsAutoplayToggle": null, //missing translation "settingsOpenTabsInForegroundToggle": null, //missing translation "settingsUserscriptsExplanation": "Felhasználói szkript magyarázat", + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": null, //missing translation "settingsUpdateNotificationsToggle": null, //missing translation "settingsUsageStatisticsToggle": null, //missing translation diff --git a/localization/languages/id.json b/localization/languages/id.json index 5cc1a92cc..8c17c6251 100644 --- a/localization/languages/id.json +++ b/localization/languages/id.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "User script memungkinkan Anda untuk merubah perilaku situs web - Pelajari lebih lanjut." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Gunakan user agent khusus", "settingsUpdateNotificationsToggle": "Cek pembaruan secara otomatis", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/it.json b/localization/languages/it.json index 1c5ea40bc..b54aed80a 100644 --- a/localization/languages/it.json +++ b/localization/languages/it.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Gli script definiti dall'utente ti permettono di modificare il comportamento dei siti - scopri di più." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Utilizza un user agent personalizzato", "settingsUpdateNotificationsToggle": "Controlla automaticamente la presenza di aggiornamenti", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/ja.json b/localization/languages/ja.json index e29420e54..54391c115 100644 --- a/localization/languages/ja.json +++ b/localization/languages/ja.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "ユーザースクリプトを使用して、Webサイトの動作を変更できます - 詳細。" }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "カスタムユーザーエージェントを使用する", "settingsUpdateNotificationsToggle": "アップデートを自動的に確認する", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/ko.json b/localization/languages/ko.json index 57aa53151..d909be43a 100644 --- a/localization/languages/ko.json +++ b/localization/languages/ko.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "사용자 명령(스크립트)을 사용하면 누리집의 행동을 수정할 수 있습니다. - 더보기." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "사용자 정의 에이전트(UserAgent) 사용", "settingsUpdateNotificationsToggle": "판올림 자동 확인", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/lt.json b/localization/languages/lt.json index 3dccb812b..c8a7f59fa 100644 --- a/localization/languages/lt.json +++ b/localization/languages/lt.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Naudotojo scenarijai leidžia jums modifikuoti internetinių svetainių elgseną - sužinokite daugiau." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": null, //missing translation "settingsUpdateNotificationsToggle": "Automatiškai tikrinti ar yra atnaujinimų", "settingsUsageStatisticsToggle": null, //missing translation diff --git a/localization/languages/nl.json b/localization/languages/nl.json index 2b4d5b3fc..dd7cbcf57 100644 --- a/localization/languages/nl.json +++ b/localization/languages/nl.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Gebruikersscripten kunt u gebruiken om het gedrag van websites te wijzigingen - lees meer." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Gebruik een aangepaste gebruikersagent", "settingsUpdateNotificationsToggle": "Automatisch controleren op updates", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/pl.json b/localization/languages/pl.json index 6215acb6a..77fd8916c 100644 --- a/localization/languages/pl.json +++ b/localization/languages/pl.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Skrypty użytkownika pozwalają modyfikować zachowanie stron internetowych - dowiedz się więcej." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Użyj niestandardowego klienta użytkownika", "settingsUpdateNotificationsToggle": "Automatycznie sprawdź dostępność aktualizacji", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/pt-BR.json b/localization/languages/pt-BR.json index ba81ad304..b461a1e45 100644 --- a/localization/languages/pt-BR.json +++ b/localization/languages/pt-BR.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Scripts do usuário permitem modificar o comportamento do site - Saiba mais." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Usar agente de usuário personalizado", "settingsUpdateNotificationsToggle": "Verificar atualizações automaticamente", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/pt-PT.json b/localization/languages/pt-PT.json index 84d02477c..5ce0397a1 100644 --- a/localization/languages/pt-PT.json +++ b/localization/languages/pt-PT.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Os scripts permitem-lhe alterar o comportamento dos sites - Saber mais." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Utilizar um agente de utilizador personalizado", "settingsUpdateNotificationsToggle": "Procurar atualizações automaticamente", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/ru.json b/localization/languages/ru.json index 4eb4f196b..2942f3ff0 100644 --- a/localization/languages/ru.json +++ b/localization/languages/ru.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Пользовательские скрипты позволяют изменять поведение сайтов - узнать больше." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Использовать пользовательский user agent", "settingsUpdateNotificationsToggle": "Автоматически проверять наличие обновлений", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/sr.json b/localization/languages/sr.json index 6a942d0ff..40c00174d 100644 --- a/localization/languages/sr.json +++ b/localization/languages/sr.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Korisničke skripte omogućavaju modifikovanje ponašanja sajtova - learn more." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Koristi prilagođeni korisnički agent", "settingsUpdateNotificationsToggle": "Automatski obaveštavaj o novim verzijama Min", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/th.json b/localization/languages/th.json index afd67808d..7cbb8dc3a 100644 --- a/localization/languages/th.json +++ b/localization/languages/th.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "สคริปต์ผู้ใช้ที่จะช่วยให้คุณปรับเปลี่ยนพฤติกรรมของเว็บไซต์ได้ - เรียนรู้เพิ่มเติม." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "ใช้ตัวแทนผู้ใช้ที่กำหนดค่าเอง", "settingsUpdateNotificationsToggle": "ตรวจสอบการอัปเดตโดยอัตโนมัติ", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/tr.json b/localization/languages/tr.json index 3787141f0..cd16b76cd 100644 --- a/localization/languages/tr.json +++ b/localization/languages/tr.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Kullancı betikleri size websitelerinin davranışını değiştirmenize izin verir - daha fazla bilgi için." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Özel kullanıcı aracısı kullan", "settingsUpdateNotificationsToggle": "Güncelleştirmeleri otomatik olarak denetle", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/uk.json b/localization/languages/uk.json index d3fbb9d54..f05e2ca4d 100644 --- a/localization/languages/uk.json +++ b/localization/languages/uk.json @@ -164,6 +164,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Скрипти користувача дозволяють змінювати поведінку веб-сайтів - дізнатися більше." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Використовувати власний агент користувача", "settingsUpdateNotificationsToggle": "Автоматично перевіряти наявність оновлень", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/uz.json b/localization/languages/uz.json index 716eaf923..6d02861e9 100644 --- a/localization/languages/uz.json +++ b/localization/languages/uz.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Foydalanuvchi skriptlari sahifa ishlashini o'zgartirishga yordam beradi - qo'shimcha ma'lumot." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "Maxsus foydalanvuchi agentidan foydalanish", "settingsUpdateNotificationsToggle": " Yangilanishlarni avtomatik ravishda tekshirish", "settingsUsageStatisticsToggle": null, //missing translation diff --git a/localization/languages/vi.json b/localization/languages/vi.json index de2ee0846..76bfb7d8c 100644 --- a/localization/languages/vi.json +++ b/localization/languages/vi.json @@ -156,7 +156,8 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "Mã script người dùng có thể cho bạn thay đổi hành vi trang web - Xem thêm." }, - "settingsUserAgentToggle": "Sử dụng tác nhân người dùng tùy chỉnh", + "settingsUserscriptShowDirectory": null, //missing translation, + "settingsUserAgentToggle": "Sử dụng tác nhân người dùng tùy chỉnh", "settingsUpdateNotificationsToggle": "Tự động kiểm tra cập nhật", "settingsUsageStatisticsToggle": { "unsafeHTML": "Gửi thống kê sử dụng (Xem thêm)" diff --git a/localization/languages/zh-CN.json b/localization/languages/zh-CN.json index bbe4ff912..ca2e96d74 100644 --- a/localization/languages/zh-CN.json +++ b/localization/languages/zh-CN.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "自定义脚本允许您改变网站行为 - 查看更多." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "自定义浏览器User-Agent", "settingsUpdateNotificationsToggle": "自动检查更新", "settingsUsageStatisticsToggle": { diff --git a/localization/languages/zh-TW.json b/localization/languages/zh-TW.json index 0f6cbbe25..9d132c444 100644 --- a/localization/languages/zh-TW.json +++ b/localization/languages/zh-TW.json @@ -163,6 +163,7 @@ "settingsUserscriptsExplanation": { "unsafeHTML": "使用者指令允許您改變網站的行為 - 查看更多." }, + "settingsUserscriptShowDirectory": null, //missing translation, "settingsUserAgentToggle": "使用自訂使用者代理", "settingsUpdateNotificationsToggle": "自動檢查更新", "settingsUsageStatisticsToggle": { diff --git a/package.json b/package.json index 817fd12f2..905a9c633 100644 --- a/package.json +++ b/package.json @@ -39,12 +39,12 @@ "quick-score": "^0.2.0", "regedit": "^3.0.3", "sortablejs": "^1.15.1", - "stemmer": "^1.0.5" + "stemmer": "^1.0.5", + "chokidar": "^3.5.3" }, "devDependencies": { "archiver": "^4.0.1", "browserify": "^16.5.1", - "chokidar": "^3.4.0", "concurrently": "^5.2.0", "decomment": "^0.9.0", "electron": "29.0.0-alpha.4", diff --git a/pages/settings/index.html b/pages/settings/index.html index e0e1a76ca..0d246c519 100644 --- a/pages/settings/index.html +++ b/pages/settings/index.html @@ -166,6 +166,9 @@

data-string="settingsUserscriptsExplanation" data-allowHTML > +
diff --git a/pages/settings/settings.js b/pages/settings/settings.js index 0c9266e47..d36dba6b8 100644 --- a/pages/settings/settings.js +++ b/pages/settings/settings.js @@ -5,6 +5,7 @@ var banner = document.getElementById('restart-required-banner') var siteThemeCheckbox = document.getElementById('checkbox-site-theme') var showDividerCheckbox = document.getElementById('checkbox-show-divider') var userscriptsCheckbox = document.getElementById('checkbox-userscripts') +var userscriptsShowDirectorySection = document.getElementById('userscripts-show-directory') var separateTitlebarCheckbox = document.getElementById('checkbox-separate-titlebar') var openTabsInForegroundCheckbox = document.getElementById('checkbox-open-tabs-in-foreground') var autoPlayCheckbox = document.getElementById('checkbox-enable-autoplay') @@ -259,11 +260,17 @@ newWindowSettingInput.addEventListener('change', function() { settings.get('userscriptsEnabled', function (value) { if (value === true) { userscriptsCheckbox.checked = true + userscriptsShowDirectorySection.hidden = false } }) userscriptsCheckbox.addEventListener('change', function (e) { settings.set('userscriptsEnabled', this.checked) + userscriptsShowDirectorySection.hidden = !this.checked +}) + +userscriptsShowDirectorySection.getElementsByTagName('a')[0].addEventListener('click', function() { + postMessage({ message: 'showUserscriptDirectory' }) }) /* show divider between tabs setting */ diff --git a/scripts/buildBrowser.js b/scripts/buildBrowser.js index 5c805e3ec..db618b408 100644 --- a/scripts/buildBrowser.js +++ b/scripts/buildBrowser.js @@ -33,6 +33,8 @@ function buildBrowser () { detectGlobals: false }) + instance.exclude('chokidar') + instance.transform(renderify) const stream = fs.createWriteStream(outFile, { encoding: 'utf-8' }) instance.bundle()