From 4d13e686daa3e61aa9a2c98af6768ce42726d0e3 Mon Sep 17 00:00:00 2001 From: SploeCyber Date: Fri, 17 Jun 2022 01:40:23 +0000 Subject: [PATCH 001/109] Translated using Weblate (Thai) Currently translated at 100.0% (28 of 28 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/th/ --- assets/lang/th-TH.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/assets/lang/th-TH.json b/assets/lang/th-TH.json index 79db9f5..29b05b3 100644 --- a/assets/lang/th-TH.json +++ b/assets/lang/th-TH.json @@ -1,28 +1,28 @@ { - "loading_screen_start": "เริ่มต้น ArmCord…", + "loading_screen_start": "กำลังเริ่มต้น ArmCord…", "loading_screen_offline": "ดูเหมือนว่าคุณออฟไลน์อยู่ โปรดเชื่อมต่ออินเทอร์เน็ตและลองใหม่อีกครั้ง", "loading_screen_update": "ArmCord เวอร์ชันใหม่พร้อมใช้งานแล้ว โปรดอัปเดตเป็นเวอร์ชันล่าสุด", "setup_question1": "เลือกประเภทการติดตั้งที่คุณต้องการ:", "setup_question1_answer1": "ติดตั้งแบบรวดเร็ว", - "setup_question1_answer2": "การตั้งค่าเต็มรูปแบบ", + "setup_question1_answer2": "ติดตั้งเต็มรูปแบบ", "setup_offline": "ดูเหมือนว่าคุณออฟไลน์อยู่ โปรดเชื่อมต่ออินเทอร์เน็ตและลองใหม่อีกครั้ง", "setup_question2": "เลือกช่อง/อินสแตนส์ Discord:", "setup_question3": "ต้องการให้ ArmCord จัดการการติดตั้งมอดของไคลเอนต์หรือไม่?", "yes": "ใช่", - "no": "ไม่", + "no": "ไม่ใช่", "next": "ถัดไป", "setup_question4": "เลือกไคลเอนต์มอดที่ต้องการติดตั้ง:", - "settings-prfmMode-battery": "แบตเตอรี่", - "setup_question4_clientmodnotice": "ทำไมไม่ใช้ทั้งหมดล่ะ? การมีไคลเอนต์มอดหลายตัวพร้อมกันอาจทำให้เกิดปัญหาได้ หากต้องการที่จะทำจริงๆ ให้ไปดูใน Discord ของเรา", + "settings-prfmMode-battery": "ประหยัดแบตเตอรี่", + "setup_question4_clientmodnotice": "ทำไมไม่ใช้พร้อมกันทั้งหมดล่ะ? การมีไคลเอนต์มอดหลายตัวพร้อมกันอาจทำให้เกิดปัญหาได้ หากต้องการที่จะทำจริงๆ ให้ไปดูใน Discord ของเรา", "settings-theme": "ธีม ArmCord:", "settings-theme-default": "ค่าเริ่มต้น", "settings-theme-native": "ดั้งเดิม", - "settings-tray": "ย่อลงไปในถาดงาน", + "settings-tray": "ย่อขนาดหน้าต่าง", "settings-patches": "แพทช์อัตโนมัติ", "settings-channel": "ช่อง Discord:", "settings-invitewebsocket": "ใช้ Websocket สำหรับการเชิญ", "settings-prfmMode": "โหมดประสิทธิภาพ:", - "settings-prfmMode-performance": "ประสิทธิภาพ", + "settings-prfmMode-performance": "ประสิทธิภาพสูงสุด", "settings-mod": "ไคลแอนต์มอด:", "settings-none": "ไม่มี", "settings-save": "บันทึกการตั้งค่า", From ef8a15c328bf7dc444913f12928e979636989fe5 Mon Sep 17 00:00:00 2001 From: Mahdi Koushan Mehr Date: Tue, 21 Jun 2022 12:25:14 +0200 Subject: [PATCH 002/109] Added translation using Weblate (Persian) --- assets/lang/fa-IR.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 assets/lang/fa-IR.json diff --git a/assets/lang/fa-IR.json b/assets/lang/fa-IR.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/fa-IR.json @@ -0,0 +1 @@ +{} From cdc52346d8d1b478f0ebb641f2a416972fb75f11 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 21 Jun 2022 10:25:15 +0000 Subject: [PATCH 003/109] Translated using Weblate (Persian) Currently translated at 100.0% (0 of 0 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/fa/ --- assets/lang/fa-IR.json | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/assets/lang/fa-IR.json b/assets/lang/fa-IR.json index 0967ef4..eff75cd 100644 --- a/assets/lang/fa-IR.json +++ b/assets/lang/fa-IR.json @@ -1 +1,30 @@ -{} +{ + "loading_screen_start": "Starting ArmCord…", + "loading_screen_offline": "You appear to be offline. Please connect to the Internet and try again.", + "loading_screen_update": "A new version of ArmCord is available. Please update to the latest version.", + "setup_question1": "Select what kind of setup you want to perform:", + "setup_question1_answer1": "Express setup", + "setup_question1_answer2": "Full setup", + "setup_offline": "You appear to be offline. Please connect to the Internet and restart the ArmCord setup.", + "setup_question2": "Choose your Discord channel/instance:", + "setup_question3": "Should ArmCord handle client mods installation?", + "yes": "Yes", + "no": "No", + "next": "Next", + "setup_question4": "Select a client mod you want to install:", + "setup_question4_clientmodnotice": "Why not all of them? Having many client mods at the same time can cause issues. If you really want to do it though, check our Discord.", + "settings-theme": "ArmCord theme:", + "settings-theme-default": "Default", + "settings-theme-native": "Native", + "settings-tray": "Minimize to tray", + "settings-patches": "Automatic Patches", + "settings-channel": "Discord channel:", + "settings-invitewebsocket": "Invite Websocket", + "settings-mod": "Client mod:", + "settings-prfmMode": "Performance mode:", + "settings-prfmMode-performance": "Performance", + "settings-prfmMode-battery": "Battery", + "settings-none": "None", + "settings-save": "Save settings", + "settings-updater": "Check for updates" +} From c19bb21282e086022500383534587119b15a352a Mon Sep 17 00:00:00 2001 From: smartfridge <37928912+smartfrigde@users.noreply.github.com> Date: Tue, 21 Jun 2022 23:50:12 +0200 Subject: [PATCH 004/109] Add Pi-Apps to readme --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 80e9f95..ca2b50d 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,9 @@ ArmCord is also available on the Snap store [here](https://snapcraft.io/armcord) Get it from the Snap Store +### Pi-Apps +ArmCord is also available in [Pi-Apps](https://github.com/Botspot/pi-apps). +[![badge](https://github.com/Botspot/pi-apps/blob/master/icons/badge.png?raw=true)](https://github.com/Botspot/pi-apps) ### Manual: Alternatively you can run ArmCord from source (npm, nodejs required): 1. Clone ArmCord repo: `git clone https://github.com/ArmCord/ArmCord.git` From 12994b1050bae52fe278f73b84c77628cba6b2cd Mon Sep 17 00:00:00 2001 From: PoorPockets McNewHold Date: Wed, 22 Jun 2022 05:39:07 +0000 Subject: [PATCH 005/109] Translated using Weblate (French) Currently translated at 100.0% (28 of 28 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/fr/ --- assets/lang/fr-FR.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/assets/lang/fr-FR.json b/assets/lang/fr-FR.json index 774fd98..b1891b4 100644 --- a/assets/lang/fr-FR.json +++ b/assets/lang/fr-FR.json @@ -13,15 +13,15 @@ "setup_question4_clientmodnotice": "Pourquoi pas tous ? Le fait d'avoir plusieurs clients mods en même temps peut causer des problèmes. Si vous voulez vraiment le faire, consultez notre Discord.", "loading_screen_offline": "Vous semblez être hors ligne. Veuillez vous connecter à internet et réessayer.", "setup_offline": "Vous semblez être hors ligne. Veuillez vous connecter à internet et redémarrer l'installateur ArmCord.", - "settings-tray": "Minimize to tray", - "settings-channel": "Discord channel:", - "settings-mod": "Client mod:", - "settings-save": "Save settings", - "settings-updater": "Check for updates", + "settings-tray": "Minimiser dans la zone de notification", + "settings-channel": "Canaux Discord :", + "settings-mod": "Modification client :", + "settings-save": "Sauvegarder les paramètres", + "settings-updater": "Vérifier les mises à jour", "settings-theme": "Thème ArmCord :", "settings-theme-default": "Default", "settings-theme-native": "Native", - "settings-patches": "Automatic Patches", + "settings-patches": "Correctifs automatiques", "settings-invitewebsocket": "Lien discord.gg", "settings-prfmMode": "Mode performance :", "settings-prfmMode-performance": "Performance", From fe86b2508a153aaa91acfd6967b431731ae803a7 Mon Sep 17 00:00:00 2001 From: Mahdi Koushan Mehr Date: Tue, 21 Jun 2022 10:38:54 +0000 Subject: [PATCH 006/109] Translated using Weblate (Persian) Currently translated at 100.0% (28 of 28 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/fa/ --- assets/lang/fa-IR.json | 56 +++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/assets/lang/fa-IR.json b/assets/lang/fa-IR.json index eff75cd..41039ef 100644 --- a/assets/lang/fa-IR.json +++ b/assets/lang/fa-IR.json @@ -1,30 +1,30 @@ { - "loading_screen_start": "Starting ArmCord…", - "loading_screen_offline": "You appear to be offline. Please connect to the Internet and try again.", - "loading_screen_update": "A new version of ArmCord is available. Please update to the latest version.", - "setup_question1": "Select what kind of setup you want to perform:", - "setup_question1_answer1": "Express setup", - "setup_question1_answer2": "Full setup", - "setup_offline": "You appear to be offline. Please connect to the Internet and restart the ArmCord setup.", - "setup_question2": "Choose your Discord channel/instance:", - "setup_question3": "Should ArmCord handle client mods installation?", - "yes": "Yes", - "no": "No", - "next": "Next", - "setup_question4": "Select a client mod you want to install:", - "setup_question4_clientmodnotice": "Why not all of them? Having many client mods at the same time can cause issues. If you really want to do it though, check our Discord.", - "settings-theme": "ArmCord theme:", - "settings-theme-default": "Default", - "settings-theme-native": "Native", - "settings-tray": "Minimize to tray", - "settings-patches": "Automatic Patches", - "settings-channel": "Discord channel:", - "settings-invitewebsocket": "Invite Websocket", - "settings-mod": "Client mod:", - "settings-prfmMode": "Performance mode:", - "settings-prfmMode-performance": "Performance", - "settings-prfmMode-battery": "Battery", - "settings-none": "None", - "settings-save": "Save settings", - "settings-updater": "Check for updates" + "loading_screen_start": "درحال پیاده سازی ArmCord…", + "loading_screen_offline": "به نظر می‌رسد شما آفلاین هستید. لطفا به اینترنت متصل شده و سپس دوباره تلاش کنید.", + "loading_screen_update": "نسخه جدید ArmCord در دسترس است. لطفا به آخرین نسخه بروزرسانی کنید.", + "setup_question1": "انتخاب کنید که چگونه میخواهید نصب کنید:", + "setup_question1_answer1": "راه‌اندازی سریع", + "setup_question1_answer2": "راه‌اندازی کامل", + "setup_offline": "به نظر می‌رسد شما آفلاین هستید. لطفا به اینترنت وصل شده و سپس نصب ArmCord را از ابتدا شروع کنید.", + "setup_question2": "نوع دیسکورد را انتخاب کنید:", + "setup_question3": "آیا میخواهید ArmCord تغییرات کلاینت را خودکار اعمال کند؟", + "yes": "بله", + "no": "خیر", + "next": "بعدی", + "setup_question4": "نوع اصلاح‌ساز برنامه که میخواهید نصب کنید انتخاب کنید:", + "setup_question4_clientmodnotice": "چرا همه نه؟ داشتن اصلاح‌سازهای زیاد به صورت همزمان می‌تواند خرابی به بار آورد. اگر واقعا می‌خواهید انجامش دهید، به دیسکورد ما سر بزنید.", + "settings-theme": "تم ArmCord:", + "settings-theme-default": "پیش‌فرض", + "settings-theme-native": "محلی", + "settings-tray": "مینیماز در نوارابزار کوچک", + "settings-patches": "اعمال تغییرات به صورت خودکار", + "settings-channel": "نوع دیسکورد:", + "settings-invitewebsocket": "وب سوکت دعوت", + "settings-mod": "نوع اصلاح‌ساز کلاینت:", + "settings-prfmMode": "حالت عملکرد:", + "settings-prfmMode-performance": "قدرت بیشتر", + "settings-prfmMode-battery": "ذخیره برای باتری", + "settings-none": "هیچکدام", + "settings-save": "ذخیره تنظیمات", + "settings-updater": "بررسی برای بروزرسانی" } From f7b860fc06eaee7929a463d72bb2101be0f085cb Mon Sep 17 00:00:00 2001 From: smartfridge <37928912+smartfrigde@users.noreply.github.com> Date: Tue, 28 Jun 2022 17:59:28 +0200 Subject: [PATCH 007/109] Fix broken logo in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ca2b50d..37942d8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@
- +
ArmCord is a custom client designed to enhance your Discord experience while keeping everything lightweight.
From efbccabd4cc5b6bb20fd7c529884e3b279a177e7 Mon Sep 17 00:00:00 2001 From: KayoticCarnige <32397453+kckarnige@users.noreply.github.com> Date: Mon, 4 Jul 2022 10:39:22 -0400 Subject: [PATCH 008/109] Style overhaul and fully implemented titlebars Dev note: Titlebars are still a WIP for Linux, using the native theme is recommended for now on Linux --- assets/ac_black_plug.png | Bin 0 -> 8694 bytes assets/ac_black_plug_hollow.png | Bin 0 -> 10552 bytes assets/ac_white_plug.png | Bin 10552 -> 8694 bytes assets/ac_white_plug_filled.png | Bin 15833 -> 0 bytes assets/ac_white_plug_hollow.png | Bin 0 -> 10552 bytes build/icon.icns | Bin 69293 -> 31992 bytes build/icon.ico | Bin 0 -> 67672 bytes src/content/css/discord.css | 8 +- src/content/css/logos.css | 3 +- src/content/css/settings.css | 97 +++++++++----- src/content/css/setup.css | 25 +++- src/content/css/splash.css | 4 +- src/content/css/titlebar.css | 230 ++++++++++++++++++++++++++++++-- src/content/setup.html | 6 +- src/content/splash.html | 7 + src/extensions/mods.ts | 4 +- src/ipc.ts | 6 + src/main.ts | 4 +- src/preload/preload.ts | 3 +- src/preload/titlebar.ts | 9 +- src/settings/settings.html | 15 ++- src/shortcuts.ts | 5 + src/tray.ts | 177 ++++++++++++++---------- src/utils.ts | 17 ++- 24 files changed, 484 insertions(+), 136 deletions(-) create mode 100644 assets/ac_black_plug.png create mode 100644 assets/ac_black_plug_hollow.png delete mode 100644 assets/ac_white_plug_filled.png create mode 100644 assets/ac_white_plug_hollow.png create mode 100644 build/icon.ico diff --git a/assets/ac_black_plug.png b/assets/ac_black_plug.png new file mode 100644 index 0000000000000000000000000000000000000000..44863664cb3c1e033ce723f323c39cfa415ea123 GIT binary patch literal 8694 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 literal 0 HcmV?d00001 diff --git a/assets/ac_black_plug_hollow.png b/assets/ac_black_plug_hollow.png new file mode 100644 index 0000000000000000000000000000000000000000..c824274c7ae9db46f3315363a6390e29f1798c62 GIT binary patch literal 10552 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.0O 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 diff --git a/assets/ac_white_plug_hollow.png b/assets/ac_white_plug_hollow.png new file mode 100644 index 0000000000000000000000000000000000000000..fd67fb18b41e05fea28044dd126931738d8de232 GIT binary patch literal 10552 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

_Co1=Zxtjk4EfX_=dYKP!H|f(hd7ng&&P}Uf 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 W@R{fAIlV9*HI<>~##5+-=l|JdX@h3~ diff --git a/build/icon.ico b/build/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..975112f2d1f1b4dda37cd1428c567fe4d71b8650 GIT binary patch literal 67672 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ο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 O80jNr&;di}g7801jFu(< literal 0 HcmV?d00001 diff --git a/src/content/css/discord.css b/src/content/css/discord.css index 51cd2d9..d85ed64 100644 --- a/src/content/css/discord.css +++ b/src/content/css/discord.css @@ -1,14 +1,16 @@ .notice-2HEN-u { display: none; } -.sidebar-1tnWFu { +[customTitlebar] .sidebar-1tnWFu { border-top-left-radius: 8px; } -.scroller-3X7KbA { +[customTitlebar] .scroller-3X7KbA { padding: 0; padding-top: 4px; } - +* { + outline: none; +} [class^="socialLinks-"] + [class^="info-"] { padding-right: 0; } diff --git a/src/content/css/logos.css b/src/content/css/logos.css index 45ab5b4..54e385f 100644 --- a/src/content/css/logos.css +++ b/src/content/css/logos.css @@ -1,4 +1,5 @@ :root { --wordmark-svg: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDk2IDE0IiB3aWR0aD0iOTYiIGhlaWdodD0iMTQiPjxzdHlsZT4uYXtmaWxsOiM3Mjc2N2R9PC9zdHlsZT48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsYXNzPSJhIiBkPSJtMTUuNiAxMy44aC0zLjdsLTEuMS0yLjdoLTYuMWwtMS4xIDIuN2gtMy42bDUuNi0xMy43aDMuOXptLTgtMTAuNWwtMiA1LjRoNC4yem0xNC45LTMuM2MxLjMgMCAyLjUgMCAzLjYgMC42IDAuOCAwLjUgMS44IDEuNyAxLjggMy4zIDAgMi4zLTEuNyAzLjEtMi4zIDMuNCAxIDAuNSAxLjYgMS45IDEuOSAyLjYgMC40IDAuNyAxIDIgMS40IDIuOGwwLjQgMWgtMy43Yy0wLjMtMC42LTEuNS0zLjMtMS44LTMuOS0wLjktMS43LTEuNi0xLjctMi42LTEuN2gtMC41djUuNmgtMy41di0xMy43em0tMS44IDIuNXYzLjFoMS41YzAuOCAwIDEuMSAwIDEuNC0wLjIgMC41LTAuMyAwLjgtMC44IDAuOC0xLjQgMC0xLjUtMS42LTEuNS0xLjktMS41em0yNSAxMS4yaC0zLjV2LTguNGwtMy43IDQuNGgtMC41bC0zLjYtNC40djguNGgtMy41di0xMy43aDNsNC40IDUuMiA0LjQtNS4yaDN6bTguOS0xMy45YzAuNiAwLjEgMS4zIDAuMiAxLjcgMC4zIDAuMyAwLjEgMC45IDAuNSAxLjIgMC43IDAuNCAwLjMgMC45IDAuOSAxLjIgMS4zIDAuMyAwLjQgMC41IDAuOCAwLjQgMC44IDAgMC4xLTAuNiAwLjQtMi43IDEuMmwtMC40LTAuM2MtMC4yLTAuMi0wLjUtMC41LTAuNy0wLjUtMC4yLTAuMS0wLjctMC4yLTEtMC4yLTAuMyAwLTAuOCAwLjEtMSAwLjMtMC4zIDAuMS0wLjYgMC4zLTAuNyAwLjUtMC4xIDAuMy0wLjEgMS0wLjEgMi45IDAgMi40IDAgMi42IDAuMiAyLjkgMC4xIDAuMiAwLjQgMC41IDAuNiAwLjYgMC4yIDAuMSAwLjcgMC4yIDEgMC4yIDAuMyAwIDAuNy0wLjEgMS0wLjMgMC4yLTAuMSAwLjUtMC4zIDAuNi0wLjUgMC4xLTAuMiAwLjMtMC40IDAuNC0wLjQgMCAwIDAuNyAwLjMgMS41IDAuNyAwLjcgMC40IDEuNCAwLjcgMS40IDAuOCAwIDAtMC4xIDAuMy0wLjMgMC41LTAuMSAwLjItMC40IDAuNi0wLjcgMC45LTAuMyAwLjMtMSAwLjctMS40IDEtMC40IDAuMi0xLjEgMC40LTEuNSAwLjUtMC40IDAuMS0xLjEgMC4xLTEuNSAwLjEtMC41LTAuMS0xLjMtMC4yLTEuNy0wLjQtMC40LTAuMS0xLTAuNS0xLjQtMC43LTAuMy0wLjItMC43LTAuNy0wLjktMS0wLjMtMC4zLTAuNS0wLjgtMC42LTEuMi0wLjItMC40LTAuMi0xLjQtMC4yLTMuOCAwLTIuOCAwLTMuMyAwLjItMy44IDAuMi0wLjQgMC41LTEgMC45LTEuNCAwLjQtMC40IDAuOC0wLjggMS40LTEgMC41LTAuMyAxLjItMC41IDEuNS0wLjYgMC4zLTAuMSAxLTAuMSAxLjYtMC4xem0xMS40IDBjMC44IDAuMSAxLjQgMC4yIDIgMC40IDAuNCAwLjEgMS4xIDAuNCAxLjQgMC43IDAuNCAwLjIgMC45IDAuNiAxLjEgMC45IDAuMiAwLjMgMC41IDAuOSAwLjYgMS4yIDAuMiAwLjUgMC4yIDEuMSAwLjIgMy44IDAgMi43IDAgMy4zLTAuMiAzLjgtMC4xIDAuMy0wLjQgMC44LTAuNiAxLjItMC4yIDAuMy0wLjcgMC43LTEuMSAxLTAuMyAwLjItMSAwLjUtMS40IDAuNy0wLjUgMC4xLTEuMiAwLjItMS44IDAuMy0wLjUgMC0xLjMgMC0xLjgtMC4xLTAuNC0wLjEtMS4yLTAuMy0xLjYtMC41LTAuNC0wLjItMS0wLjYtMS40LTAuOS0wLjMtMC40LTAuNy0wLjktMS4zLTIuMnYtMy4xYy0wLjEtMi44LTAuMS0zLjEgMC4yLTMuOSAwLjItMC42IDAuNC0xIDAuOC0xLjUgMC40LTAuMyAxLTAuOCAxLjQtMS4xIDAuNS0wLjIgMS4yLTAuNSAxLjYtMC41IDAuNC0wLjEgMS4yLTAuMiAxLjktMC4yem0tMiAzLjlsLTAuNCAwLjN2NS42YzAuNyAwLjYgMS4xIDAuOCAxLjUgMC45IDAuNCAwLjEgMC44IDAuMSAxLjMgMCAwLjUtMC4yIDAuOC0wLjMgMS4xLTAuNmwwLjQtMC40YzAtNS40IDAtNS40LTAuNC01LjdxLTAuMy0wLjQtMC45LTAuNmMtMC40LTAuMS0wLjgtMC4yLTEtMC4yLTAuMSAwLTAuNSAwLjEtMC44IDAuMi0wLjMgMC4xLTAuNiAwLjMtMC44IDAuNXptMjEuNC0zLjhoMy4xYzIuNSAwIDMuMiAwIDMuOSAwLjIgMC41IDAuMiAxLjEgMC40IDEuNiAwLjcgMC40IDAuMyAwLjkgMC44IDEuMSAxLjIgMC4zIDAuMyAwLjUgMC44IDAuNiAxIDAuMSAwLjMgMC4yIDEuNyAwLjIgMy4yIDAgMS45IDAgMy4xLTAuMSAzLjctMC4xIDAuNS0wLjMgMS4xLTAuNCAxLjMtMC4xIDAuMy0wLjUgMC43LTAuOCAxLTAuMiAwLjMtMC44IDAuNy0xLjIgMC45LTAuNCAwLjItMS4xIDAuNC0xLjYgMC41LTAuNCAwLTIuMSAwLjEtNi40IDAuMXYtMy40aDIuNmMxLjUgMCAyLjkgMCAzLjEtMC4xIDAuMy0wLjEgMC43LTAuMiAwLjgtMC40IDAuNC0wLjMgMC40LTAuNCAwLjQtMi45IDAtMiAwLTIuNi0wLjItMi45LTAuMS0wLjItMC4zLTAuNS0wLjUtMC42LTAuMy0wLjEtMC44LTAuMS0yLjYtMC4xdjIuNWMwIDEuNS0wLjEgMi43LTAuMSAyLjctMC4xIDAuMS0wLjktMC43LTMuNS0zLjN6bS0xMi4zIDAuMWw3LjIgMC4xIDAuOCAwLjNjMC40IDAuMiAwLjkgMC42IDEuMiAwLjggMC4zIDAuMyAwLjYgMC43IDAuOCAxIDAuMSAwLjQgMC4zIDAuOSAwLjQgMS4zIDAuMSAwLjMgMC4xIDAuOSAwLjEgMS4yIDAgMC4zIDAgMC44LTAuMSAxLjItMC4xIDAuMy0wLjMgMC45LTAuNCAxLjItMC4yIDAuMy0wLjUgMC43LTAuNyAxLTAuMyAwLjItMC42IDAuNS0wLjkgMC42LTAuMiAwLjEtMC40IDAuMi0wLjQgMC4zIDAgMCAwLjggMSAxLjcgMi4yIDAuOSAxLjEgMS43IDIuMSAxLjcgMi4yIDAuMiAwLjEtMC4yIDAuMi00LjMgMC4xbC0xLjUtMmMtMS4xLTEuNS0xLjYtMi4xLTEuOC0yLjEtMC4yLTAuMS0wLjItMC4xLTAuMiA0LjFoLTMuNnptMy42IDYuM2MxLjkgMCAyLjQtMC4xIDIuNy0wLjIgMC4yLTAuMSAwLjUtMC40IDAuNi0wLjZxMC4yLTAuNCAwLjEtMC45YzAtMC4zLTAuMi0wLjYtMC4zLTAuNy0wLjEtMC4yLTAuNC0wLjQtMC42LTAuNC0wLjMtMC4xLTAuOS0wLjItMS41LTAuMmgtMXoiLz48L3N2Zz4="); --logo-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1977 596' width='1977' height='596'%3E%3Ctitle%3Earmcord_full_logo-svg%3C/title%3E%3Cstyle%3E .s0 %7B fill: %232c2f33 %7D .s1 %7B fill: %2395a7b3 %7D .s2 %7B fill: %237289da;stroke: %232c2f33;stroke-width: 17;stroke-dasharray: 0 %7D .s3 %7B fill: %2399aab5 %7D .s4 %7B fill: %232c2f33;stroke: %232c2f33;stroke-width: 3.5;stroke-dasharray: 0 %7D .s5 %7B fill: %237289da %7D %3C/style%3E%3Cg id='Arm + Cord'%3E%3Cpath id='Path 0' class='s0' d='m821 0.6c1.9 0.2 10.5 0.8 19 1.4c8.5 0.7 15.9 1.4 16.5 1.8c0.5 0.3 4.8 0.9 9.5 1.3c4.7 0.4 11.4 1.4 15 2.2c3.6 0.8 9.9 2.2 14 3c4.1 0.9 11.5 3 16.5 4.7c4.9 1.7 11.2 4.2 14 5.5c2.7 1.2 7.5 3.4 10.5 4.8c3 1.4 8.4 4.3 12 6.3c3.6 2 10.3 6.2 15 9.3c4.7 3.1 11.9 8.3 16 11.5c4.1 3.3 9.7 8 12.5 10.5c2.8 2.4 10.1 9.7 16.4 16c6.2 6.4 14.8 15.8 19 20.9c4.2 5.1 10.6 13.7 14.4 19c3.7 5.3 10.2 15.3 14.5 22.2c4.3 6.9 10.8 18.6 14.4 26c3.6 7.4 7.7 16.2 9.1 19.5c1.4 3.3 4.1 10 6.1 15c1.9 4.9 3.5 9.4 3.6 10c0 0.5 1.1 4.4 2.5 8.5c1.3 4.1 3.1 10.6 3.9 14.5c0.8 3.8 2.2 9.9 3.1 13.5c0.9 3.6 2.1 10.5 2.6 15.5c0.5 4.9 1.3 16.4 1.7 25.5c0.4 9.1 0.4 19.4 0 23c-0.4 3.6-1 9.4-1.4 13c-0.3 3.6-1.5 10.1-2.6 14.5c-1.1 4.4-2.4 9.6-2.8 11.5c-0.5 1.9-2.5 7.8-4.5 13c-2 5.2-5.7 13.3-8.2 18c-2.6 4.7-5.3 9.8-6.1 11.5c-0.8 1.6-4.9 7.7-9.1 13.5c-4.1 5.8-10 13.2-13.1 16.5c-3 3.3-8.4 8.9-12 12.5c-3.6 3.6-9.8 9.5-13.8 13c-4.1 3.6-8.1 6.9-9 7.4c-1 0.5-1.9 1.2-2.2 1.5c-0.3 0.4-3.7 2.9-7.5 5.7c-3.9 2.9-11.7 8-17.5 11.6c-5.8 3.5-17 9.6-25 13.6c-8 3.9-18.3 8.7-23 10.6c-4.7 1.9-14.1 5.2-21 7.4c-6.9 2.2-15.4 4.7-19 5.5c-3.6 0.9-7.9 1.8-9.5 2.1c-1.7 0.4-6.6 1.3-11 2.1c-4.4 0.9-13.4 2-20 2.6c-7 0.6-19.7 0.8-30.5 0.4c-16.6-0.6-19.9-1-32.5-4.2c-9.1-2.3-15.9-4.6-19.3-6.6c-2.9-1.8-6.4-4.6-7.6-6.2c-1.3-1.7-3.1-5.9-4-9.5c-1.5-5.8-1.6-7.1-0.3-11.5c0.8-2.7 2.2-6.3 3.3-8c1-1.6 3-4 4.4-5.2c1.4-1.2 4.5-3.2 7-4.4c3-1.5 6.3-2.1 10-2.1c3 0 6.8 0.6 8.5 1.2c1.6 0.6 6.8 2 11.5 3.1c6.6 1.6 12.4 2 26 2.2c11.8 0.1 21.4-0.4 29.5-1.6c6.6-0.9 16.3-2.8 21.5-4.1c5.2-1.3 13.8-3.9 19-5.6c5.2-1.8 13.3-4.8 18-6.7c4.7-1.9 13.2-5.9 19-8.7c5.8-2.9 14.3-7.7 19-10.6c4.7-2.9 11.6-7.6 15.5-10.4c3.8-2.7 10.1-7.8 14-11.1c3.8-3.4 10-9.3 13.7-13.1c3.6-3.8 7.8-8.5 9.3-10.4c1.5-1.9 4.6-6.2 7-9.5c2.5-3.3 6.7-10.1 9.4-15c2.7-5 6.3-12.6 8-17c1.6-4.4 4.2-13.6 5.5-20.5c2.1-10.1 2.6-15.4 2.6-27.5c0-8.3-0.4-17.5-1-20.5c-0.5-3-1.7-9.8-2.6-15c-0.9-5.2-2.5-12.7-3.6-16.5c-1-3.9-2.6-9.4-3.4-12.3c-0.8-2.8-3.5-10.5-6-17c-2.5-6.4-7.1-16.9-10.2-23.2c-3.1-6.3-8.2-15.8-11.2-21c-3.1-5.2-8.3-13.3-11.5-18c-3.2-4.7-10-13.7-15-20c-5.1-6.3-14.6-16.7-21.1-23c-6.6-6.4-13.7-12.9-15.9-14.5c-2.2-1.7-4.2-3.2-4.5-3.5c-0.3-0.3-3-2.4-6-4.5c-3-2.2-9.3-6.3-14-9c-4.7-2.8-10.1-5.8-12-6.7c-1.9-0.9-6.2-2.8-9.5-4.3c-3.3-1.4-10.1-3.9-15-5.5c-5-1.6-14.4-4.1-21-5.4c-6.6-1.4-18.1-3.1-25.5-3.7c-8.5-0.7-21.1-0.9-34-0.4c-11.3 0.3-23.4 1-27 1.5c-3.6 0.5-11.5 1.6-17.5 2.5c-6.1 0.8-13 2-15.5 2.4c-2.5 0.5-7.9 1.7-12 2.6c-4.1 0.9-9.3 2-11.5 2.4c-2.2 0.4-7.2 1.7-11 2.8c-3.9 1.2-9.5 2.7-12.5 3.3c-3 0.7-7.3 1.8-9.5 2.5c-2.2 0.7-10.1 3.2-17.5 5.5c-7.4 2.3-16.7 5.4-20.5 6.7c-3.9 1.4-10.8 4-15.5 5.8c-4.7 1.8-14.6 5.6-22 8.5c-7.4 2.9-15.8 6.3-18.5 7.6c-2.8 1.2-9.7 4.3-15.5 6.7c-5.8 2.5-14.8 6.5-20 9c-5.2 2.4-15.1 7.2-22 10.5c-6.9 3.3-14.8 6.9-17.5 8c-2.8 1.1-7.3 3-10 4.2c-2.8 1.2-6.4 2.8-8 3.6c-1.7 0.7-5.3 2.3-8 3.4c-2.8 1.2-7.9 3.2-11.5 4.5c-3.6 1.3-11.7 4.1-18 6.4c-6.3 2.3-14 4.8-17 5.7c-3 0.8-9.3 2.6-14 3.9c-4.7 1.3-11 3.1-14 4c-3 1-6.9 1.9-8.5 2.2c-1.7 0.2-7.5 1.5-13 2.8c-5.5 1.3-15.4 3.5-22 4.9c-6.6 1.4-18.5 3.5-26.5 4.6c-8 1.2-20.1 2.8-27 3.6c-6.9 0.8-17.2 1.9-23 2.4c-5.8 0.5-19.1 1.7-29.5 2.6c-14.4 1.3-33.9 1.8-80.5 2.2c-41 0.2-67.2 0-78.5-0.8c-9.4-0.6-21.1-1.6-26-2.2c-5-0.5-14.2-1.3-20.5-1.8c-6.3-0.5-16.2-1.5-22-2.4c-5.8-0.8-14.1-2-18.5-2.6c-4.4-0.6-9.8-2-12-3c-2.2-1-5.5-3.2-7.3-4.9c-1.7-1.7-4.1-4.9-5.2-7.1c-1.4-2.8-2-6-2-10.5c0-4.1 0.7-8.1 1.8-10.8c1-2.3 3.3-5.7 5-7.5c1.8-1.7 5.1-4.2 7.4-5.5c3.3-1.7 5.9-2.2 11.3-2.1c3.8 0 9.7 0.5 13 1.2c3.3 0.6 11.8 1.8 19 2.6c7.1 0.8 17 2 22 2.5c4.9 0.6 24.5 1.8 43.5 2.7c26.4 1.2 44.7 1.5 78 1c23.9-0.4 53.8-1.3 66.5-2.1c12.6-0.8 29.3-2.1 37-2.9c7.7-0.8 17.1-1.9 21-2.5c3.8-0.6 10.8-1.7 15.5-2.6c4.7-0.9 12.1-2 16.5-2.5c4.4-0.5 10.7-1.7 14-2.6c3.3-0.9 8.5-2 11.5-2.5c3-0.4 8.2-1.5 11.5-2.3c3.3-0.8 10.9-2.8 17-4.5c6-1.6 14.8-4.1 19.5-5.4c4.7-1.4 15.5-4.9 24-8c8.5-3 18.4-6.7 22-8.2c3.6-1.5 7.8-3.3 9.5-4c1.6-0.7 10.2-4.5 19-8.5c8.8-4 20-9.2 25-11.5c4.9-2.3 12.1-5.7 16-7.5c3.8-1.7 14.4-6.3 23.5-10.2c9.1-3.8 19-8 22-9.2c3-1.3 8.9-3.6 13-5.1c4.1-1.5 10.6-4 14.5-5.5c3.8-1.6 14.4-5.3 23.5-8.3c9.1-3 21-6.8 26.5-8.5c5.5-1.8 13.6-4.1 18-5.2c4.4-1.2 13.2-3.4 19.5-5c6.3-1.6 16.9-3.9 23.5-5.1c6.6-1.2 15.1-2.8 19-3.6c3.8-0.7 11-1.8 16-2.3c4.9-0.5 13.3-1.3 18.5-1.9c5.2-0.6 14.7-1.5 21-2c6.3-0.5 13.1-0.7 15-0.5z' /%3E%3Cpath id='ARM' fill-rule='evenodd' class='s1' d='m410.9 428h-71.9l-22.1-53.1h-119.9l-20.1 53.1h-70.8l108.2-268.3h77.4zm-156.9-203.7l-39.3 103.8h82.6zm291-64.5c24.4 0 48.8 0 70.5 13.4c14.1 9.4 35 31.5 35 63.3c0 44.9-34.7 60.6-46.1 66.1c19.3 9.4 32.7 36.6 38.6 50.4c7.5 15.3 18.9 40.5 25.9 55.8l9.1 19.3h-73.6c-5.9-11.8-29.1-64.9-34.6-75.5c-18.1-33.9-31.4-33.9-50.3-33.9h-9.9v109.4h-67.6v-268.3zm-35.4 48.8v61.4h27.9c17.3-0.8 21.7-0.8 28.7-4.8c9.9-5.1 14.6-14.9 14.6-25.9c0-30.7-29.9-30.7-37.4-30.7zm488.5 219.5h-67.6v-164l-72 86.5h-9.8l-72-86.5v164h-67.7v-268.3h59.4l85 101.9l86.1-101.9h58.6z' /%3E%3Cpath id='Path 0' class='s0' d='m1051.7 321.8c0.8 0.4 5.7 6.5 10.7 13.7c5 7.1 10.7 15.6 12.6 19c2 3.3 5.5 8.5 7.8 11.5c2.3 3 4.1 6.4 4.1 7.5c0 1.1-1.8 5.4-4.1 9.5c-2.3 4.1-4.8 8.8-5.6 10.5c-0.8 1.6-4.9 7.7-9.1 13.5c-4.1 5.8-10 13.2-13.1 16.5c-3 3.3-8.4 8.9-12 12.5c-3.6 3.6-9.8 9.5-13.8 13c-4.1 3.6-8.1 6.9-9 7.4c-1 0.5-1.9 1.2-2.2 1.5c-0.3 0.4-3.7 2.9-7.5 5.7c-3.9 2.9-11.7 8-17.5 11.6c-5.8 3.5-17 9.6-25 13.6c-8 3.9-18.3 8.7-23 10.6c-4.7 1.9-14.1 5.2-21 7.4c-6.9 2.2-15.4 4.7-19 5.5c-3.6 0.9-7.9 1.8-9.5 2.1c-1.7 0.4-6.6 1.3-11 2.1c-4.4 0.9-13.4 2-20 2.6c-7 0.6-19.7 0.8-30.5 0.4c-16.6-0.6-19.9-1-32.5-4.2c-9.1-2.3-15.9-4.6-19.3-6.6c-2.9-1.8-6.4-4.6-7.6-6.2c-1.3-1.7-3.1-5.9-4-9.5c-1.5-5.8-1.6-7.1-0.3-11.5c0.8-2.8 2.2-6.3 3.3-8c1-1.6 3-4 4.4-5.2c1.4-1.2 4.5-3.2 7-4.4c3-1.5 6.3-2.1 10-2.1c3 0 6.8 0.6 8.5 1.2c1.6 0.6 6.8 2 11.5 3.1c6.6 1.6 12.4 2 26 2.2c11.8 0.1 21.4-0.4 29.5-1.6c6.6-0.9 16.3-2.8 21.5-4.1c5.2-1.3 13.8-3.9 19-5.6c5.2-1.8 13.3-4.8 18-6.7c4.7-1.9 13.2-5.9 19-8.7c5.8-2.9 14.3-7.7 19-10.6c4.7-2.9 11.6-7.6 15.5-10.4c3.8-2.7 10.1-7.8 14-11.1c3.8-3.4 10-9.3 13.7-13.1c3.6-3.8 7.8-8.5 9.3-10.4c1.5-1.9 4.6-6.2 7-9.5c2.5-3.3 6.7-10.1 9.4-15c2.7-5 6.3-12.6 7.9-17c1.7-4.4 3.8-11.5 4.7-15.7c1.3-6.3 1.8-7.6 3.2-7z' /%3E%3Cg id='Plug'%3E%3Cpath id='Layer' class='s2' d='m647.6 329l63.5 22.6l15.9-36.7l55.2 19c58.9 20.3 92.8 79.8 80.1 139.7l-15.5 41.3c-31.2 56.7-101.4 82.8-163.1 57.4l-57.8-23.8l17.9-41.2l-65.5-26.2c-10.6-4.2-15.1-16.5-10.1-27.3c4.9-10.8 17.4-16.2 28-12l65 25.2l33.6-77.8l-64-23.5c-10.5-3.8-15.1-15.1-10.4-25.2c4.7-10 16.7-15.2 27.2-11.5z' /%3E%3Cpath id='Layer' class='s3' d='m639.7 334.2c1.6 0 17.5 5 35.3 11.3c17.8 6.2 32.5 11.3 32.7 11.4c0.2 0.1-0.8 5.4-2.2 11.8c-1.4 6.4-3.2 12.6-4.1 13.7c-1.2 1.7-7.7-0.3-36-10.6c-23.9-8.7-35.4-13.6-37.2-15.9c-1.4-1.8-2.6-5.1-2.6-7.3c0.1-2.3 0.8-5.4 1.6-7c0.8-1.6 3.3-3.9 5.5-5.1c2.2-1.2 5.4-2.2 7-2.3zm-52.2 113.3c3.1-0.1 18.9 5.2 39.7 13.2c19 7.3 34.7 13.6 34.9 14c0.2 0.4-3.3 6.5-15.9 26.4l-34.1-13.5c-23.2-9.2-35-14.6-36.8-16.9c-1.5-1.9-2.6-5.2-2.6-7.4c0-2.3 0.8-5.6 1.7-7.4c0.9-1.8 3.1-4.4 4.8-5.8c1.7-1.4 5.5-2.6 8.3-2.6z' /%3E%3Cpath id='Line' class='s4' d='m710.5 346.9l8.5 4.1l-19.8 45.8l-8.5-4.5z' /%3E%3Cpath id='Line' class='s4' d='m658.5 466.9l8.5 4.1l-19.8 45.8l-8.5-4.5z' /%3E%3C/g%3E%3C/g%3E%3Cpath id='Path 0' fill-rule='evenodd' class='s5' d='m1171 158.6c12.4 0.5 25.3 2.6 32.7 5.4c6.6 2.5 17.9 8.9 25.1 14.2c7.4 5.5 17.1 15.9 22.5 24.2c5.2 8 9 15.6 8.5 16.9c-0.5 1.4-12.8 7.1-53.7 23.2l-7.3-7.2c-4-3.9-10.5-8.4-14.5-10c-4-1.5-12.4-2.6-18.8-2.5c-6.3 0.1-15.4 2.1-20.3 4.4c-4.8 2.3-10.3 7.2-12.1 10.9c-2.4 4.9-3.3 19.5-3.4 56.9c0 46.8 0.3 50.7 4.9 56.9c2.7 3.6 8.2 8.3 12.2 10.3c4 2 12.1 3.6 18.1 3.6c6 0 15-1.9 19.9-4.2c4.9-2.4 10.7-7.3 12.7-10.9c2.1-3.7 4.8-6.6 6.2-6.6c1.3 0 14.7 5.7 29.7 12.7c15 6.9 27.3 13.7 27.2 15c0 1.4-2.1 5.7-4.5 9.7c-2.4 4-9.3 12.2-15.2 18.2c-5.9 6-17.8 14.4-26.4 18.8c-8.6 4.3-21.7 9.1-29 10.6c-7.3 1.5-21 2.1-30.3 1.3c-9.3-0.7-23.8-3.8-32.2-6.9c-8.5-3.1-20.4-9.5-26.6-14.1c-6.1-4.7-14.8-13.4-19.3-19.4c-4.5-6-9.7-16.3-11.7-23c-2.6-9.1-3.4-27.5-3.4-74.4c0-55.7 0.5-63.7 4.7-75.1c2.6-7.1 9.9-18.5 16.3-25.7c8-8.8 17.1-15.6 28.7-21.2c9.3-4.5 21.8-9.3 27.8-10.5c6-1.3 20.2-1.9 31.5-1.5zm222.7-0.1c15.7 0.6 28 2.6 38.8 6.3c8.6 3 21.4 9.1 28.4 13.6c7 4.6 16.3 13.2 20.6 19.3c4.3 6 9.7 16.1 12 22.3c3.5 9.7 4.1 21.1 4.1 74.4c0 53.3-0.6 64.7-4.1 74.3c-2.3 6.3-7.7 16.3-12 22.4c-4.3 6.1-13.6 14.9-20.6 19.5c-7 4.7-19.8 10.8-28.4 13.6c-8.7 2.7-23.9 5.5-33.9 6.3c-10 0.7-25.8 0-35.1-1.5c-9.4-1.6-23.8-6-32.1-10c-8.3-4-20.3-12-26.7-17.8c-7.1-6.5-14.2-16.5-26-41.5l-0.7-60.5c-0.7-55.3-0.3-61.9 4.2-76.9c3.8-12.4 7.8-19.3 16.7-29c6.6-7.1 18.6-16.3 27.3-20.9c8.5-4.6 22-9.7 30-11.5c8.6-1.9 24-2.9 37.5-2.4zm-39.3 74.7l-6.7 6.7v109c12.8 11.9 20.3 15.7 27.9 17.3c9.2 2 15.3 1.9 25.4-0.5c9.4-2.2 15.6-5.5 21.2-11.2l7.8-8.1c0-104 0-104.1-6-111.3c-4-4.8-10.5-8.6-18.8-10.9c-7-2.1-15.4-3.6-18.7-3.4c-3.4 0.1-10.4 1.4-15.8 2.9c-5.3 1.5-12.7 5.8-16.3 9.5zm417-73.2h60.6c49 0 63.6 0.8 76.8 4.1c10 2.6 22 8 30.9 14c8.7 5.8 17.7 14.6 22.5 21.9c4.4 6.6 9.2 15.9 10.6 20.5c1.5 4.7 3.2 33 3.8 63c0.9 36.9 0.3 59.9-1.7 71.4c-1.6 9.3-5 21-7.6 26c-2.5 5-9.2 13.7-14.9 19.3c-5.6 5.6-16.8 13.1-24.8 16.8c-8 3.7-21.6 7.8-30.3 9.2c-8.6 1.4-40.5 2.5-125.9 2.5v-65.3l51.5-0.1c28.3 0 55.8-1.1 61.1-2.3c5.3-1.3 12.4-5.1 15.8-8.5c6-6.1 6-6.5 6.6-55.8c0.5-40.1-0.1-50.9-3-56.8c-2-4-6.9-8.9-10.9-10.9c-4.8-2.4-14.5-3.6-50.9-3.6l0.1 50.2c0.1 27.7-0.8 51.1-1.8 52.2c-1 1-16.9-13.2-68.5-64.9zm-239.4 2.2l141.4 1.4l14.5 6.8c8 3.8 18.7 10.8 23.8 15.8c5.1 4.9 11.8 13.8 14.8 19.8c3.1 6 6.8 16.6 8.3 23.6c1.5 7 2.7 17.6 2.7 23.6c0 6-1.2 16.6-2.7 23.6c-1.5 7-5 17.6-7.8 23.6c-2.9 6-9.1 14.7-13.8 19.4c-4.8 4.6-12.2 10.1-16.5 12.1c-4.3 2-7.7 4.5-7.7 5.5c0.1 0.9 14.4 20 32 42.3c17.5 22.3 33 42 34.5 43.7c2.1 2.5-5.6 3.1-84.6 2.7l-29.2-40.4c-20.8-28.9-30.7-40.7-34.5-41.1c-5.2-0.6-5.3-0.3-5.3 81.7h-70.2zm70 121.3c38.6 0 48.3-1.1 53.2-3.6c4-2 9.1-7.2 11.2-11.5c2.7-5.4 3.5-10.9 2.5-17.5c-0.8-5.4-3.4-11.8-5.8-14.3c-2.3-2.5-7.8-6-12.1-7.9c-4.6-1.9-16.5-3.3-28.5-3.3h-20.5z' /%3E%3C/svg%3E"); -} + --discord-wordmark-svg: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDk5IDE5IiB3aWR0aD0iOTkiIGhlaWdodD0iMTkiPgoJPHRpdGxlPmEtc3ZnPC90aXRsZT4KCTxzdHlsZT4KCQkuczAgeyBmaWxsOiAjNzI3NjdkIH0gCgk8L3N0eWxlPgoJPHBhdGggaWQ9IkRpc2NvcmQiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xhc3M9InMwIiBkPSJtMC45IDBjMi4xIDAgNy4zIDAgNy42IDAgMC4yIDAgMC42IDAgMC44IDAuMSAwLjIgMCAwLjYgMC4yIDAuOSAwLjIgMC4yIDAuMSAwLjUgMC4yIDAuNiAwLjIgMC4xIDAgMC41IDAuMyAwLjcgMC4zIDAuMiAwLjIgMC41IDAuMyAwLjYgMC40IDAuMiAwLjIgMC40IDAuNCAwLjcgMC42IDAuMSAwLjEgMC40IDAuNCAwLjUgMC41IDAuMSAwLjIgMC4zIDAuNCAwLjQgMC42IDAgMC4xIDAuMSAwLjQgMC4yIDAuNSAwIDAuMiAwLjIgMC40IDAuMyAwLjYgMCAwLjEgMC4xIDAuNCAwLjEgMC41IDAgMC4zIDAuMiAwLjYgMC4yIDAuOSAwIDAuNCAwIDEuMSAwIDQuMSAwIDIuOSAwIDMuNyAwIDQgMCAwLjEtMC4yIDAuNS0wLjIgMC43IDAgMC4xLTAuMSAwLjQtMC4xIDAuNS0wLjEgMC4zLTAuMyAwLjUtMC4zIDAuNy0wLjEgMC4xLTAuMiAwLjQtMC4yIDAuNS0wLjEgMC4yLTAuNCAwLjMtMC41IDAuNiAwIDAuMS0wLjMgMC40LTAuNiAwLjUtMC4xIDAuMi0wLjMgMC4zLTAuNSAwLjQtMC4xIDAuMi0wLjQgMC4zLTAuNSAwLjMtMC4xIDAuMi0wLjQgMC4zLTAuNSAwLjMtMC4zIDAuMS0wLjUgMC4zLTAuOCAwLjMtMC4xIDAuMS0wLjUgMC4xLTAuNyAwLjItMC4yIDAtMC42IDAtMC43IDAuMi0wLjQgMC0xLjEgMC04IDB2LTQuNGMxLjIgMCA1IDAgNS45IDAgMS4zLTAuMSAxLjUtMC4xIDEuOC0wLjEgMC4xIDAgMC4zLTAuMiAwLjQtMC4yIDAgMCAwLjMtMC4xIDAuNC0wLjMgMC0wLjEgMC4yLTAuMiAwLjItMC40cTAuMi0wLjEgMC4zLTAuN3YtNi44YzAtMC4yLTAuMS0wLjQtMC4xLTAuNC0wLjItMC4yLTAuMy0wLjMtMC4zLTAuNS0wLjEgMC0wLjItMC4xLTAuNC0wLjItMC4xIDAtMC40LTAuMi0wLjUtMC4yLTAuNC0wLjEtMC40LTAuMS0zLjEtMC4xdjcuNGwtNC42LTQuOHptMTUuOSAwLjFoNC40djE4LjVoLTQuNHptOS4yIDEyLjdjMS43IDIuMiA1LjYgMi40IDUuOCAwLjMgMC0xLTEuNi0xLjYtMy0xLjgtMi45LTAuNS01LjUtMi4zLTUuNS01LjkgMC0zLjcgMy4xLTUuNSA2LjQtNS41IDIuMSAwIDQuMiAwLjYgNiAyLjlsLTIuOSAyLjNjLTEuOC0yLTUuMS0xLjktNS4xIDAuMiAwIDAuOSAwLjkgMS41IDIuNCAxLjggMy4xIDAuNSA2LjIgMS43IDYgNi4zLTAuMiAzLjYtMy43IDUuNS02LjkgNS41LTIuMSAwLTQuMy0xLjEtNi0zLjN6bTI0LjggMS45Yy0xLjUgMy00LjEgNC4xLTYuMyA0LjEtMy40IDAtNi45LTItNi45LTYuM3YtNi4zYzAtNC4zIDMuNS02LjMgNy02LjMgMi4xIDAgNC43IDAuOSA2LjEgNC4ybC0zLjYgMS41Yy0xLjItMi4zLTUuMS0xLjgtNS4xIDAuNnY2LjNjMCAyLjIgNCAyLjkgNC45IDAuM3ptMS4yLTguNWMwLTQuMyAzLjYtNi40IDcuMy02LjQgMy42IDAgNy4zIDIuMSA3LjMgNi40djYuM2MwIDQuMi0zLjcgNi4zLTcuMyA2LjMtMy43IDAtNy4zLTIuMS03LjMtNi4zem00LjQgNi4zYzAgMS40IDEuNSAyLjEgMi45IDIuMSAxLjQgMCAyLjktMC43IDIuOS0yLjF2LTYuM2MwLTEuNC0xLjYtMi4xLTMtMi4xLTEuMyAwLTIuOCAwLjctMi44IDIuMXptMTcuNyAwLjNoLTAuOHY1LjloLTQuNHYtMTguNmg3LjFjMy41IDAgNi4zIDEuOCA2LjUgNi4xIDAgMy40LTEuMyA1LjMtMy42IDZsNC45IDYuNWgtNS41em0xLjctNC4yYzIuOCAwIDIuOC00LjIgMC00LjJoLTIuNnY0LjJ6bTguOC04LjZjMi4yIDAgNy4zIDAgNy42IDAgMC4yIDAgMC41IDAgMC44IDAuMSAwLjIgMCAwLjYgMC4yIDAuOSAwLjIgMC4xIDAuMSAwLjUgMC4xIDAuNiAwLjIgMC4yIDAgMC40IDAuMiAwLjcgMC4zIDAuMSAwLjEgMC41IDAuMyAwLjYgMC40IDAuMiAwLjIgMC40IDAuMyAwLjcgMC42IDAuMSAwLjEgMC40IDAuNCAwLjUgMC41IDAgMC4yIDAuMyAwLjQgMC4zIDAuNiAwLjEgMC4xIDAuMiAwLjIgMC4zIDAuNSAwIDAuMiAwLjIgMC40IDAuMiAwLjYgMC4xIDAuMSAwLjEgMC40IDAuMiAwLjUgMCAwLjMgMCAwLjYgMC4yIDAuOCAwIDAuNSAwIDEuMSAwIDQuMiAwIDIuOCAwIDMuNyAwIDMuOS0wLjIgMC4yLTAuMiAwLjUtMC4yIDAuNyAwIDAuMi0wLjEgMC40LTAuMiAwLjYgMCAwLjMtMC4yIDAuNS0wLjMgMC43IDAgMC4xLTAuMSAwLjItMC4yIDAuNSAwIDAuMi0wLjMgMC4zLTAuNCAwLjQtMC4yIDAuMy0wLjQgMC40LTAuNiAwLjYtMC4xIDAuMy0wLjMgMC40LTAuNSAwLjUtMC4xIDAtMC40IDAuMi0wLjUgMC4zLTAuMSAwLTAuNCAwLjEtMC41IDAuMy0wLjMgMC4xLTAuNyAwLjMtMC44IDAuMy0wLjMgMC4xLTAuNSAwLjEtMC44IDAuMS0wLjEgMC4xLTAuNSAwLjEtMC42IDAuMS0wLjQgMC4yLTEuMSAwLjItOCAwLjJ2LTQuNGgyLjFjMS4yIDAgMi43LTAuMiAzLjctMC4yIDEuNCAwIDEuNiAwIDEuOSAwIDAtMC4xIDAuMy0wLjEgMC4zLTAuMSAwLjEtMC4xIDAuMi0wLjEgMC40LTAuM3EwLjItMC4yIDAuNC0wLjQgMC4xLTAuMSAwLjItMC43di03Yy0wLjEtMC4xLTAuMS0wLjMtMC4yLTAuNCAwIDAtMC4yLTAuMS0wLjMtMC4zIDAgMC0wLjEtMC4xLTAuMy0wLjItMC4xIDAtMC40LTAuMi0wLjUtMC4yLTAuNC0wLjEtMC40LTAuMS0zLjEtMC4xdjcuNGwtNC42LTQuOHoiLz4KPC9zdmc+"); +} \ No newline at end of file diff --git a/src/content/css/settings.css b/src/content/css/settings.css index bd8b0d5..1531d6b 100644 --- a/src/content/css/settings.css +++ b/src/content/css/settings.css @@ -1,6 +1,6 @@ /*MIT License -Copyright (c) 2021 GooseMod +Copyright (c) 2022 GooseMod Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -20,11 +20,18 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.*/ :root { - --background-primary: #282b30; - --background-secondary: rgba(255, 255, 255, 0.1); - --brand-experiment: #5865f2; - --header-primary: #fff; + --background-secondary: #2f3136; + --background-secondary-alt: #292b2f; + --background-floating: #18191c; + --background-modifier-hover: rgba(106, 116, 128, 0.16); + --brand-experiment: #7289da; + --brand-experiment-560: #5c6fb1; + --brand-experiment-600: #4e5d94; + --interactive-normal: #b9bbbe; + --interactive-hover: #dcddde; --text-muted: #72767d; + --font-primary: "Whitney"; + --header-primary: #fff; } @font-face { @@ -36,12 +43,19 @@ SOFTWARE.*/ html, body { - overflow: hidden; - - margin: 0; + overflow-x: hidden; + overflow-y: scroll; padding: 0; margin: 2%; - background: var(--background-primary); + background: var(--background-secondary); +} +body::-webkit-scrollbar { + width: 0.4em; + background: transparent; +} +body::-webkit-scrollbar-thumb { + background: var(--background-floating); + border-radius: 25px; } * { @@ -58,31 +72,39 @@ body { vertical-align: middle; } .header { - color: white; - font-size: 1.5em; + color: var(--header-primary); + font-size: 1.46em; } .center { text-align: center; + left: 50%; + margin-right: 50%; + transform: translateX(50%); + float: right; } /*buttons*/ button { - background-color: #7289da; - font-family: Whitney, "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #ffffff; - padding: 4px; - border-radius: 5px; - margin-top: 5px; - - text-align: center; - border-style: none; + background: var(--brand-experiment); + color: var(--header-primary); outline: none; + border: none; + border-radius: 5px; + padding: 8px; + transition: .17s ease; +} +button:hover { + background: var(--brand-experiment-560); + cursor: pointer; + transition: .17s ease; } -button:hover { - background-color: #687dc6; - border-style: none; - outline: none; +button:active { + background: var(--brand-experiment-600); cursor: pointer; + transition: .17s ease; +} +#save { + font-size: 15px; } .tgl { display: none; @@ -135,42 +157,47 @@ button:hover { height: 100%; } .tgl + .tgl-btn:after { - left: 0; + left: 1px; } .tgl + .tgl-btn:before { display: none; } .tgl:checked + .tgl-btn:after { - left: 50%; + left: 56%; } .tgl-light + .tgl-btn { - background: #5c5757; - border-radius: 2em; - padding: 2px; + background: var(--text-muted); + border-radius: 25px; + padding: 4px; transition: all 0.4s ease; } .tgl-light + .tgl-btn:after { - border-radius: 50%; + border-radius: 50px; + position: relative; + top: 50%; + transform: translateY(-50%); + width: 24px; + height: 24px; background: rgb(255, 255, 255); transition: all 0.2s ease; } .tgl-light:checked + .tgl-btn { - background: #47ca5a; + background: var(--brand-experiment); } select { -webkit-appearance: button; -moz-appearance: button; - background-color: #2c2f33; + background-color: var(--background-secondary-alt); background-position: center right; background-repeat: no-repeat; - border: 1px solid #aaa; + border: 1px solid var(--background-floating); border-radius: 2px; - box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); color: #fff; font-size: 1.2em; margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; -} + outline: none !important; +} \ No newline at end of file diff --git a/src/content/css/setup.css b/src/content/css/setup.css index 6f1e1b8..c8728ca 100644 --- a/src/content/css/setup.css +++ b/src/content/css/setup.css @@ -1,11 +1,11 @@ -@import url("https://armcord.smartfridge.space/logofont.css"); - /* Meta {{{ */ :root { --background-primary: #282b30; --background-secondary: rgba(255, 255, 255, 0.1); --background-modifier-hover: rgba(106, 116, 128, 0.16); --brand-experiment: #7289da; + --brand-experiment-560: #5c6fb1; + --brand-experiment-600: #4e5d94; --interactive-normal: #b9bbbe; --interactive-hover: #dcddde; --text-muted: #72767d; @@ -109,7 +109,12 @@ body { height: 100%; width: 33%; } - +[armcord-platform="darwin"] .titlebar #window-controls-container { + margin-left: -26px; +} +[armcord-platform="darwin"] .titlebar #window-controls-container #minimize { + transform: translateX(5px); +} /* }}} */ /* Buttons {{{ */ @@ -130,10 +135,18 @@ button { border: none; border-radius: 4px; padding: 8px 20px; + transition: .17s ease; } button:hover { - filter: brightness(85%); + background: var(--brand-experiment-560); cursor: pointer; + transition: .17s ease; +} + +button:active { + background: var(--brand-experiment-600); + cursor: pointer; + transition: .17s ease; } /* }}} */ @@ -157,5 +170,9 @@ select { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + text-align: center; +} +option { + text-align: left; } /* }}} */ diff --git a/src/content/css/splash.css b/src/content/css/splash.css index 1cbd1a0..9f84249 100644 --- a/src/content/css/splash.css +++ b/src/content/css/splash.css @@ -1,6 +1,6 @@ /*MIT License -Copyright (c) 2021 GooseMod +Copyright (c) 2022 GooseMod Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22,7 +22,7 @@ SOFTWARE.*/ :root { --background-primary: #282b30; --background-secondary: rgba(255, 255, 255, 0.1); - --brand-experiment: #5865f2; + --brand-experiment: #7289da; --header-primary: #fff; --text-muted: #72767d; } diff --git a/src/content/css/titlebar.css b/src/content/css/titlebar.css index cd09989..3ff2dc9 100644 --- a/src/content/css/titlebar.css +++ b/src/content/css/titlebar.css @@ -47,17 +47,106 @@ } /* ArmCord on Linux */ +[armcord-platform="linux"] .container-2RRFHK { + padding-top: 45px; + top: -45px; +} +[armcord-platform="linux"] .titlebar { + height: 45px; + line-height: 45px; +} +[armcord-platform="linux"] .titlebar #window-controls-container { + line-height: 45px; + transform: translateY(-8px); +} [armcord-platform="linux"] .titlebar #window-controls-container #minimize:hover { - background-color: #99aab5; + background-color: var(--background-modifier-hover); + transition: 0.2s ease; } [armcord-platform="linux"] .titlebar #window-controls-container #maximize:hover { - background-color: #99aab5; + background-color: var(--background-modifier-hover); + transition: 0.2s ease; +} +[armcord-platform="linux"] .titlebar #window-controls-container #minimize:hover #minimize-icon { + background-color: var(--interactive-hover); + transition: 0.2s ease; +} +[armcord-platform="linux"] .titlebar #window-controls-container #maximize:hover #maximize-icon { + background-color: var(--interactive-hover); + transition: 0.2s ease; } [armcord-platform="linux"] .titlebar #window-controls-container #quit:hover { - background-color: #f04747; + background-color: var(--brand-experiment-560); + transition: 0.2s ease; +} +[armcord-platform="linux"] .titlebar #window-controls-container #quit #quit-icon { + background-color: #ffffff; + display: list-item; + transition: 0.1s ease; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[armcord-platform="linux"] .titlebar #window-controls-container #minimize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[armcord-platform="linux"] .titlebar #window-controls-container #maximize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} + +[armcord-platform="linux"][isMaximized] .titlebar #window-controls-container #maximize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='9' height='9'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='9' height='9'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[armcord-platform="linux"] .titlebar #window-controls-container #minimize { + background-color: transparent; + transition: 0.1s ease; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[armcord-platform="linux"] .titlebar #window-controls-container #maximize { + background-color: transparent; + transition: 0.1s ease; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[armcord-platform="linux"] .titlebar #window-controls-container #quit { + background-color: var(--brand-experiment); + transition: 0.1s ease; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + +} +[armcord-platform="linux"] .titlebar #window-controls-container #quit:active { + background-color: var(--brand-experiment-600); + transition: 0.1s ease; } /* ArmCord on Windows */ +[armcord-platform="win32"] .titlebar #window-controls-container { + width: 142px; +} [armcord-platform="win32"] .titlebar #window-controls-container #minimize:hover { background-color: var(--background-modifier-hover); transition: 0.2s ease; @@ -102,8 +191,7 @@ background-color: #000000cc; transition: 0.1s ease; } - -.titlebar #window-controls-container #quit-icon { +[armcord-platform="win32"] .titlebar #window-controls-container #quit-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") @@ -111,7 +199,7 @@ mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") no-repeat 50% 50%; } -.titlebar #window-controls-container #minimize-icon { +[armcord-platform="win32"] .titlebar #window-controls-container #minimize-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") @@ -119,7 +207,7 @@ mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") no-repeat 50% 50%; } -.titlebar #window-controls-container #maximize-icon { +[armcord-platform="win32"] .titlebar #window-controls-container #maximize-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") @@ -128,7 +216,7 @@ no-repeat 50% 50%; } -[isMaximized] .titlebar #window-controls-container #maximize-icon { +[armcord-platform="win32"][isMaximized] .titlebar #window-controls-container #maximize-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") @@ -137,7 +225,125 @@ no-repeat 50% 50%; } -.window-title { +/* ArmCord on MacOS (Why would you do this?) */ +[armcord-platform="darwin"] .container-2RRFHK { + padding-top: 45px; + top: -45px; +} +[armcord-platform="darwin"] .titlebar { + height: 45px; + line-height: 45px; +} +[armcord-platform="darwin"] .titlebar #window-controls-container { + float: left; + width: 150px; + height: 60%; + line-height: 45px; + -webkit-app-region: no-drag; + transform: translate(-78px, 4px); +} + +[armcord-platform="darwin"] .titlebar #window-controls-container:hover #minimize #minimize-icon, +[armcord-platform="darwin"] .titlebar #window-controls-container:hover #maximize #maximize-icon, +[armcord-platform="darwin"] .titlebar #window-controls-container:hover #quit #quit-icon { + display: list-item; +} + +[armcord-platform="darwin"] .titlebar #window-controls-container #quit #quit-icon { + background-color: #79282b; + -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") + no-repeat 50% 50%; + transform: translate(-0.3px, -11.7px); +} +[armcord-platform="darwin"] .titlebar #window-controls-container #minimize #minimize-icon { + background-color: #7d631b; + -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=") + no-repeat 50% 50%; + transform: translate(-0px, -11.7px); +} +[armcord-platform="darwin"] .titlebar #window-controls-container #maximize #maximize-icon { + background-color: #1d7525; + -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=") + no-repeat 50% 50%; + transform: translate(-0.2px, -11.7px); +} + +[armcord-platform="darwin"] .titlebar #window-controls-container #minimize { + background-color: #fac536; + border: 1px solid #da9e10; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + transform: translateX(-21.5px); +} +[armcord-platform="darwin"] .titlebar #window-controls-container #maximize { + background-color: #39ea49; + border: 1px solid #13c11e; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + transform: translateX(21.5px); +} +[armcord-platform="darwin"] .titlebar #window-controls-container #quit { + background-color: #f25056; + border: 1px solid #d52735; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + +} +[armcord-platform="darwin"] .titlebar #window-controls-container:hover #maximize:active { + background-color: #13c11e; +} +[armcord-platform="darwin"] .titlebar #window-controls-container:hover #minimize:active { + background-color: #da9e10; +} +[armcord-platform="darwin"] .titlebar #window-controls-container:hover #quit:active { + background-color: #d52735; +} +[armcord-platform="darwin"] .titlebar #window-controls-container #spacer, +[armcord-platform="darwin"] .titlebar #window-controls-container #minimize, +[armcord-platform="darwin"] .titlebar #window-controls-container #maximize, +[armcord-platform="darwin"] .titlebar #window-controls-container #quit { + float: right; + height: 80%; + width: 13%; + text-align: center; + color: transparent; + cursor: default; +} + +[armcord-platform="darwin"] .titlebar #window-controls-container #minimize-icon, +[armcord-platform="darwin"] .titlebar #window-controls-container #maximize-icon, +[armcord-platform="darwin"] .titlebar #window-controls-container #quit-icon { + display: none; +} + +[armcord-platform="darwin"] .titlebar #window-controls-container #spacer { + display: none; +} + +[armcord-platform="darwin"] .window-title { + content: var(--wordmark-svg); + height: 10px; + left: 50%; + margin-right: 50%; + transform: translate(50%, 9.5px); + float: right; + padding: 0; +} + +[armcord-platform="linux"] .window-title, +[armcord-platform="win32"] .window-title { content: var(--wordmark-svg); height: 10px; margin-left: initial; @@ -146,6 +352,12 @@ padding: 0; } +[wordmark="discord"] .window-title { + content: var(--discord-wordmark-svg); + height: 11.7px; + width: 56px; +} + .withFrame-haYltI { height: 30px !important; } diff --git a/src/content/setup.html b/src/content/setup.html index cdf790a..9616345 100644 --- a/src/content/setup.html +++ b/src/content/setup.html @@ -13,7 +13,7 @@

@@ -123,6 +123,7 @@ automaticPatches: false, mods: "cumcord", inviteWebsocket: true, + trayIcon: "ac_plug_colored", performanceMode: "none" }); setTimeout(() => window.armcordinternal.restart(), 5000); @@ -153,6 +154,7 @@ minimizeToTray: true, automaticPatches: false, performanceMode: "none", + trayIcon: "ac_plug_colored", mods: options.mod, inviteWebsocket: true }); @@ -168,11 +170,13 @@ autoLaunch: true, mods: "none", performanceMode: "none", + trayIcon: "ac_plug_colored", inviteWebsocket: true }); setTimeout(() => window.armcordinternal.restart(), 500); } }); + document.body.setAttribute("insetup", ""); diff --git a/src/content/splash.html b/src/content/splash.html index c75ca52..76e3636 100644 --- a/src/content/splash.html +++ b/src/content/splash.html @@ -6,6 +6,13 @@ + diff --git a/src/extensions/mods.ts b/src/extensions/mods.ts index 9626e4c..edf1d9a 100644 --- a/src/extensions/mods.ts +++ b/src/extensions/mods.ts @@ -1,6 +1,6 @@ //https://github.com/GooseMod/GooseMod/wiki/Stuck-Updater-or-Blank-Window-Fix /* -Copyright 2021 GooseMod +Copyright 2022 GooseMod Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -60,6 +60,6 @@ electron.app.whenReady().then(async () => { if (await getConfig("armcordCSP")) { unstrictCSP(); } else { - console.log("ArmCord CSP is disabled. The CSP should be managed by third-party plugin."); + console.log("ArmCord CSP is disabled. The CSP should be managed by a third-party plugin(s)."); } }); diff --git a/src/ipc.ts b/src/ipc.ts index 6d5af02..52e1c68 100644 --- a/src/ipc.ts +++ b/src/ipc.ts @@ -23,6 +23,9 @@ export function registerIpc() { ipcMain.on("win-isMaximized", (event, arg) => { event.returnValue = mainWindow.isMaximized(); }); + ipcMain.on("win-isNormal", (event, arg) => { + event.returnValue = mainWindow.isNormal(); + }); ipcMain.on("win-minimize", (event, arg) => { mainWindow.minimize(); }); @@ -74,6 +77,9 @@ export function registerIpc() { ipcMain.on("clientmod", async (event, arg) => { event.returnValue = await getConfig("mods"); }); + ipcMain.on("trayIcon", async (event, arg) => { + event.returnValue = await getConfig("trayIcon"); + }); ipcMain.on("titlebar", (event, arg) => { event.returnValue = customTitlebar; }); diff --git a/src/main.ts b/src/main.ts index 206755c..e2def19 100644 --- a/src/main.ts +++ b/src/main.ts @@ -10,6 +10,7 @@ import "./shortcuts"; export var settings: any; export var customTitlebar: boolean; +export var clientName: "ArmCord"; if (process.platform == "linux") { if (process.env.$XDG_SESSION_TYPE == "wayland") { @@ -33,7 +34,7 @@ app.whenReady().then(async () => { case "native": createNativeWindow(); break; - case "discord": + case "basic": createNativeWindow(); break; default: @@ -67,6 +68,7 @@ app.whenReady().then(async () => { createCustomWindow(); break; } + console.log("userDataPath = " + app.getPath("userData")); }); }); diff --git a/src/preload/preload.ts b/src/preload/preload.ts index c476172..345bc09 100644 --- a/src/preload/preload.ts +++ b/src/preload/preload.ts @@ -93,6 +93,5 @@ setInterval(() => { el.textContent = `\nArmCord Version: ${version}`; el.onclick = () => ipcRenderer.send("openSettingsWindow"); - host.append(el); -}, 2000); +}, 2000); \ No newline at end of file diff --git a/src/preload/titlebar.ts b/src/preload/titlebar.ts index 5c55ec5..6d100d7 100644 --- a/src/preload/titlebar.ts +++ b/src/preload/titlebar.ts @@ -2,7 +2,7 @@ import {ipcRenderer} from "electron"; import {addStyle} from "../utils"; import * as fs from "fs"; import * as path from "path"; -import {platform} from "node:process"; +import os from "os"; export function injectTitlebar() { document.addEventListener("DOMContentLoaded", function (event) { var elem = document.createElement("div"); @@ -25,8 +25,10 @@ export function injectTitlebar() { const wordmarkcssPath = path.join(__dirname, "../", "/content/css/logos.css"); addStyle(fs.readFileSync(titlebarcssPath, "utf8")); addStyle(fs.readFileSync(wordmarkcssPath, "utf8")); - document.body.setAttribute("armcord-platform", platform); + document.body.setAttribute("customTitlebar", ""); + document.body.setAttribute("armcord-platform", os.platform()); + var titlebar = document.getElementsByClassName("titlebar")[0]; var minimize = document.getElementById("minimize"); var maximize = document.getElementById("maximize"); var quit = document.getElementById("quit"); @@ -38,7 +40,8 @@ export function injectTitlebar() { maximize!.addEventListener("click", () => { if (ipcRenderer.sendSync("win-isMaximized") == true) { ipcRenderer.send("win-unmaximize"); - } else { + document.body.removeAttribute("isMaximized"); + } else if (ipcRenderer.sendSync("win-isNormal") == true) { ipcRenderer.send("win-maximize"); } }); diff --git a/src/settings/settings.html b/src/settings/settings.html index 4b0b806..31e38ff 100644 --- a/src/settings/settings.html +++ b/src/settings/settings.html @@ -66,7 +66,18 @@

