diff --git a/README.md b/README.md index 80e9f95..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.
@@ -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` diff --git a/assets/ac_black_plug.png b/assets/ac_black_plug.png new file mode 100644 index 0000000..4486366 Binary files /dev/null and b/assets/ac_black_plug.png differ diff --git a/assets/ac_black_plug_hollow.png b/assets/ac_black_plug_hollow.png new file mode 100644 index 0000000..c824274 Binary files /dev/null and b/assets/ac_black_plug_hollow.png differ diff --git a/assets/ac_white_plug.png b/assets/ac_white_plug.png index fd67fb1..1af1313 100644 Binary files a/assets/ac_white_plug.png and b/assets/ac_white_plug.png differ diff --git a/assets/ac_white_plug_filled.png b/assets/ac_white_plug_filled.png deleted file mode 100644 index 7e13a19..0000000 Binary files a/assets/ac_white_plug_filled.png and /dev/null differ diff --git a/assets/ac_white_plug_hollow.png b/assets/ac_white_plug_hollow.png new file mode 100644 index 0000000..fd67fb1 Binary files /dev/null and b/assets/ac_white_plug_hollow.png differ diff --git a/assets/lang/en-US.json b/assets/lang/en-US.json index 86d1b3c..c1301c9 100644 --- a/assets/lang/en-US.json +++ b/assets/lang/en-US.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": "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-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" } diff --git a/assets/lang/fa-IR.json b/assets/lang/fa-IR.json new file mode 100644 index 0000000..41039ef --- /dev/null +++ b/assets/lang/fa-IR.json @@ -0,0 +1,30 @@ +{ + "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": "بررسی برای بروزرسانی" +} 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", diff --git a/assets/lang/id-ID.json b/assets/lang/id-ID.json index 51bef0a..f0535d3 100644 --- a/assets/lang/id-ID.json +++ b/assets/lang/id-ID.json @@ -14,7 +14,6 @@ "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 documentation.", "settings-theme": "ArmCord Theme:", - "settings-theme-tabs": "Tabs (experimental)", "settings-theme-default": "Default", "settings-theme-native": "Native", "settings-tray": "Minimize to tray", diff --git a/assets/lang/it-IT.json b/assets/lang/it-IT.json index 25d10d4..f0c9675 100644 --- a/assets/lang/it-IT.json +++ b/assets/lang/it-IT.json @@ -19,7 +19,6 @@ "settings-updater": "Controlla gli aggiornamenti", "settings-mod": "Client mod:", "settings-theme": "ArmCord Theme:", - "settings-theme-tabs": "Tabs (experimental)", "settings-theme-default": "Default", "settings-theme-native": "Native", "settings-patches": "Automatic Patches", diff --git a/assets/lang/nb-NO.json b/assets/lang/nb-NO.json index 29ed697..00bdd19 100644 --- a/assets/lang/nb-NO.json +++ b/assets/lang/nb-NO.json @@ -19,7 +19,6 @@ "settings-save": "Save settings", "settings-updater": "Check for updates", "settings-theme": "ArmCord Theme:", - "settings-theme-tabs": "Tabs (experimental)", "settings-theme-default": "Default", "settings-theme-native": "Native", "settings-patches": "Automatic Patches", diff --git a/assets/lang/nl-NL.json b/assets/lang/nl-NL.json index c981b8d..ebac8bc 100644 --- a/assets/lang/nl-NL.json +++ b/assets/lang/nl-NL.json @@ -20,7 +20,6 @@ "settings-updater": "Check voor updates", "settings-patches": "Automatische Patches", "settings-theme": "ArmCord Thema:", - "settings-theme-tabs": "Tabs (experimenteel)", "settings-theme-default": "Standaard", "settings-theme-native": "Native", "settings-invitewebsocket": "discord.gg support", diff --git a/assets/lang/pl-PL.json b/assets/lang/pl-PL.json index 4870b4f..05f840e 100644 --- a/assets/lang/pl-PL.json +++ b/assets/lang/pl-PL.json @@ -19,7 +19,6 @@ "settings-save": "Zapisz ustawienia", "settings-mod": "Modyfikacja klienta:", "settings-theme": "Motyw ArmCord:", - "settings-theme-tabs": "Karty (eksperymentalne)", "settings-theme-default": "Domyślny", "settings-theme-native": "Natywny", "settings-patches": "Automatyczne łatki", diff --git a/assets/lang/th-TH.json b/assets/lang/th-TH.json index e8a88e1..698ac35 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_offline": "ดูเหมือนว่าคุณออฟไลน์อยู่ โปรดเชื่อมต่ออินเทอร์เน็ตและลองใหม่อีกครั้ง", + "setup_question1_answer1": "ติดตั้งแบบรวดเร็ว", + "setup_question1_answer2": "ติดตั้งเต็มรูปแบบ", + "setup_offline": "ดูเหมือนว่าคุณออฟไลน์อยู่ โปรดเชื่อมต่ออินเทอร์เน็ตและลองเริ่ม ArmCord ใหม่อีกครั้ง", "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": "บันทึกการตั้งค่า", diff --git a/build/icon.icns b/build/icon.icns index f030674..85c5b71 100644 Binary files a/build/icon.icns and b/build/icon.icns differ diff --git a/build/icon.ico b/build/icon.ico new file mode 100644 index 0000000..975112f Binary files /dev/null and b/build/icon.ico differ diff --git a/package.json b/package.json index b636089..fc015c6 100644 --- a/package.json +++ b/package.json @@ -26,10 +26,10 @@ "@types/node": "^17.0.42", "@types/ws": "^8.5.3", "copyfiles": "^2.4.1", - "electron": "^19.0.4", + "electron": "^19.0.7", "electron-builder": "^23.0.3", "husky": "^8.0.1", - "prettier": "^2.7.0", + "prettier": "^2.7.1", "typescript": "^4.7.3" }, "dependencies": { @@ -47,7 +47,7 @@ "linux": { "icon": "build/icon.icns", "category": "Network", - "maintainer": "smartfrigde@gmail.com", + "maintainer": "smartfridge@vivaldi.net", "target": [ "deb", "tar.gz", 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..bccaf2b 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+"); } diff --git a/src/content/css/settings.css b/src/content/css/settings.css index bd8b0d5..d4e1714 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: 0.17s ease; +} +button:hover { + background: var(--brand-experiment-560); + cursor: pointer; + transition: 0.17s ease; } -button:hover { - background-color: #687dc6; - border-style: none; - outline: none; +button:active { + background: var(--brand-experiment-600); cursor: pointer; + transition: 0.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; } diff --git a/src/content/css/setup.css b/src/content/css/setup.css index 6f1e1b8..9bd97fb 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: 0.17s ease; } button:hover { - filter: brightness(85%); + background: var(--brand-experiment-560); cursor: pointer; + transition: 0.17s ease; +} + +button:active { + background: var(--brand-experiment-600); + cursor: pointer; + transition: 0.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..7aefba5 100644 --- a/src/content/css/titlebar.css +++ b/src/content/css/titlebar.css @@ -47,17 +47,105 @@ } /* 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 +190,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 +198,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 +206,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 +215,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 +224,124 @@ 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 +350,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..dfc317e 100644 --- a/src/content/setup.html +++ b/src/content/setup.html @@ -12,9 +12,7 @@
@@ -123,6 +121,7 @@ automaticPatches: false, mods: "cumcord", inviteWebsocket: true, + trayIcon: "ac_plug_colored", performanceMode: "none" }); setTimeout(() => window.armcordinternal.restart(), 5000); @@ -153,6 +152,7 @@ minimizeToTray: true, automaticPatches: false, performanceMode: "none", + trayIcon: "ac_plug_colored", mods: options.mod, inviteWebsocket: true }); @@ -168,11 +168,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..cfaebed 100644 --- a/src/content/splash.html +++ b/src/content/splash.html @@ -6,6 +6,13 @@ + @@ -23,7 +30,7 @@ text.innerHTML = await armcord.getLang("loading_screen_offline"); } else { text.innerHTML = await armcord.getLang("loading_screen_start"); - if (window.armcord.version === "DEV") { + if (window.armcord.version === "3.1.0") { console.log("Running a development build of ArmCord. Skipping updater."); } else { const response = await fetch("https://armcord.xyz/latest.json"); 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 5ad4e44..52e1c68 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} from "./utils"; +import {setConfigBulk, getVersion, getConfig, setLang, getLang, getWindowState} from "./utils"; import {customTitlebar} from "./main"; import {createSettingsWindow} from "./settings/main"; export function registerIpc() { @@ -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(); }); @@ -41,8 +44,22 @@ export function registerIpc() { ipcMain.on("get-app-version", (event) => { event.returnValue = getVersion(); }); - ipcMain.on("splashEnd", (event, arg) => { - mainWindow.setSize(800, 600); + 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; + } catch (e) { + console.log("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() + } else { + mainWindow.setSize(width, height); + console.log("Not maximized.") + } }); ipcMain.on("restart", (event, arg) => { app.relaunch(); @@ -60,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 096e8b7..e2def19 100644 --- a/src/main.ts +++ b/src/main.ts @@ -10,7 +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") { @@ -34,7 +34,7 @@ app.whenReady().then(async () => { case "native": createNativeWindow(); break; - case "discord": + case "basic": createNativeWindow(); break; default: @@ -68,6 +68,7 @@ app.whenReady().then(async () => { createCustomWindow(); break; } + console.log("userDataPath = " + app.getPath("userData")); }); }); diff --git a/src/preload/bridge.ts b/src/preload/bridge.ts index 3a458ce..a4ea57d 100644 --- a/src/preload/bridge.ts +++ b/src/preload/bridge.ts @@ -15,7 +15,6 @@ contextBridge.exposeInMainWorld("armcord", { }, electron: process.versions.electron, channel: ipcRenderer.sendSync("channel"), - openTab: (number: number) => ipcRenderer.sendSync("openTab", number), setLang: (lang: string) => ipcRenderer.send("setLang", lang), getLang: (toGet: string) => ipcRenderer.invoke("getLang", toGet).then((result) => { diff --git a/src/preload/preload.ts b/src/preload/preload.ts index 1b58435..6089430 100644 --- a/src/preload/preload.ts +++ b/src/preload/preload.ts @@ -28,6 +28,9 @@ const clientMods = { }; console.log("ArmCord"); +ipcRenderer.on("themeLoader", (event, message) => { + addStyle(message); +}); if (window.location.href.indexOf("splash.html") > -1) { console.log("Skipping titlebar injection and client mod injection."); } else { @@ -90,6 +93,5 @@ setInterval(() => { el.textContent = `\nArmCord Version: ${version}`; el.onclick = () => ipcRenderer.send("openSettingsWindow"); - host.append(el); }, 2000); diff --git a/src/preload/titlebar.ts b/src/preload/titlebar.ts index 28a94f9..7ce8b48 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,7 +25,8 @@ 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", "win32"); var minimize = document.getElementById("minimize"); var maximize = document.getElementById("maximize"); @@ -38,7 +39,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"); } }); @@ -52,6 +54,3 @@ export function injectTitlebar() { }); }); } -export function removeTitlebar() { - document.querySelector("#titlebar")!.remove(); -} 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:

+
+