Performance mode:

- +
+ +

Tray icon:

+
+ + + diff --git a/src/settings/main.ts b/src/settings/main.ts index 3003db2..6d73313 100644 --- a/src/settings/main.ts +++ b/src/settings/main.ts @@ -1,9 +1,14 @@ -import {BrowserWindow, shell, ipcMain} from "electron"; -import {getConfig, setConfigBulk, Settings, getLang} from "../utils"; +import {BrowserWindow, shell, ipcMain, app, clipboard} from "electron"; +import {getConfig, setConfigBulk, Settings, getLang, getVersion, getConfigLocation} from "../utils"; import path from "path"; +import os from "os"; +import fs from "fs"; var settingsWindow: BrowserWindow; var instance: number = 0; - +const userDataPath = app.getPath("userData"); +const storagePath = path.join(userDataPath, "/storage/"); +const themesPath = path.join(userDataPath, "/themes/"); +const pluginsPath = path.join(userDataPath, "/plugins/"); export function createSettingsWindow() { console.log("Creating a settings window."); instance = instance + 1; @@ -28,9 +33,36 @@ export function createSettingsWindow() { console.log(args); setConfigBulk(args); }); + ipcMain.on("openStorageFolder", (event) => { + shell.openPath(storagePath); + }); + ipcMain.on("openThemesFolder", (event) => { + shell.openPath(themesPath); + }); + ipcMain.on("openPluginsFolder", (event) => { + shell.openPath(pluginsPath); + }); ipcMain.handle("getSetting", (event, toGet: string) => { return getConfig(toGet); }); + ipcMain.on("copyDebugInfo", (event) => { + let settingsFileContent = fs.readFileSync(getConfigLocation(), "utf-8"); + clipboard.writeText( + "**OS:** " + + os.platform() + + " " + + os.version() + + "\n**Architecture:** " + + os.arch() + + "\n**ArmCord version:** " + + getVersion() + + "\n**Electron version:** " + + process.versions.electron + + "\n`" + + settingsFileContent + + "`" + ); + }); settingsWindow.webContents.setWindowOpenHandler(({url}) => { shell.openExternal(url); return {action: "deny"}; diff --git a/src/settings/preload.ts b/src/settings/preload.ts index 38c986d..3148136 100644 --- a/src/settings/preload.ts +++ b/src/settings/preload.ts @@ -1,5 +1,6 @@ import {contextBridge, ipcRenderer} from "electron"; console.log("ArmCord Settings"); + contextBridge.exposeInMainWorld("settings", { save: (...args: any) => ipcRenderer.send("saveSettings", ...args), getLang: (toGet: string) => @@ -9,5 +10,9 @@ contextBridge.exposeInMainWorld("settings", { get: (toGet: string) => ipcRenderer.invoke("getSetting", toGet).then((result) => { return result; - }) //jank but works + }), //jank but works + openThemesFolder: () => ipcRenderer.send("openThemesFolder"), + openPluginsFolder: () => ipcRenderer.send("openPluginsFolder"), + openStorageFolder: () => ipcRenderer.send("openStorageFolder"), + copyDebugInfo: () => ipcRenderer.send("copyDebugInfo") }); diff --git a/src/settings/settings.html b/src/settings/settings.html index 15c98c8..080df08 100644 --- a/src/settings/settings.html +++ b/src/settings/settings.html @@ -9,6 +9,9 @@ +
+ +
-

ArmCord theme:

+

ArmCord theme

- ArmCord "themes" are basically behaviour packs. + ArmCord "themes" manage apps behaviour and looks.
Default - this is how ArmCord looks when you first launch it. It includes recreation of Discord's custom titlebar and ArmCord specific styles injected into Discord.
Native - uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more - similar to actual Discord app. + similar to actual Discord app on Linux.


@@ -99,17 +99,18 @@
-

Discord channel:

+

Discord channel

You can use this setting to change current instance of Discord:
Stable - you're probably most familiar with this one. It's the one you see in default Discord client!
- Canary - this is alpha test release of Discord. By using it you gain access to newest + Canary - this is alpha test release of Discord. By using it you gain access to the newest features and fixes.
- PTB - public test build. Gets features earlier than stable but is a bit older than Canary. + PTB - public test build. Receives features earlier than stable but is a bit older than + Canary.
Hummus - unofficial instance of Discord that takes you back to 2016! None of the client mods bundled with ArmCord work with it. It's run by community, so you take all the risk by using it. @@ -124,7 +125,7 @@ -

Client mod:

+

Client mod

Client mods are programs that allow you customize your Discord experience. They can change appearance of the client, modify behaviours or add new features! @@ -145,7 +146,7 @@ -

Performance mode:

+

Performance mode

Performance mode is an experimental function that may either increase responsiveness and performance of ArmCord or... decrease it. Please try every option and see which fits you the best. @@ -161,7 +162,7 @@ -

Tray icon:

+

Tray icon

Set the icon which will appear in tray menu.


From 3ef612b3c70ac0cfdc82f9d038b563a7c94836d8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 16 Jul 2022 09:32:26 +0000 Subject: [PATCH 052/109] Translated using Weblate (French) Currently translated at 37.0% (20 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/fr/ --- assets/lang/fr-FR.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/fr-FR.json b/assets/lang/fr-FR.json index 2c486bf..d25cd4b 100644 --- a/assets/lang/fr-FR.json +++ b/assets/lang/fr-FR.json @@ -27,5 +27,30 @@ "settings-prfmMode-performance": "Performance", "settings-prfmMode-battery": "Batterie", "settings-none": "Aucun", - "settings-mobileMode": "Mobile mode" + "settings-mobileMode": "Mobile mode", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-altPaste": "Alternative Paste", + "settings-storageFolder": "Open storage folder", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder", + "settings-themesFolder": "Open themes folder" } From 5d1721c9f90a9a466486d1cb93524711b99dedc7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 16 Jul 2022 09:32:46 +0000 Subject: [PATCH 053/109] Translated using Weblate (Italian) Currently translated at 37.0% (20 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/it/ --- assets/lang/it-IT.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/it-IT.json b/assets/lang/it-IT.json index 8895906..c6e958c 100644 --- a/assets/lang/it-IT.json +++ b/assets/lang/it-IT.json @@ -27,5 +27,30 @@ "settings-prfmMode-performance": "Performance", "settings-prfmMode-battery": "Battery", "settings-none": "None", - "settings-mobileMode": "Mobile mode" + "settings-mobileMode": "Mobile mode", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-altPaste": "Alternative Paste", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder" } From f404a7356a24b5357ff370c04b31c7c921f5d73c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 16 Jul 2022 09:32:28 +0000 Subject: [PATCH 054/109] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 37.0% (20 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/nb_NO/ --- assets/lang/nb-NO.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/nb-NO.json b/assets/lang/nb-NO.json index 3066c0f..b5ad9b1 100644 --- a/assets/lang/nb-NO.json +++ b/assets/lang/nb-NO.json @@ -27,5 +27,30 @@ "settings-prfmMode-performance": "Performance", "settings-prfmMode-battery": "Battery", "settings-none": "None", - "settings-mobileMode": "Mobile mode" + "settings-mobileMode": "Mobile mode", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-altPaste": "Alternative Paste", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder" } From e411b8653c0f9cdc15802a22188798b8e39a6134 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 16 Jul 2022 09:32:31 +0000 Subject: [PATCH 055/109] Translated using Weblate (Dutch) Currently translated at 37.0% (20 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/nl/ --- assets/lang/nl-NL.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/nl-NL.json b/assets/lang/nl-NL.json index fd83845..aff7295 100644 --- a/assets/lang/nl-NL.json +++ b/assets/lang/nl-NL.json @@ -27,5 +27,30 @@ "settings-prfmMode": "Performance mode:", "settings-prfmMode-performance": "Performance", "settings-prfmMode-battery": "Battery", - "settings-mobileMode": "Mobile mode" + "settings-mobileMode": "Mobile mode", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-altPaste": "Alternative Paste", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder" } From b2f6c94ad45e22e64321505bbbf26a38d300d498 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 16 Jul 2022 09:32:44 +0000 Subject: [PATCH 056/109] Translated using Weblate (Polish) Currently translated at 37.0% (20 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/pl/ --- assets/lang/pl-PL.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/pl-PL.json b/assets/lang/pl-PL.json index 4fa3eff..9beab46 100644 --- a/assets/lang/pl-PL.json +++ b/assets/lang/pl-PL.json @@ -27,5 +27,30 @@ "settings-prfmMode-performance": "Wydajny", "settings-prfmMode-battery": "Bateria", "settings-none": "Nic/Brak", - "settings-mobileMode": "Mobile mode" + "settings-mobileMode": "Mobile mode", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-altPaste": "Alternative Paste", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder" } From c5d71bed86469a353fa98fb70c0d83e77d6779d3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 16 Jul 2022 09:32:36 +0000 Subject: [PATCH 057/109] Translated using Weblate (Indonesian) Currently translated at 44.4% (24 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/id/ --- assets/lang/id-ID.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/id-ID.json b/assets/lang/id-ID.json index adbbcae..032135a 100644 --- a/assets/lang/id-ID.json +++ b/assets/lang/id-ID.json @@ -27,5 +27,30 @@ "settings-prfmMode-performance": "kinerja", "settings-prfmMode-battery": "Baterai", "settings-none": "tidak ada", - "settings-mobileMode": "Mobile mode" + "settings-mobileMode": "Mobile mode", + "settings-altPaste": "Alternative Paste", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder" } From 17b51b7b941e94655ead0fb5ae770cc769d38c21 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 16 Jul 2022 09:32:42 +0000 Subject: [PATCH 058/109] Translated using Weblate (Spanish (Latin America)) Currently translated at 35.1% (19 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/es_419/ --- assets/lang/es-419.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/es-419.json b/assets/lang/es-419.json index 1eec53a..4530b71 100644 --- a/assets/lang/es-419.json +++ b/assets/lang/es-419.json @@ -27,5 +27,30 @@ "settings-none": "Ninguna", "settings-save": "Guardar ajustes", "settings-updater": "Buscar una actualización", - "settings-mobileMode": "Mobile mode" + "settings-mobileMode": "Mobile mode", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-altPaste": "Alternative Paste", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder" } From f87307ff959d6748bdc153d86f1a1e542d575536 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 16 Jul 2022 09:32:32 +0000 Subject: [PATCH 059/109] Translated using Weblate (Thai) Currently translated at 46.2% (25 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/th/ --- assets/lang/th-TH.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/th-TH.json b/assets/lang/th-TH.json index 1521f50..116c768 100644 --- a/assets/lang/th-TH.json +++ b/assets/lang/th-TH.json @@ -27,5 +27,30 @@ "settings-none": "ไม่มี", "settings-save": "บันทึกการตั้งค่า", "settings-updater": "ตรวจหาการอัปเดต", - "settings-mobileMode": "โหมดมือถือ" + "settings-mobileMode": "โหมดมือถือ", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-altPaste": "Alternative Paste", + "settings-trayIcon": "Tray icon", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder" } From 82e3c763891dc8c4b2a9effe6d774db4ca640e67 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 16 Jul 2022 09:32:33 +0000 Subject: [PATCH 060/109] Translated using Weblate (Persian) Currently translated at 37.0% (20 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/fa/ --- assets/lang/fa-IR.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/fa-IR.json b/assets/lang/fa-IR.json index 1566cf5..20b6892 100644 --- a/assets/lang/fa-IR.json +++ b/assets/lang/fa-IR.json @@ -27,5 +27,30 @@ "settings-none": "هیچکدام", "settings-save": "ذخیره تنظیمات", "settings-updater": "بررسی برای بروزرسانی", - "settings-mobileMode": "Mobile mode" + "settings-mobileMode": "Mobile mode", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-altPaste": "Alternative Paste", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder" } From a599481bc548afe47df205c7f9fcdf693486131f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 16 Jul 2022 09:32:39 +0000 Subject: [PATCH 061/109] Translated using Weblate (Russian) Currently translated at 42.5% (23 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/ru/ --- assets/lang/ru-RU.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/ru-RU.json b/assets/lang/ru-RU.json index 6cca053..feeea17 100644 --- a/assets/lang/ru-RU.json +++ b/assets/lang/ru-RU.json @@ -27,5 +27,30 @@ "settings-none": "Ничего", "settings-save": "Сохранить настройки", "settings-updater": "Проверить наличие обновлений", - "settings-mobileMode": "Mobile mode" + "settings-mobileMode": "Mobile mode", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-pluginsFolder": "Open plugins folder", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-altPaste": "Alternative Paste", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone" } From 24be5a69e2f9cfeba540f020434451816d7d4276 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sat, 16 Jul 2022 09:32:37 +0000 Subject: [PATCH 062/109] Translated using Weblate (Portuguese (Brazil)) Currently translated at 33.3% (18 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/pt_BR/ --- assets/lang/pt-BR.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/pt-BR.json b/assets/lang/pt-BR.json index e657eb5..11af5de 100644 --- a/assets/lang/pt-BR.json +++ b/assets/lang/pt-BR.json @@ -27,5 +27,30 @@ "settings-none": "None", "settings-save": "Save Settings", "settings-updater": "Check for updates", - "settings-mobileMode": "Mobile mode" + "settings-mobileMode": "Mobile mode", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-altPaste": "Alternative Paste", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder" } From 2720ae9bc05c0549c97a22cfabb02825058534c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Sat, 16 Jul 2022 14:40:32 +0000 Subject: [PATCH 063/109] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 88.8% (48 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/nb_NO/ --- assets/lang/nb-NO.json | 64 +++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/assets/lang/nb-NO.json b/assets/lang/nb-NO.json index b5ad9b1..4578596 100644 --- a/assets/lang/nb-NO.json +++ b/assets/lang/nb-NO.json @@ -9,48 +9,48 @@ "no": "Nei", "setup_question1_answer1": "Hurtigoppsett", "setup_question3": "Skal ArmCord håndtere installasjon av klient-modifikasjoner?", - "setup_offline": "Koble til Internett og start ArmCord-oppsett på ny.", + "setup_offline": "Det ser ut til at du er frakoblet. Koblet til Internett og start ArmCord på ny.", "next": "Neste", "setup_question4": "Velg en klient-modifikasjon du ønsker å installere:", "setup_question4_clientmodnotice": "Hvorfor ikke alle? Å ha mange klient-modifikasjoner samtidig kan forårsake problemer. Hvis du vil gjøre det likevel bør du lese dokumentasjonen vår.", "settings-tray": "Minimize to tray", - "settings-channel": "Discord channel:", - "settings-mod": "Client mod:", - "settings-save": "Save settings", + "settings-channel": "Discord-kanal:", + "settings-mod": "Klient-modifikasjon:", + "settings-save": "Lagre innstillingene", "settings-updater": "Check for updates", - "settings-theme": "ArmCord Theme:", + "settings-theme": "ArmCord-drakt", "settings-theme-default": "Default", "settings-theme-native": "Native", "settings-patches": "Automatic Patches", "settings-invitewebsocket": "discord.gg support", - "settings-prfmMode": "Performance mode:", + "settings-prfmMode": "Ytelsesmodus er en eksperimentell funksjon som enten øker responsen og ytelsen til\n ArmCord, eller senker den. Prøv begge deler og finn ut hva som passer deg best.", "settings-prfmMode-performance": "Performance", "settings-prfmMode-battery": "Battery", "settings-none": "None", - "settings-mobileMode": "Mobile mode", - "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", - "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", - "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", - "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", - "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-channel-desc1": "You can use this setting to change current instance of Discord:", - "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", - "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", - "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", - "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", - "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", - "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", - "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", - "settings-altPaste": "Alternative Paste", - "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", - "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", - "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", - "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", - "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", - "settings-trayIcon": "Tray icon", - "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", - "settings-advanced": "️Advanced user zone", - "settings-pluginsFolder": "Open plugins folder", - "settings-themesFolder": "Open themes folder", - "settings-storageFolder": "Open storage folder" + "settings-mobileMode": "Mobilmodus", + "settings-theme-desc1": "Draktene endrer systemadferd og utseende.", + "settings-theme-desc2": "ArmCord ser slik ut første gang du starter deg. Her finner du et gjenskapt\n tilpasset tittelfelt og spesifikke ArmCord-stiler som injiseres i Discord..", + "settings-theme-desc3": "Bruker det systemspesifikke tittelfeltet tilhørende operativsystemet du bruker (f.eks Windows 7/10).\n Fungerer mer likt det faktiske Dicrod-programmet på Linux|GNU.", + "settings-csp-desc": "ArmCord CSP er systemet vårt brukt til innlasting av egendefinert innhold i Discord-programmet. Ting som\n klient-modifikasjoner og drakter trenger det. Skru dette av for å bli kvitt modifikasjoner og stilendriner.", + "settings-tray-desc": "Når avskrudd vil ArmCord lukkes som ethvert annet vindu. Ellers vil det være å finne\n i systemkurven din for senere bruk.", + "settings-channel-desc1": "Du kan bruke denne innstillingen for å endre den nåværende Discord-instansen:", + "settings-patches-desk": "Henter automatiske feilfikser som distribueres hvis utgivelsen viser seg å ha feil etter at den er sluppet.\n Vanligvis trenger ikke dette å forbli påslått, med mindre det varsles i støtte-Discord-en.", + "settings-mobileMode-desc": "For enheter med pekeskjerm. Aktiverer Discord sitt skjulte modbilmodus tiltenkt telefoner og nettbrett.\n Den eneste store funksjonen som mangler er stemmesludring. Ideelt for PinePhone-brukere og lign.", + "settings-channel-desc2": "Du kjenner antagelig denne best. Det er den som brukes i den forvalgte Discord-\n klienten.", + "settings-channel-desc3": "dette er en alfa-testutgave av Discord. Ved å bruke den får du tilgang til de nyeste\n funksjonene og fiksene.", + "settings-channel-desc4": "Offentlig test-bygg. Får funksjoner tidligere enn den stabile versjonen, men litt senere enn Canary.", + "settings-channel-desc5": "Uoffisiell Discord-instans i 2016-stil. Ingen av klient-modifikasjonene\n som er å finne i ArmCord fungerer med den. Den drives av gemenskapen, så du tar all risiko ved bruk.", + "settings-invitewebsocket-desc": "Når dette er påskrudd støtter ArmCord Discord.gg-lenker, noe som betyr at ArmCord automatisk godtar\n invitasjoner hvis du åpner dem i nettleseren. Kan til tider slutte å svare.", + "settings-altPaste": "Alternativ innliming", + "settings-altPaste-desc": "Hvis du er på GNOME eller Linux, eller ganske enkelt ikke kan lime inn bilder kopiert fra andre bilder er\n dette noe for deg. Det skrur på den alternative modulen for innliming av bilder. Kun skru på dette\n hvis du har problemer.", + "settings-mod-desc1": "Klientmodifikasjoner er prorammer som lar de endre Discord-opplevelsen. De kan endre klientens\n utseende, endre adferden, eller legge til nye funksjoner.", + "settings-mod-desc2": "Fokuserer på å gjøre utviklingen av Discord-programtillegg enklere. Minimalistisk og\n lett.", + "settings-mod-desc3": "Lett, sikkert, og enkelt å bruke, ferdig til bruk. Har en innebygd\n butikk for programtillegg.", + "settings-mod-desc4": "Under iherdig utvikling. Har ikke fungerende grensesnitt.", + "settings-trayIcon": "Systemkurvsikon", + "settings-trayIcon-desc": "Sett ikonet som vises i systemkurven.", + "settings-advanced": "Sone for avanserte brukere", + "settings-pluginsFolder": "Åpne programtilleggsmappen", + "settings-themesFolder": "Åpne draktmappen", + "settings-storageFolder": "Åpne lagringsmappen" } From d746b43013544ef159c857f6a3735c42ca2291ff Mon Sep 17 00:00:00 2001 From: Alyxia Sother Date: Sat, 16 Jul 2022 22:35:14 +0000 Subject: [PATCH 064/109] Translated using Weblate (Dutch) Currently translated at 48.1% (26 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/nl/ --- assets/lang/nl-NL.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/assets/lang/nl-NL.json b/assets/lang/nl-NL.json index aff7295..a9960bc 100644 --- a/assets/lang/nl-NL.json +++ b/assets/lang/nl-NL.json @@ -1,11 +1,11 @@ { "setup_question1": "Selecteer wat voor soort setup je wilt starten:", - "setup_question1_answer1": "Express setup", - "setup_question1_answer2": "Volledige setup", + "setup_question1_answer1": "Express Setup", + "setup_question1_answer2": "Volledige Setup", "setup_question3": "Moet ArmCord client mods installeren?", "yes": "Ja", "no": "Nee", - "setup_offline": "Het lijkt erop alsof je offline bent. Verbind met het Internet en herstart ArmCord setup.", + "setup_offline": "Het lijkt erop alsof je offline bent. Verbind met het internet en herstart ArmCord setup.", "loading_screen_start": "ArmCord starten…", "next": "Volgende", "setup_question4": "Selecteer een client mod om te installeren:", @@ -19,7 +19,7 @@ "settings-save": "Instellingen opslaan", "settings-updater": "Check voor updates", "settings-patches": "Automatische Patches", - "settings-theme": "ArmCord Thema:", + "settings-theme": "ArmCord Thema", "settings-theme-default": "Standaard", "settings-theme-native": "Native", "settings-invitewebsocket": "discord.gg support", @@ -32,7 +32,7 @@ "settings-altPaste": "Alternative Paste", "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", - "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc1": "ArmCord thema's beheren de functionaliteit en het uitzien van de app.", "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", From 381dab90e8746332803eff6a9b60808d6b7c73c8 Mon Sep 17 00:00:00 2001 From: smartfridge Date: Sat, 16 Jul 2022 09:38:30 +0000 Subject: [PATCH 065/109] Translated using Weblate (Polish) Currently translated at 66.6% (36 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/pl/ --- assets/lang/pl-PL.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/assets/lang/pl-PL.json b/assets/lang/pl-PL.json index 9beab46..2e3ac35 100644 --- a/assets/lang/pl-PL.json +++ b/assets/lang/pl-PL.json @@ -13,12 +13,12 @@ "setup_question1_answer1": "Ekspresowa konfiguracja", "setup_question1": "Wybierz w jaki sposób chcesz skonfigurować ArmCord:", "setup_offline": "Wydaje nam się że nie jesteś połączony z internetem. Połącz się z internetem i uruchom ponownie konfiguracje ArmCord .", - "settings-channel": "Kanał Discorda:", + "settings-channel": "Kanał Discorda", "settings-updater": "Sprawdź aktualizacje", "settings-tray": "Zminimalizuj do zasobnika zadań", "settings-save": "Zapisz ustawienia", "settings-mod": "Modyfikacja klienta:", - "settings-theme": "Motyw ArmCord:", + "settings-theme": "Motyw ArmCord", "settings-theme-default": "Domyślny", "settings-theme-native": "Natywny", "settings-patches": "Automatyczne łatki", @@ -27,20 +27,20 @@ "settings-prfmMode-performance": "Wydajny", "settings-prfmMode-battery": "Bateria", "settings-none": "Nic/Brak", - "settings-mobileMode": "Mobile mode", - "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", - "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", - "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", - "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", - "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", - "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", - "settings-channel-desc1": "You can use this setting to change current instance of Discord:", - "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-mobileMode": "Tryb mobilny", + "settings-theme-desc1": "Motywy ArmCord zarządzają zachowanie i wygląd aplikacji.", + "settings-theme-desc2": "tak wygląda ArmCord przy pierwszym uruchomieniu. Zawiera rekreacje\n paska zadań Discord oraz specjalne style ArmCord wstrzyknięte do Discorda.", + "settings-theme-desc3": "używa natywnego paska zadań twojego systemu(np. Windows 7/10). Funkcjonuje\n bliżej do normalnego Discorda na Linuxie.", + "settings-csp-desc": "ArmCord CSP to nasz autorski system który zarządza ładowaniem niestandardowych rzeczy do klienta. Na przykład\n modyfikacje klienta lub motywy wymagają jego obecności. Wyłącz jeśli chcesz się pozbyć modyfikacji i motywów Discorda.", + "settings-tray-desc": "Kiedy wyłączone, ArmCord zamknie swoje okno jak każda inna aplikacje, jednak gdy jest włączone usiądzie i odpocznie\n w pasku zadań.", + "settings-patches-desk": "Ściąga automatyczne łatki, które są rozprowadzane jeśli wersja okaże się mięc błędy. Najczęśćiej\n nie musisz mieć tego włączonego, chyba że poproszony/a na Discordzie.", + "settings-mobileMode-desc": "Jeśli jesteś na urządzeniu z dotykowym ekranem, ta opcja jest dla ciebie! Aktywuje ona ukryty tryb Discord\n przeznaczony na telefony i tablety. Jedyna większa brakująca funkcja to kanał głosowy. Jest to idealne rozwiązanie dla\n użytkowników PinePhone i podobnych.", + "settings-channel-desc1": "Możesz użyć tej opcji aby zmienić obecny kanał Discorda:", + "settings-channel-desc2": "jesteś najpewniej najbardziej zapoznany z tym. Jest on używany w domyślnym oficjalnym kliencie\n Discorda!", "settings-altPaste": "Alternative Paste", - "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", - "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", - "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-channel-desc3": "jest to wersja alpha Discorda. Poprzez używanie jej otrzymujesz dostęp do najnowszych\n funkcji i poprawek.", + "settings-channel-desc4": "publiczny kanał testowania. Dostaje funkcje szybciej niż stable, jednak jest troche starszy od Canary.", + "settings-channel-desc5": "nieoficjalny kanał Discorda który zabiera cię do 2016 roku! Żadne z modyfikacji klienta\n normalnie zawartych w ArmCordzie nie działa w nim. Jest on prowadzony przez społeczność więc używaj na własne ryzyko.", "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", From 0fb71dfe2b8a723d3879ddc0a8e7918ee652cac0 Mon Sep 17 00:00:00 2001 From: smartfridge <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 18 Jul 2022 17:13:52 +0200 Subject: [PATCH 066/109] Add Cordwood, better Hummus support and skip splash --- src/extensions/mods.ts | 2 +- src/preload/preload.ts | 16 +++++++++++++--- src/preload/titlebar.ts | 39 ++++++++++++++++++++++++++++++++++++++ src/settings/settings.html | 14 ++++++++++++-- src/utils.ts | 2 ++ src/window.ts | 24 ++++++++++++++++++++++- 6 files changed, 90 insertions(+), 7 deletions(-) diff --git a/src/extensions/mods.ts b/src/extensions/mods.ts index fb2c5c2..9821a12 100644 --- a/src/extensions/mods.ts +++ b/src/extensions/mods.ts @@ -28,7 +28,7 @@ const unstrictCSP = () => { "https://raw.githubusercontent.com/Cumcord/Cumcord/stable/dist/build.js", "https://raw.githubusercontent.com/Cumcord/Cumcord/master/dist/build.js", "https://raw.githubusercontent.com/FlickerMod/dist/main/build.js", - "https://localhost:1234/dist.js" + "https://raw.githubusercontent.com/Cordwood/builds/master/index.js" ]; electron.session.defaultSession.webRequest.onHeadersReceived(({responseHeaders, url}, done) => { diff --git a/src/preload/preload.ts b/src/preload/preload.ts index ac6ccf7..52cf93e 100644 --- a/src/preload/preload.ts +++ b/src/preload/preload.ts @@ -3,7 +3,7 @@ import "./capturer"; import "./patch"; import * as fs from "fs"; import * as path from "path"; -import {injectTitlebar} from "./titlebar"; +import {injectHummusTitlebar, injectTitlebar} from "./titlebar"; import {sleep, addStyle, injectJS, addScript} from "../utils"; import {ipcRenderer} from "electron"; import {injectMobileStuff} from "./mobile"; @@ -25,7 +25,8 @@ declare global { const clientMods = { goosemod: "https://api.goosemod.com/inject.js", cumcord: "https://raw.githubusercontent.com/Cumcord/Cumcord/stable/dist/build.js", - flicker: "https://raw.githubusercontent.com/FlickerMod/dist/main/build.js" + flicker: "https://raw.githubusercontent.com/FlickerMod/dist/main/build.js", + cordwood: "https://raw.githubusercontent.com/Cordwood/builds/master/index.js" }; console.log("ArmCord " + version); @@ -36,7 +37,11 @@ if (window.location.href.indexOf("splash.html") > -1) { console.log("Skipping titlebar injection and client mod injection."); } else { if (ipcRenderer.sendSync("titlebar")) { - injectTitlebar(); + if (ipcRenderer.sendSync("channel")) { + injectHummusTitlebar(); + } else { + injectTitlebar(); + } } if (ipcRenderer.sendSync("mobileMode")) { injectMobileStuff(); @@ -61,6 +66,11 @@ if (window.location.href.indexOf("splash.html") > -1) { console.log("Loading FlickerMod..."); await updateLang(); break; + case "cordwood": + injectJS(clientMods.cordwood); + console.log("Loading Cordwood..."); + await updateLang(); + break; } }); } diff --git a/src/preload/titlebar.ts b/src/preload/titlebar.ts index a3fe1bc..bd54ef6 100644 --- a/src/preload/titlebar.ts +++ b/src/preload/titlebar.ts @@ -54,3 +54,42 @@ export function injectTitlebar() { }); }); } +export function injectHummusTitlebar() { + document.addEventListener("DOMContentLoaded", function (event) { + var elem = document.createElement("div"); + elem.innerHTML = ` + + `; + elem.classList.add("win-buttons"); + elem.classList.add("win-buttons-light"); + document.getElementsByClassName("titlebar")[0].appendChild(elem); + document.body.setAttribute("customTitlebar", ""); + document.body.setAttribute("armcord-platform", os.platform()); + addStyle(".chat>.title-wrap {width: 87% !important;}"); + addStyle(".friends-header {width: 91% !important;}"); + var minimize = document.getElementById("minimize"); + var maximize = document.getElementById("maximize"); + var quit = document.getElementById("quit"); + + minimize!.addEventListener("click", () => { + ipcRenderer.send("win-minimize"); + }); + + maximize!.addEventListener("click", () => { + if (ipcRenderer.sendSync("win-isMaximized") == true) { + ipcRenderer.send("win-unmaximize"); + document.body.removeAttribute("isMaximized"); + } else if (ipcRenderer.sendSync("win-isNormal") == true) { + ipcRenderer.send("win-maximize"); + } + }); + + quit!.addEventListener("click", () => { + if (ipcRenderer.sendSync("minimizeToTray") === true) { + ipcRenderer.send("win-hide"); + } else if (ipcRenderer.sendSync("minimizeToTray") === false) { + ipcRenderer.send("win-quit"); + } + }); + }); +} diff --git a/src/settings/settings.html b/src/settings/settings.html index a75a8d2..355e8ff 100644 --- a/src/settings/settings.html +++ b/src/settings/settings.html @@ -112,8 +112,9 @@ PTB - public test build. Receives features earlier than stable but is a bit older than Canary.
- Hummus - unofficial instance of Discord that takes you back to 2016! None of the client mods - bundled with ArmCord work with it. It's run by community, so you take all the risk by using it. + Hummus - unofficial instance of Discord that takes you back to 2016! Only client mod + available to run alongside with it is Cordwood. It's run by community, so you take all the risk by + using it.

@@ -168,6 +169,13 @@

⚠️Advanced user zone⚠️

+
+ + + +

Skips ArmCord splash screen when you start up the app.

+
+

@@ -206,6 +214,7 @@ document.getElementById("tray").checked = await settings.get("minimizeToTray"); document.getElementById("websocket").checked = await settings.get("inviteWebsocket"); document.getElementById("alternativePaste").checked = await settings.get("alternativePaste"); + document.getElementById("skipSplash").checked = await settings.get("skipSplash"); document.getElementById("mobile").checked = await settings.get("mobileMode"); document.getElementById("patches").value = await settings.get("automaticPatches"); document.getElementById("mod").value = await settings.get("mods"); @@ -222,6 +231,7 @@ armcordCSP: document.getElementById("csp").checked, minimizeToTray: document.getElementById("tray").checked, alternativePaste: document.getElementById("alternativePaste").checked, + skipSplash: document.getElementById("skipSplash").checked, automaticPatches: document.getElementById("patches").checked, mods: document.getElementById("mod").value, mobileMode: document.getElementById("mobile").checked, diff --git a/src/utils.ts b/src/utils.ts index 759c1c9..9e7b619 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -42,6 +42,7 @@ export function setup() { alternativePaste: false, mods: "cumcord", performanceMode: "none", + skipSplash: false, inviteWebsocket: true, mobileMode: false, trayIcon: "ac_plug_colored", @@ -191,6 +192,7 @@ export interface Settings { alternativePaste: boolean; mods: string; mobileMode: boolean, + skipSplash: boolean, performanceMode: string; inviteWebsocket: boolean; trayIcon: string; diff --git a/src/window.ts b/src/window.ts index 2ca3fdf..0a09cd2 100644 --- a/src/window.ts +++ b/src/window.ts @@ -126,7 +126,29 @@ async function doAfterDefiningTheWindow() { mainWindow.setSize(390, 470); await mainWindow.loadFile(path.join(__dirname, "/content/setup.html")); } else { - await mainWindow.loadFile(path.join(__dirname, "/content/splash.html")); + if (await getConfig("skipSplash") == true) { + switch (await getConfig("channel")) { + case "stable": + mainWindow.loadURL("https://discord.com/app"); + break; + case "canary": + mainWindow.loadURL("https://canary.discord.com/app"); + break; + case "ptb": + mainWindow.loadURL("https://ptb.discord.com/app"); + break; + case "hummus": + mainWindow.loadURL("https://hummus.sys42.net/"); + break; + case undefined: + mainWindow.loadURL("https://discord.com/app"); + break; + default: + mainWindow.loadURL("https://discord.com/app"); + } + } else { + await mainWindow.loadFile(path.join(__dirname, "/content/splash.html")); + } } } export function createCustomWindow() { From cb69a35dd63c149d6b55d24547e69c1791cf6f6b Mon Sep 17 00:00:00 2001 From: KayoticCarnige <32397453+kckarnige@users.noreply.github.com> Date: Mon, 18 Jul 2022 14:53:25 -0400 Subject: [PATCH 067/109] 2 new things (Read desc.) (#159) - Cleaned up ASAR packaging, ignoring unneeded files for building - Moved install location for Windows users ("AppData\Local\Programs" -> "AppData\Local" --- build/installer.nsh | 8 ++++++++ package.json | 11 +++++++++++ 2 files changed, 19 insertions(+) create mode 100644 build/installer.nsh diff --git a/build/installer.nsh b/build/installer.nsh new file mode 100644 index 0000000..06b5934 --- /dev/null +++ b/build/installer.nsh @@ -0,0 +1,8 @@ +!macro preInit + SetRegView 64 + WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "$LocalAppData\ArmCord" + WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "$LocalAppData\ArmCord" + SetRegView 32 + WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "$LocalAppData\ArmCord" + WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "$LocalAppData\ArmCord" +!macroend \ No newline at end of file diff --git a/package.json b/package.json index 2cf0a0b..9d64bfe 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,17 @@ "ws": "^8.8.0" }, "build": { + "nsis": { + "include": "build/installer.nsh" + }, + "files": [ + "!*", + "assets", + "node_modules", + "ts-out", + "package.json", + "LICENSE" + ], "appId": "com.smartfridge.armcord", "productName": "ArmCord", "mac": { From e71376237e7327dfd17bb8125c54941b5dd99f34 Mon Sep 17 00:00:00 2001 From: smartfridge <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 18 Jul 2022 21:22:04 +0200 Subject: [PATCH 068/109] Update English translation --- assets/lang/en-US.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/lang/en-US.json b/assets/lang/en-US.json index 05132cc..7dc1551 100644 --- a/assets/lang/en-US.json +++ b/assets/lang/en-US.json @@ -31,7 +31,7 @@ "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", - "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! Only client mod\n available to run alongside with it is Cordwood. It's run by community, so you take all the risk by\n using it.", "settings-invitewebsocket": "Invite Websocket", "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", "settings-altPaste": "Alternative Paste", From bace17dca6c71e1d907e55c91b994088fc5048ce Mon Sep 17 00:00:00 2001 From: altinat Date: Mon, 18 Jul 2022 06:22:24 +0000 Subject: [PATCH 069/109] Translated using Weblate (Thai) Currently translated at 57.4% (31 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/th/ --- assets/lang/th-TH.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/assets/lang/th-TH.json b/assets/lang/th-TH.json index 116c768..73455c6 100644 --- a/assets/lang/th-TH.json +++ b/assets/lang/th-TH.json @@ -14,7 +14,7 @@ "setup_question4": "เลือกไคลเอนต์มอดที่ต้องการติดตั้ง:", "settings-prfmMode-battery": "ประหยัดแบตเตอรี่", "setup_question4_clientmodnotice": "ทำไมไม่ใช้พร้อมกันทั้งหมดล่ะ? การมีไคลเอนต์มอดหลายตัวพร้อมกันอาจทำให้เกิดปัญหาได้ หากต้องการที่จะทำจริงๆ ให้ไปดูใน Discord ของเรา", - "settings-theme": "ธีม ArmCord:", + "settings-theme": "ธีม ArmCord", "settings-theme-default": "ค่าเริ่มต้น", "settings-theme-native": "ดั้งเดิม", "settings-tray": "ย่อขนาดหน้าต่าง", @@ -28,17 +28,17 @@ "settings-save": "บันทึกการตั้งค่า", "settings-updater": "ตรวจหาการอัปเดต", "settings-mobileMode": "โหมดมือถือ", - "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc1": "\"ธีม\" ของ ArmCord เป็นการจัดการลักษณะและการทำงานของแอป", "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", "settings-channel-desc1": "You can use this setting to change current instance of Discord:", "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", "settings-altPaste": "Alternative Paste", "settings-trayIcon": "Tray icon", - "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", - "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", - "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", - "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-theme-desc2": "นี่คือหน้าตา ArmCord ตอนที่เปิดครั้งแรก เป็นการปรับปรุงจากหน้าตาเดิมของ Discord\n แถบชื่อหน้าต่างและหน้าตาใหม่ ๆ ที่ ArmCord เปลี่ยน Discord", + "settings-theme-desc3": "ใช้แถบชื่อหน้าต่างเริ่มต้นของระบบปฏิบัติการที่กำลังใช้อยู่ (เช่น Windows 7/10) ตัวเลือกคล้ายกันกับ\n แอป Discord ใน Linux", + "settings-csp-desc": "ArmCord CSP คือระบบที่จัดการการโหลดเนื้อหากำหนดเองลงไปในแอป Discord สิ่งอย่างเช่น สิ่งอย่างเช่น\n ไคลแอนต์มอด ธีม ต้องใช้มัน สามารถปิดใช้งานได้หากต้องการปิดมอดและหน้าตากำหนดเอง", + "settings-tray-desc": "เมื่อปิด ArmCord จะปิดเหมือนหน้าตาอื่น ๆ เมื่อปิด ไม่อย่างนั้นมันจะนั่งนิ่ง\n ในถาดระบบภายหลัง", "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", From ab9ab6304f4b8c087dfcebdeda2b94023050f740 Mon Sep 17 00:00:00 2001 From: Zekiu_ Date: Thu, 21 Jul 2022 11:39:45 +0000 Subject: [PATCH 070/109] Translated using Weblate (Polish) Currently translated at 66.6% (36 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/pl/ --- assets/lang/pl-PL.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/lang/pl-PL.json b/assets/lang/pl-PL.json index 2e3ac35..cc4f429 100644 --- a/assets/lang/pl-PL.json +++ b/assets/lang/pl-PL.json @@ -12,7 +12,7 @@ "loading_screen_offline": "Wydaje nam się, że nie jesteś połączony z Internetem. Połącz się z internetem i spróbuj ponownie.", "setup_question1_answer1": "Ekspresowa konfiguracja", "setup_question1": "Wybierz w jaki sposób chcesz skonfigurować ArmCord:", - "setup_offline": "Wydaje nam się że nie jesteś połączony z internetem. Połącz się z internetem i uruchom ponownie konfiguracje ArmCord .", + "setup_offline": "Wydaje nam się, że nie jesteś połączony z internetem. Połącz się z internetem i uruchom ponownie konfiguracje ArmCord.", "settings-channel": "Kanał Discorda", "settings-updater": "Sprawdź aktualizacje", "settings-tray": "Zminimalizuj do zasobnika zadań", From 6138281e4c3d58564935efe61604f45699b7cc03 Mon Sep 17 00:00:00 2001 From: smartfridge <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 25 Jul 2022 10:36:53 +0200 Subject: [PATCH 071/109] Move Licensing header under imports --- src/socket.ts | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/socket.ts b/src/socket.ts index 2b63d56..4b6565b 100644 --- a/src/socket.ts +++ b/src/socket.ts @@ -1,27 +1,28 @@ -// MIT License - -// Copyright (c) 2020-2022 Dawid Papiewski "SpacingBat3" - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. import type {Server, WebSocket} from "ws"; import {inviteWindow, createInviteWindow} from "./window"; +/* + MIT License + Copyright (c) 2020-2022 Dawid Papiewski "SpacingBat3" + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + */ async function wsLog(message: string, ...args: unknown[]) { console.log("[WebSocket] " + message, ...args); } From 0784b8ce7931fe3e54eea45848c42c6bf069ea67 Mon Sep 17 00:00:00 2001 From: sjk Date: Fri, 29 Jul 2022 01:43:18 +0200 Subject: [PATCH 072/109] Added translation using Weblate (Japanese) --- assets/lang/ja-JP.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 assets/lang/ja-JP.json diff --git a/assets/lang/ja-JP.json b/assets/lang/ja-JP.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/ja-JP.json @@ -0,0 +1 @@ +{} From dcfa4a6e14b8d547707c53badf7d5401e021dfc9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 28 Jul 2022 23:43:20 +0000 Subject: [PATCH 073/109] Translated using Weblate (Japanese) Currently translated at 100.0% (0 of 0 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/ja/ --- assets/lang/ja-JP.json | 57 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/assets/lang/ja-JP.json b/assets/lang/ja-JP.json index 0967ef4..24349f5 100644 --- a/assets/lang/ja-JP.json +++ b/assets/lang/ja-JP.json @@ -1 +1,56 @@ -{} +{ + "setup_question1_answer2": "Full Setup", + "yes": "Yes", + "settings-theme-default": "Default", + "settings-invitewebsocket": "Invite Websocket", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "loading_screen_start": "Starting ArmCord…", + "loading_screen_offline": "You appear to be offline. Please connect to the Internet and try again.", + "loading_screen_update": "A new version of ArmCord is available. Please update to the latest version.", + "setup_question1": "Select what kind of setup you want to perform:", + "setup_question1_answer1": "Express Setup", + "setup_offline": "You appear to be offline. Please connect to the internet and restart ArmCord.", + "setup_question2": "Choose your Discord channel/instance:", + "setup_question3": "Should ArmCord handle client mods installation?", + "no": "No", + "next": "Next", + "setup_question4": "Select a client mod you want to install:", + "setup_question4_clientmodnotice": "Why not all of them? Having many client mods at the same time can cause issues. If you really want to do it though, check our Discord.", + "settings-theme": "ArmCord theme", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-theme-native": "Native", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-tray": "Minimize to tray", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-patches": "Automatic Patches", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-mobileMode": "Mobile mode", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel": "Discord channel", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! Only client mod\n available to run alongside with it is Cordwood. It's run by community, so you take all the risk by\n using it.", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-altPaste": "Alternative Paste", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-mod": "Client mod", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-prfmMode": "Performance mode is an experimental function that may either increase responsiveness and performance of\n ArmCord or... decrease it. Please try every option and see which fits you the best.", + "settings-prfmMode-performance": "Performance", + "settings-prfmMode-battery": "Battery", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder", + "settings-none": "None", + "settings-save": "Save Settings", + "settings-updater": "Check for updates" +} From 95a26bfe849767172ce772596b57d6d8083879f0 Mon Sep 17 00:00:00 2001 From: kris Date: Thu, 11 Aug 2022 18:57:26 +0000 Subject: [PATCH 074/109] Translated using Weblate (French) Currently translated at 44.4% (24 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/fr/ --- assets/lang/fr-FR.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/lang/fr-FR.json b/assets/lang/fr-FR.json index d25cd4b..e69fa8d 100644 --- a/assets/lang/fr-FR.json +++ b/assets/lang/fr-FR.json @@ -2,8 +2,8 @@ "loading_screen_start": "Démarrage d'ArmCord…", "loading_screen_update": "Une nouvelle version d'ArmCord est disponible. Veuillez mettre à jour vers la dernière version.", "setup_question1": "Sélectionnez le type de configuration que vous souhaitez effectuer :", - "setup_question1_answer1": "Configuration express", - "setup_question1_answer2": "Configuration complète", + "setup_question1_answer1": "Configuration Express", + "setup_question1_answer2": "Configuration Complète", "setup_question2": "Choisissez votre canal/instance Discord :", "setup_question3": "ArmCord doit-il s'occuper de l'installation des mods clients ?", "yes": "Oui", @@ -18,7 +18,7 @@ "settings-mod": "Modification client :", "settings-save": "Sauvegarder les paramètres", "settings-updater": "Vérifier les mises à jour", - "settings-theme": "Thème ArmCord :", + "settings-theme": "Thème ArmCord", "settings-theme-default": "Default", "settings-theme-native": "Native", "settings-patches": "Correctifs automatiques", @@ -28,7 +28,7 @@ "settings-prfmMode-battery": "Batterie", "settings-none": "Aucun", "settings-mobileMode": "Mobile mode", - "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc1": "Les \"thèmes\" d'ArmCord gèrent le comportement et l'apparence des applications.", "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", "settings-altPaste": "Alternative Paste", "settings-storageFolder": "Open storage folder", From 42322b40e3878cb2fa530ae2f75c36fead16e820 Mon Sep 17 00:00:00 2001 From: nero Date: Sun, 14 Aug 2022 17:23:30 +0000 Subject: [PATCH 075/109] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (54 of 54 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/pt_BR/ --- assets/lang/pt-BR.json | 88 +++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/assets/lang/pt-BR.json b/assets/lang/pt-BR.json index 11af5de..9e7d492 100644 --- a/assets/lang/pt-BR.json +++ b/assets/lang/pt-BR.json @@ -1,56 +1,56 @@ { "no": "Não", "loading_screen_start": "Iniciando ArmCord…", - "loading_screen_offline": "Você parece estar offline. Conecte-se à internet e tente novamente.", - "loading_screen_update": "Uma nova versão do ArmCord está disponível. Atualize para a versão mais recente.", - "setup_question1": "Selecione que tipo de instação você quer fazer:", + "loading_screen_offline": "Você parece estar offline. Por favor, conecte-se à internet e tente novamente.", + "loading_screen_update": "Uma nova versão do ArmCord está disponível. Por favor, atualize para a versão mais recente.", + "setup_question1": "Selecione que tipo de instação você deseja fazer:", "setup_question1_answer1": "Instalação rápida", "setup_question1_answer2": "Instalação completa", - "setup_offline": "Você parece estar offline. Conecte-se à internet e tente novamente.", - "setup_question2": "Escolha o canal/instância do seu Discord", - "setup_question3": "O ArmCord deve suportar a instalação dos mods de cliente?", + "setup_offline": "Você parece estar offline. Por favor, conecte-se à internet e tente novamente.", + "setup_question2": "Escolha o canal/instância do seu Discord:", + "setup_question3": "O ArmCord deve lidar com a instalação de mods do cliente?", "yes": "Sim", "next": "Próximo", - "setup_question4": "Selecione um mod de cliente que você quer instalar:", - "setup_question4_clientmodnotice": "Por que não todos eles? Tendo vários mods de cliente ao mesmo tempo pode causar problemas, Se você realmente quer fazer isso mesmo assim, veja o nosso Discord.", - "settings-theme": "Tema do ArmCord:", + "setup_question4": "Selecione um mod de cliente que você deseja instalar:", + "setup_question4_clientmodnotice": "Por que não todos eles? Ter muitos mods de cliente ao mesmo tempo pode causar problemas. Se você realmente quiser fazer isso, verifique nosso Discord.", + "settings-theme": "Tema do ArmCord", "settings-theme-default": "Padrão", "settings-theme-native": "Nativo", "settings-tray": "Minimizar para a bandeja", "settings-patches": "Patches automáticos", - "settings-channel": "Tipo de Discord:", - "settings-invitewebsocket": "Invite Websocket", - "settings-mod": "Client mod:", - "settings-prfmMode": "Performance mode:", - "settings-prfmMode-performance": "Performance", - "settings-prfmMode-battery": "Battery", - "settings-none": "None", - "settings-save": "Save Settings", - "settings-updater": "Check for updates", - "settings-mobileMode": "Mobile mode", - "settings-channel-desc1": "You can use this setting to change current instance of Discord:", - "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", - "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", - "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", - "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", - "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", - "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", - "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", - "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", - "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", - "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", - "settings-altPaste": "Alternative Paste", - "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", - "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! None of the client mods\n bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.", - "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", - "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", - "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", - "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", - "settings-trayIcon": "Tray icon", - "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", - "settings-advanced": "️Advanced user zone", - "settings-pluginsFolder": "Open plugins folder", - "settings-themesFolder": "Open themes folder", - "settings-storageFolder": "Open storage folder" + "settings-channel": "Canal do Discord", + "settings-invitewebsocket": "Convite por WebSocket", + "settings-mod": "Modificação de cliente", + "settings-prfmMode": "O modo de desempenho é uma função experimental que pode aumentar a capacidade de resposta e o desempenho\n do ArmCord, ou... diminuí-lo. Por favor, teste todas as opções e veja qual se adapta melhor a você.", + "settings-prfmMode-performance": "Desempenho", + "settings-prfmMode-battery": "Bateria", + "settings-none": "Nenhum", + "settings-save": "Salvar configurações", + "settings-updater": "Verificar atualizações", + "settings-mobileMode": "Modo móvel", + "settings-channel-desc1": "Você pode usar esta opção para alterar a atual instância do Discord:", + "settings-theme-desc1": "Os \"temas\" do ArmCord gerenciam o comportamento e a aparência de aplicativos.", + "settings-theme-desc2": "esta é a aparência do ArmCord quando você o inicia pela primeira vez. Inclui uma recriação\n personalizada da barra de título do Discord e estilos específicos do ArmCord injetados nele.", + "settings-theme-desc3": "utiliza a barra de título nativa do SO que você está executando no momento (no Windows 7/10). Funções mais\n parecidas com o real aplicativo do Discord no Linux.", + "settings-csp-desc": "ArmCord CSP é o nosso sistema que gerencia o carregamento de conteúdo personalizado no aplicativo do Discord. Coisas como\n mods de cliente e temas dependem disso. Desative se você quiser se livrar de mods e estilos personalizados.", + "settings-patches-desk": "Busca patches automáticos que são distribuídos se a versão mais recente apresentar bugs após o lançamento. Normalmente\n você não precisa manter isso ativado, a menos que seja notificado no suporte do Discord.", + "settings-mobileMode-desc": "Se estiver em um dispositivo com tela sensível ao toque, este recurso é para você! Ele ativa o modo móvel oculto do Discord\n destinado a celulares e tablets. A única característica importante ausente é o suporte ao bate-papo por voz. Isso é ideal para\n usuários do PinePhone e similares.", + "settings-tray-desc": "Quando desativado, o ArmCord irá encerrar como qualquer outra janela quando for fechado, caso contrário, permanecerá\n em repouso na bandeja do seu sistema para mais tarde.", + "settings-channel-desc2": "você provavelmente está mais familiarizado com este. É o que você vê no cliente padrão do\n Discord!", + "settings-channel-desc3": "esta é a versão de teste alfa do Discord. Ao utilizá-la, você obtém acesso aos recursos e correções\n mais recentes.", + "settings-invitewebsocket-desc": "Quando ativado, o ArmCord suportará links Discord.gg; isto é, se você abrir um link de convite em seu\n navegador, o ArmCord irá aceitá-lo automaticamente. Pode não responder às vezes.", + "settings-channel-desc4": "canal de teste público. Recebe recursos mais cedo do que o estável, mas é um pouco mais antigo do que o Canary.", + "settings-altPaste": "Colar alternativo", + "settings-altPaste-desc": "Se você usa GNOME no Linux, ou simplesmente não consegue colar imagens copiadas a partir de outras mensagens, então isto é\n para você. Isto habilita o módulo alternativo para colar imagens. Ative isso apenas quando estiver com\n problemas.", + "settings-channel-desc5": "instância não oficial do Discord que leva você de volta a 2016! O único cliente modificado\n disponível para rodar junto com ele é o Cordwood. É administrado pela comunidade, portanto você assume todos os riscos\n ao utilizá-lo.", + "settings-mod-desc1": "Mods de cliente são programas que permitem personalizar sua experiência no Discord. Eles podem alterar a aparência\n do cliente, modificar comportamentos ou adicionar novos recursos!", + "settings-mod-desc2": "concentra-se em tornar a experiência de desenvolvimento de plugins para o Discord mais fácil. Mínimo e\n leve.", + "settings-mod-desc3": "leve, seguro e fácil, já pronto para usar. Possui uma loja integrada\n para plugins.", + "settings-mod-desc4": "trabalho pesado em andamento, não possui uma interface do usuário funcional.", + "settings-trayIcon": "Ícone da bandeja", + "settings-trayIcon-desc": "Defina o ícone que aparecerá no menu da bandeja.", + "settings-advanced": "Área para usuários avançados", + "settings-pluginsFolder": "Abrir pasta de plugins", + "settings-themesFolder": "Abrir pasta de temas", + "settings-storageFolder": "Abrir pasta de armazenamento" } From 881f3b5fd665bd644a893526dd5748ba49b657e9 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Mon, 15 Aug 2022 11:48:26 +0200 Subject: [PATCH 076/109] Added translation using Weblate (Swedish) --- assets/lang/sv-SE.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 assets/lang/sv-SE.json diff --git a/assets/lang/sv-SE.json b/assets/lang/sv-SE.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/sv-SE.json @@ -0,0 +1 @@ +{} From ccb87c53d8e920aef8e3529e044b0d3a8e3f77fc Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 15 Aug 2022 09:48:28 +0000 Subject: [PATCH 077/109] Translated using Weblate (Swedish) Currently translated at 100.0% (0 of 0 strings) Translation: ArmCord/ArmCord Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/sv/ --- assets/lang/sv-SE.json | 57 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/assets/lang/sv-SE.json b/assets/lang/sv-SE.json index 0967ef4..783767b 100644 --- a/assets/lang/sv-SE.json +++ b/assets/lang/sv-SE.json @@ -1 +1,56 @@ -{} +{ + "loading_screen_start": "Starting ArmCord…", + "loading_screen_offline": "You appear to be offline. Please connect to the Internet and try again.", + "loading_screen_update": "A new version of ArmCord is available. Please update to the latest version.", + "setup_question1": "Select what kind of setup you want to perform:", + "setup_question1_answer1": "Express Setup", + "setup_question1_answer2": "Full Setup", + "setup_offline": "You appear to be offline. Please connect to the internet and restart ArmCord.", + "setup_question2": "Choose your Discord channel/instance:", + "setup_question3": "Should ArmCord handle client mods installation?", + "yes": "Yes", + "no": "No", + "next": "Next", + "setup_question4": "Select a client mod you want to install:", + "setup_question4_clientmodnotice": "Why not all of them? Having many client mods at the same time can cause issues. If you really want to do it though, check our Discord.", + "settings-theme": "ArmCord theme", + "settings-theme-desc1": "ArmCord \"themes\" manage apps behaviour and looks.", + "settings-theme-desc2": "this is how ArmCord looks when you first launch it. It includes recreation of Discord's\n custom titlebar and ArmCord specific styles injected into Discord.", + "settings-theme-desc3": "uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more\n similar to actual Discord app on Linux.", + "settings-theme-default": "Default", + "settings-theme-native": "Native", + "settings-mod": "Client mod", + "settings-prfmMode-performance": "Performance", + "settings-mod-desc2": "focuses on making the Discord plugin development experience easier. Minimal and\n lightweight.", + "settings-csp-desc": "ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", + "settings-tray": "Minimize to tray", + "settings-tray-desc": "When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", + "settings-patches": "Automatic Patches", + "settings-patches-desk": "Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually\n you don't have to keep this enabled, unless notified in support Discord.", + "settings-mobileMode": "Mobile mode", + "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", + "settings-channel": "Discord channel", + "settings-channel-desc1": "You can use this setting to change current instance of Discord:", + "settings-channel-desc2": "you're probably most familiar with this one. It's the one you see in default Discord\n client!", + "settings-channel-desc3": "this is alpha test release of Discord. By using it you gain access to the newest\n features and fixes.", + "settings-channel-desc4": "public test build. Receives features earlier than stable but is a bit older than Canary.", + "settings-channel-desc5": "unofficial instance of Discord that takes you back to 2016! Only client mod\n available to run alongside with it is Cordwood. It's run by community, so you take all the risk by\n using it.", + "settings-invitewebsocket": "Invite Websocket", + "settings-invitewebsocket-desc": "When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your\n browser, ArmCord will automatically accept the invite. Can be unresponsive at times.", + "settings-altPaste": "Alternative Paste", + "settings-altPaste-desc": "If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is\n for you. This enables alternative module for pasting images. Only enable this when you're experiencing\n issues.", + "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", + "settings-mod-desc3": "light, secure, and easy to use, with out of the box experience. Features a built-in\n store for plugins.", + "settings-mod-desc4": "heavily work in progress, doesn't have a working UI.", + "settings-prfmMode": "Performance mode is an experimental function that may either increase responsiveness and performance of\n ArmCord or... decrease it. Please try every option and see which fits you the best.", + "settings-prfmMode-battery": "Battery", + "settings-trayIcon": "Tray icon", + "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", + "settings-advanced": "️Advanced user zone", + "settings-pluginsFolder": "Open plugins folder", + "settings-themesFolder": "Open themes folder", + "settings-storageFolder": "Open storage folder", + "settings-none": "None", + "settings-save": "Save Settings", + "settings-updater": "Check for updates" +} From fb6348ee82f0cfd49395af80ab303228cf7135d1 Mon Sep 17 00:00:00 2001 From: KayoticCarnige <32397453+kckarnige@users.noreply.github.com> Date: Mon, 22 Aug 2022 05:24:55 -0400 Subject: [PATCH 078/109] (Attempt 2) A bunch of shit (#175) * 2 new things (Read desc.) - Cleaned up ASAR packaging, ignoring unneeded files for building - Moved install location for Windows users ("AppData\Local\Programs" -> "AppData\Local" * 3 things (Read desc.) - Updated things related to Hummus (Hummus settings don't save nor load in it's respective settings window yet, idk why) - Added check for package version (ArmCord's internal version) - Made check for Kernel mod a bit cleaner, it still uses the same jank method * 3 things - Made macOS titlebar more accurate to Discord - Added "unFocused" class when window isn't focused - Added option to uninstall Husky hook for Windows users with reminder to run format script before committing * Resolved a dumb issue My dumbass not knowing the "echo" command existed smh * Made "precommit-fix" warning more noticable * Whoops * Fixed a CSS bug Discord updates are gonna hate us, huh? --- package.json | 7 ++- src/content/css/discord.css | 6 +- src/content/css/settings.css | 10 ++- src/content/css/titlebar.css | 38 ++++++++---- src/ipc.ts | 19 +++--- src/main.ts | 5 +- src/menu.ts | 110 +++++++++++++++++---------------- src/preload/bridge.ts | 1 + src/preload/preload.ts | 3 +- src/preload/titlebar.ts | 13 +++- src/settings/hummus.html | 23 ++++--- src/settings/main.ts | 10 ++- src/settings/settings.html | 26 ++++---- src/tray.ts | 115 +++++++++++++++++------------------ src/utils.ts | 30 ++++----- src/window.ts | 62 +++++++++++-------- 16 files changed, 277 insertions(+), 201 deletions(-) diff --git a/package.json b/package.json index 9d64bfe..cea8d12 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,9 @@ "packageQuick": "npm run build && electron-builder --dir", "format": "prettier --write src/**/*", "CIbuild": "npm run build && electron-builder --linux zip && electron-builder --windows zip && electron-builder --macos zip", - "postinstall": "husky install" + "postinstall": "husky install", + "precommit-fix": "husky uninstall && echo - && echo !Make sure to run 'npm run format' before commiting! | chalk --stdin yellow inverse && echo -", + "precommit-fix:format": "husky uninstall && npm run format" }, "repository": { "type": "git", @@ -31,7 +33,8 @@ "electron-builder": "^23.0.3", "husky": "^8.0.1", "prettier": "^2.7.0", - "typescript": "^4.7.3" + "typescript": "^4.7.3", + "chalk-cli": "^5.0.0" }, "dependencies": { "electron-context-menu": "github:ArmCord/electron-context-menu", diff --git a/src/content/css/discord.css b/src/content/css/discord.css index d85ed64..cf1fa99 100644 --- a/src/content/css/discord.css +++ b/src/content/css/discord.css @@ -8,6 +8,10 @@ padding: 0; padding-top: 4px; } +[customTitlebar] .backdrop-2ByYRN { + top: -30px; + padding-top: 30px; +} * { outline: none; } @@ -33,7 +37,7 @@ } .none-2-_0dP:hover::-webkit-scrollbar { - width: 0.29em !important; + width: 0.3em !important; border-radius: 25px; height: 0px !important; background: transparent !important; diff --git a/src/content/css/settings.css b/src/content/css/settings.css index 997fb06..b964039 100644 --- a/src/content/css/settings.css +++ b/src/content/css/settings.css @@ -85,6 +85,10 @@ p { z-index: 999; font-size: 10px; } +.saveBar > button { + width: 90px; +} + .header { color: var(--header-primary); font-size: 1.5em; @@ -128,6 +132,7 @@ p { color: var(--header-primary); font-size: 1.5em; font-weight: bold; + width: max-content; } /*buttons*/ button { @@ -273,9 +278,12 @@ select { .acClientMod { height: 18em !important; } +.acCordwood { + height: 8em !important; +} .acPrfmMode { height: 10em !important; } .acTray { - height: 7em !important; + height: 8em !important; } diff --git a/src/content/css/titlebar.css b/src/content/css/titlebar.css index 7aefba5..a0328ce 100644 --- a/src/content/css/titlebar.css +++ b/src/content/css/titlebar.css @@ -12,7 +12,6 @@ height: 30px; line-height: 30px; -webkit-app-region: drag; - width: 100%; user-select: none; -webkit-user-select: none; position: fixed; @@ -225,13 +224,22 @@ } /* ArmCord on MacOS (Why would you do this?) */ +[armcord-platform="darwin"] .withFrame-haYltI { + height: 0px !important; +} +[armcord-platform="darwin"] .sidebar-1tnWFu { + border-top-left-radius: 0px !important; +} +[armcord-platform="darwin"] .scroller-3X7KbA { + padding-top: 35px !important; +} [armcord-platform="darwin"] .container-2RRFHK { - padding-top: 45px; - top: -45px; + padding-top: 48px; + top: -48px; } [armcord-platform="darwin"] .titlebar { - height: 45px; - line-height: 45px; + height: 48px; + line-height: 48px; } [armcord-platform="darwin"] .titlebar #window-controls-container { float: left; @@ -239,7 +247,7 @@ height: 60%; line-height: 45px; -webkit-app-region: no-drag; - transform: translate(-78px, 4px); + transform: translate(-82px, 4px); } [armcord-platform="darwin"] .titlebar #window-controls-container:hover #minimize #minimize-icon, @@ -248,6 +256,13 @@ display: list-item; } +[armcord-platform="darwin"][unFocused] .titlebar #window-controls-container #minimize, +[armcord-platform="darwin"][unFocused] .titlebar #window-controls-container #maximize, +[armcord-platform="darwin"][unFocused] .titlebar #window-controls-container #quit { + background-color: #d6d6d5 !important; + transition: background-color 0.1s ease-in; +} + [armcord-platform="darwin"] .titlebar #window-controls-container #quit #quit-icon { background-color: #79282b; -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") @@ -275,6 +290,7 @@ [armcord-platform="darwin"] .titlebar #window-controls-container #minimize { background-color: #fac536; + transition: background-color 0.1s ease-in; border: 1px solid #da9e10; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") no-repeat 50% 50%; @@ -284,6 +300,7 @@ } [armcord-platform="darwin"] .titlebar #window-controls-container #maximize { background-color: #39ea49; + transition: background-color 0.1s ease-in; border: 1px solid #13c11e; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") no-repeat 50% 50%; @@ -293,6 +310,7 @@ } [armcord-platform="darwin"] .titlebar #window-controls-container #quit { background-color: #f25056; + transition: background-color 0.1s ease-in; border: 1px solid #d52735; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") no-repeat 50% 50%; @@ -331,13 +349,7 @@ } [armcord-platform="darwin"] .window-title { - content: var(--wordmark-svg); - height: 10px; - left: 50%; - margin-right: 50%; - transform: translate(50%, 9.5px); - float: right; - padding: 0; + display: none; } [armcord-platform="linux"] .window-title, diff --git a/src/ipc.ts b/src/ipc.ts index ad8cc6a..131115f 100644 --- a/src/ipc.ts +++ b/src/ipc.ts @@ -1,7 +1,7 @@ //ipc stuff import {app, ipcMain, shell, desktopCapturer} from "electron"; import {mainWindow} from "./window"; -import {setConfigBulk, getVersion, getConfig, setLang, getLang, getWindowState} from "./utils"; +import {setConfigBulk, getVersion, getConfig, setLang, getLang, getWindowState, packageVersion} from "./utils"; import {customTitlebar} from "./main"; import {createSettingsWindow} from "./settings/main"; export function registerIpc() { @@ -44,21 +44,24 @@ export function registerIpc() { ipcMain.on("get-app-version", (event) => { event.returnValue = getVersion(); }); + ipcMain.on("get-package-version", (event) => { + event.returnValue = packageVersion; + }); ipcMain.on("splashEnd", async (event, arg) => { try { - var width = await getWindowState("width") ?? 800; - var height= await getWindowState("height") ?? 600; - var isMaximized = await getWindowState("isMaximized") ?? false; + var width = (await getWindowState("width")) ?? 800; + var height = (await getWindowState("height")) ?? 600; + var isMaximized = (await getWindowState("isMaximized")) ?? false; } catch (e) { - console.log("[Window state manager] No window state file found. Fallbacking to default values.") + console.log("[Window state manager] No window state file found. Fallbacking to default values."); mainWindow.setSize(800, 600); } if (isMaximized) { - mainWindow.setSize(800, 600); //just so the whole thing doesn't cover whole screen - mainWindow.maximize() + mainWindow.setSize(800, 600); //just so the whole thing doesn't cover whole screen + mainWindow.maximize(); } else { mainWindow.setSize(width, height); - console.log("[Window state manager] Not maximized.") + console.log("[Window state manager] Not maximized."); } }); ipcMain.on("restart", (event, arg) => { diff --git a/src/main.ts b/src/main.ts index 39a055a..3de5dd8 100644 --- a/src/main.ts +++ b/src/main.ts @@ -43,7 +43,7 @@ app.whenReady().then(async () => { break; } } - await init() + await init(); session.fromPartition("some-partition").setPermissionRequestHandler((webContents, permission, callback) => { if (permission === "notifications") { // Approves the permissions request @@ -55,7 +55,6 @@ app.whenReady().then(async () => { } }); app.on("activate", async function () { - if (BrowserWindow.getAllWindows().length === 0) - await init() + if (BrowserWindow.getAllWindows().length === 0) await init(); }); }); diff --git a/src/menu.ts b/src/menu.ts index f049369..f6535bf 100644 --- a/src/menu.ts +++ b/src/menu.ts @@ -1,76 +1,84 @@ -import { Menu, app, clipboard, globalShortcut } from "electron"; +import {Menu, app, clipboard, globalShortcut} from "electron"; import {mainWindow} from "./window"; import {getConfig} from "./utils"; function paste(contents: any) { const contentTypes = clipboard.availableFormats().toString(); //Workaround: fix pasting the images. - if(contentTypes.includes('image/') && contentTypes.includes('text/html')) { + if (contentTypes.includes("image/") && contentTypes.includes("text/html")) { clipboard.writeImage(clipboard.readImage()); } contents.paste(); } export async function setMenu() { - if (await getConfig("alternativePaste") == true) { + if ((await getConfig("alternativePaste")) == true) { mainWindow.on("focus", function () { - console.log("[Window state manager] Focus") + console.log("[Window state manager] Focus"); globalShortcut.register("CmdOrCtrl+V", function () { if (mainWindow.isFocused()) { - paste(mainWindow.webContents) + paste(mainWindow.webContents); } - }) - }) + }); + }); mainWindow.on("show", function () { - console.log("[Window state manager] Show") - mainWindow.focus() + console.log("[Window state manager] Show"); + mainWindow.focus(); globalShortcut.register("CmdOrCtrl+V", function () { if (mainWindow.isFocused()) { - paste(mainWindow.webContents) + paste(mainWindow.webContents); } - }) - }) + }); + }); mainWindow.on("blur", function () { - console.log("[Window state manager] Defocus") - globalShortcut.unregister("CmdOrCtrl+V") - }) + console.log("[Window state manager] Defocus"); + globalShortcut.unregister("CmdOrCtrl+V"); + }); mainWindow.on("hide", function () { - console.log("[Window state manager] Hide") - globalShortcut.unregister("CmdOrCtrl+V") - }) + console.log("[Window state manager] Hide"); + globalShortcut.unregister("CmdOrCtrl+V"); + }); } - var template: Electron.MenuItemConstructorOptions[] = [{ - label: "ArmCord", - submenu: [ - {label: "About ArmCord", role: "about"},//orderFrontStandardAboutPanel - {type: "separator"}, - { - label: "Developer tools", accelerator: "CmdOrCtrl+Shift+I", click: function () { - mainWindow.webContents.openDevTools() + var template: Electron.MenuItemConstructorOptions[] = [ + { + label: "ArmCord", + submenu: [ + {label: "About ArmCord", role: "about"}, //orderFrontStandardAboutPanel + {type: "separator"}, + { + label: "Developer tools", + accelerator: "CmdOrCtrl+Shift+I", + click: function () { + mainWindow.webContents.openDevTools(); + } + }, + { + label: "Quit", + accelerator: "CmdOrCtrl+Q", + click: function () { + app.quit(); + } } - }, - { - label: "Quit", accelerator: "CmdOrCtrl+Q", click: function () { - app.quit(); - } - } - ] - }, { - label: "Edit", - submenu: [ - {label: "Undo", accelerator: "CmdOrCtrl+Z", role: "undo"}, - {label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", role: "redo"}, - {type: "separator"}, - {label: "Cut", accelerator: "CmdOrCtrl+X", role: "cut"}, - {label: "Copy", accelerator: "CmdOrCtrl+C", role: "copy"}, - { - label: "Paste", accelerator: "CmdOrCtrl+V", click: function () { - paste(mainWindow.webContents) - } - }, - {label: "Select All", accelerator: "CmdOrCtrl+A", role: "selectAll"} - ] - } - ] + ] + }, + { + label: "Edit", + submenu: [ + {label: "Undo", accelerator: "CmdOrCtrl+Z", role: "undo"}, + {label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", role: "redo"}, + {type: "separator"}, + {label: "Cut", accelerator: "CmdOrCtrl+X", role: "cut"}, + {label: "Copy", accelerator: "CmdOrCtrl+C", role: "copy"}, + { + label: "Paste", + accelerator: "CmdOrCtrl+V", + click: function () { + paste(mainWindow.webContents); + } + }, + {label: "Select All", accelerator: "CmdOrCtrl+A", role: "selectAll"} + ] + } + ]; Menu.setApplicationMenu(Menu.buildFromTemplate(template)); -} \ No newline at end of file +} diff --git a/src/preload/bridge.ts b/src/preload/bridge.ts index a4ea57d..d421d5b 100644 --- a/src/preload/bridge.ts +++ b/src/preload/bridge.ts @@ -21,6 +21,7 @@ contextBridge.exposeInMainWorld("armcord", { return result; }), version: ipcRenderer.sendSync("get-app-version", "app-version"), + packageVersion: ipcRenderer.sendSync("get-package-version", "app-version"), getDisplayMediaSelector: getDisplayMediaSelector, openSettingsWindow: () => ipcRenderer.send("openSettingsWindow") }); diff --git a/src/preload/preload.ts b/src/preload/preload.ts index 52cf93e..f98d82e 100644 --- a/src/preload/preload.ts +++ b/src/preload/preload.ts @@ -8,6 +8,7 @@ import {sleep, addStyle, injectJS, addScript} from "../utils"; import {ipcRenderer} from "electron"; import {injectMobileStuff} from "./mobile"; var version = ipcRenderer.sendSync("get-app-version", "app-version"); +var channel = ipcRenderer.sendSync("channel"); async function updateLang() { if (window.location.href.indexOf("setup.html") > -1) { console.log("Setup, skipping lang update"); @@ -37,7 +38,7 @@ if (window.location.href.indexOf("splash.html") > -1) { console.log("Skipping titlebar injection and client mod injection."); } else { if (ipcRenderer.sendSync("titlebar")) { - if (ipcRenderer.sendSync("channel")) { + if (channel == "hummus") { injectHummusTitlebar(); } else { injectTitlebar(); diff --git a/src/preload/titlebar.ts b/src/preload/titlebar.ts index bd54ef6..78dbfce 100644 --- a/src/preload/titlebar.ts +++ b/src/preload/titlebar.ts @@ -64,9 +64,18 @@ export function injectHummusTitlebar() { elem.classList.add("win-buttons-light"); document.getElementsByClassName("titlebar")[0].appendChild(elem); document.body.setAttribute("customTitlebar", ""); + document.body.setAttribute("hummus", ""); document.body.setAttribute("armcord-platform", os.platform()); - addStyle(".chat>.title-wrap {width: 87% !important;}"); - addStyle(".friends-header {width: 91% !important;}"); + addStyle(` + html, body { + background-color: #1e2124; + } + + .friends-header, + .chat > .title-wrap { + float: right !important; + padding-right: 140px !important; + }`); var minimize = document.getElementById("minimize"); var maximize = document.getElementById("maximize"); var quit = document.getElementById("quit"); diff --git a/src/settings/hummus.html b/src/settings/hummus.html index 786dc22..15b5abc 100644 --- a/src/settings/hummus.html +++ b/src/settings/hummus.html @@ -5,6 +5,9 @@ ArmCord Settings @@ -79,7 +82,7 @@
-
+
@@ -116,14 +119,16 @@


-

⚠️Advanced user zone⚠️

- -
- -
- -
- +
+

⚠️ Advanced User Zone ⚠️

+ +
+ +
+ +
+ +