Compare commits

...

42 Commits

Author SHA1 Message Date
cec5f7fcb8 chore(deps): update dependency bufferutil to v4.1.0 2026-01-19 15:03:15 +00:00
b37db09e0c chore(i18n): Translated using Weblate (Catalan)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ca/
2026-01-19 13:01:57 +00:00
7a4def8acc Fix weblate link (#4204) 2026-01-16 17:24:34 +09:00
f4bbd53e1a chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2026-01-13 22:01:47 +00:00
272ee7bdb1 chore(i18n): Translated using Weblate (Estonian)
Currently translated at 32.8% (152 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/et/
2026-01-12 19:01:50 +00:00
cece515696 chore(i18n): Translated using Weblate (Dutch)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2026-01-12 19:01:48 +00:00
82b7b24ef7 chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2026-01-06 00:01:50 +01:00
732bbc17f4 chore(i18n): Translated using Weblate (Italian)
Currently translated at 99.7% (462 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2026-01-06 00:01:48 +01:00
29da42d9ff chore(i18n): Translated using Weblate (Italian)
Currently translated at 99.7% (462 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2026-01-06 00:01:47 +01:00
269d0cd638 chore(i18n): Translated using Weblate (Russian)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2026-01-04 05:01:48 +00:00
69e15165e3 chore(i18n): Translated using Weblate (Georgian)
Currently translated at 32.3% (150 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ka/
2026-01-03 00:02:04 +01:00
Fin
7663a12ee4 chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2026-01-03 00:02:03 +01:00
dcda0b3561 chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2026-01-03 00:02:02 +01:00
5f82fd9e5a chore: Update README with Warp details 2026-01-02 14:59:50 +09:00
af11fa31d3 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 78.4% (363 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2026-01-01 12:02:01 +01:00
a049d618e5 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 98.7% (457 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2026-01-01 12:02:01 +01:00
41bc03a737 Revert "fix macos build (?)"
This reverts commit 2ab6eff761.
2025-12-30 22:23:14 +02:00
2ab6eff761 fix macos build (?) 2025-12-30 22:17:18 +02:00
6c881a265a fix tests 2025-12-30 22:02:23 +02:00
2b15f0a87c chore(i18n): Translated using Weblate (Persian)
Currently translated at 99.5% (461 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fa/
2025-12-30 10:00:31 +01:00
1d6ab2a82b update eslint config 2025-12-29 17:04:25 +02:00
24e82e69d1 chore(i18n): Translated using Weblate (Polish)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2025-12-28 21:00:38 +00:00
b079d411de feat: apply new icon (#4215) 2025-12-29 01:39:53 +09:00
e04c8eb99f chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-12-26 12:00:20 +00:00
3a6b793948 chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-12-24 02:00:23 +01:00
f5361de78d chore(i18n): Translated using Weblate (Dutch)
Currently translated at 98.4% (456 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2025-12-24 02:00:21 +01:00
e0759afc70 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-12-24 02:00:20 +01:00
700e4ba38e chore(i18n): Translated using Weblate (Croatian)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-12-22 19:00:35 +00:00
cc82b232ce chore(i18n): Translated using Weblate (Hindi)
Currently translated at 85.0% (394 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-12-22 19:00:34 +00:00
c1f422e325 chore(i18n): Translated using Weblate (Persian)
Currently translated at 98.2% (455 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fa/
2025-12-22 19:00:33 +00:00
ffaaba29d7 chore(i18n): Translated using Weblate (Tamil)
Currently translated at 98.2% (455 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ta/
2025-12-22 19:00:31 +00:00
9cad841efb chore(i18n): Translated using Weblate (Bosnian)
Currently translated at 27.8% (129 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bs/
2025-12-22 19:00:30 +00:00
324ab09b5d chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-12-22 19:00:28 +00:00
0b5e9e923b chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-12-22 19:00:27 +00:00
f2308e567d chore(i18n): Translated using Weblate (French)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-12-22 19:00:26 +00:00
1466c6451b chore(i18n): Translated using Weblate (Swedish)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-12-22 19:00:23 +00:00
598c708e92 chore(i18n): Translated using Weblate (German)
Currently translated at 99.7% (462 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-12-22 19:00:22 +00:00
1f903b4f75 chore(i18n): Translated using Weblate (Russian)
Currently translated at 98.2% (455 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-12-22 19:00:20 +00:00
7951b17877 chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 98.7% (457 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-12-21 18:00:36 +00:00
2a39b7315b chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-12-21 18:00:35 +00:00
8b35a60997 chore: add svg version of icon 2025-12-20 21:58:50 +09:00
696ff0fc7a Improved compatibility 2025-12-20 21:57:47 +09:00
86 changed files with 1380 additions and 631 deletions

View File

@ -1,3 +1,17 @@
<div align="center" markdown="1">
<sup>Special thanks to:</sup>
<br>
<br>
<a href="https://go.warp.dev/pear-desktop">
<img alt="Warp sponsorship" width="400" src="https://github.com/user-attachments/assets/8307ea56-e872-494a-8a9c-de0e296a06ed" />
</a>
### [Warp, built for coding with multiple AI agents](https://go.warp.dev/pear-desktop)
[Available for macOS, Linux, & Windows](https://go.warp.dev/pear-desktop)<br>
</div>
<hr>
<div align="center">
# :pear: Pear Desktop
@ -55,7 +69,7 @@
You can help with translation on [Hosted Weblate](https://bit.ly/48n5YF7).
<a href="https://bit.ly/48n5YF7/">
<a href="https://bit.ly/48n5YF7">
<img src="https://bit.ly/4q83L6S" alt="translation status" />
<img src="https://bit.ly/4h3zBxo" alt="translation status 2" />
</a>

View File

@ -0,0 +1,35 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d_18_2)">
<circle cx="512" cy="512" r="410" fill="url(#paint0_linear_18_2)"/>
<circle cx="512" cy="512" r="402" stroke="url(#paint1_radial_18_2)" stroke-opacity="0.5" stroke-width="16"/>
</g>
<path d="M675 505.072C680.333 508.152 680.333 515.849 675 518.928L436.5 656.626C431.167 659.705 424.5 655.857 424.5 649.698V374.302C424.5 368.24 430.96 364.415 436.249 367.234L436.5 367.374L675 505.072Z" fill="url(#paint2_linear_18_2)" stroke="url(#paint3_linear_18_2)" stroke-width="8" stroke-linejoin="round"/>
<defs>
<filter id="filter0_d_18_2" x="78" y="90" width="868" height="868" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="12"/>
<feGaussianBlur stdDeviation="12"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.866667 0 0 0 0 0.141176 0 0 0 0 0.462745 0 0 0 0.4 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_18_2"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_18_2" result="shape"/>
</filter>
<linearGradient id="paint0_linear_18_2" x1="102" y1="102" x2="922" y2="922" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF632F"/>
<stop offset="1" stop-color="#DC148C"/>
</linearGradient>
<radialGradient id="paint1_radial_18_2" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(512 512) rotate(45) scale(579.828)">
<stop offset="0.68" stop-color="white" stop-opacity="0"/>
<stop offset="0.72" stop-color="white"/>
</radialGradient>
<linearGradient id="paint2_linear_18_2" x1="512" y1="329" x2="512" y2="695" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0.4"/>
</linearGradient>
<linearGradient id="paint3_linear_18_2" x1="512" y1="329" x2="512" y2="695" gradientUnits="userSpaceOnUse">
<stop stop-color="white" stop-opacity="0"/>
<stop offset="1" stop-color="white" stop-opacity="0.5"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,67 @@
{
"fill" : {
"linear-gradient" : [
"display-p3:1.00000,1.00000,1.00000,1.00000",
"srgb:0.84314,0.84314,0.84314,1.00000"
],
"orientation" : {
"start" : {
"x" : 0.5,
"y" : 0
},
"stop" : {
"x" : 0.5,
"y" : 0.7
}
}
},
"groups" : [
{
"blur-material" : null,
"hidden" : false,
"layers" : [
{
"blend-mode-specializations" : [
{
"appearance" : "dark",
"value" : "normal"
}
],
"image-name" : "SVG Image.svg",
"name" : "transparent-icon",
"opacity-specializations" : [
{
"value" : 1
},
{
"appearance" : "dark",
"value" : 1
}
]
}
],
"name" : "group",
"opacity-specializations" : [
{
"appearance" : "dark",
"value" : 0.8
}
],
"shadow" : {
"kind" : "layer-color",
"opacity" : 0.5
},
"specular" : true,
"translucency" : {
"enabled" : false,
"value" : 0.5
}
}
],
"supported-platforms" : {
"circles" : [
"watchOS"
],
"squares" : "shared"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
assets/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 KiB

40
assets/icon.svg Normal file
View File

@ -0,0 +1,40 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d_18_2)">
<circle cx="512" cy="512" r="410" fill="url(#paint0_linear_18_2)" />
<circle cx="512" cy="512" r="402" stroke="url(#paint1_radial_18_2)" stroke-opacity="0.5" stroke-width="16" />
</g>
<path
d="M675 505.072C680.333 508.152 680.333 515.849 675 518.928L436.5 656.626C431.167 659.705 424.5 655.857 424.5 649.698V374.302C424.5 368.24 430.96 364.415 436.249 367.234L436.5 367.374L675 505.072Z"
fill="url(#paint2_linear_18_2)" stroke="url(#paint3_linear_18_2)" stroke-width="8" stroke-linejoin="round" />
<defs>
<filter id="filter0_d_18_2" x="78" y="90" width="868" height="868" filterUnits="userSpaceOnUse"
color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix" />
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
result="hardAlpha" />
<feOffset dy="12" />
<feGaussianBlur stdDeviation="12" />
<feComposite in2="hardAlpha" operator="out" />
<feColorMatrix type="matrix" values="0 0 0 0 0.866667 0 0 0 0 0.141176 0 0 0 0 0.462745 0 0 0 0.4 0" />
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_18_2" />
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_18_2" result="shape" />
</filter>
<linearGradient id="paint0_linear_18_2" x1="102" y1="102" x2="922" y2="922" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF632F" />
<stop offset="1" stop-color="#DC148C" />
</linearGradient>
<radialGradient id="paint1_radial_18_2" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse"
gradientTransform="translate(512 512) rotate(45) scale(579.828)">
<stop offset="0.68" stop-color="white" stop-opacity="0" />
<stop offset="0.72" stop-color="white" />
</radialGradient>
<linearGradient id="paint2_linear_18_2" x1="512" y1="329" x2="512" y2="695" gradientUnits="userSpaceOnUse">
<stop stop-color="white" />
<stop offset="1" stop-color="white" stop-opacity="0.4" />
</linearGradient>
<linearGradient id="paint3_linear_18_2" x1="512" y1="329" x2="512" y2="695" gradientUnits="userSpaceOnUse">
<stop stop-color="white" stop-opacity="0" />
<stop offset="1" stop-color="white" stop-opacity="0.5" />
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
assets/tray-paused.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
assets/tray-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
assets/tray.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,5 +1,5 @@
appId: com.github.th-ch.pear-desktop
productName: Pear Desktop
appId: "com.github.th-ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063"
productName: "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063"
files:
- '!*'
- dist
@ -20,7 +20,7 @@ mac:
arch:
- x64
- arm64
icon: assets/generated/icons/mac/icon.icns
icon: assets/generated/icons/mac/icon.icon
compression: maximum
win:
icon: assets/generated/icons/win/icon.ico
@ -43,7 +43,7 @@ linux:
category: AudioVideo
desktop:
entry:
StartupWMClass: com.github.th_ch.pear_desktop
StartupWMClass: "com.github.th_ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u005f\u006d\u0075\u0073\u0069\u0063"
target:
- target: AppImage
arch:
@ -76,14 +76,10 @@ linux:
- arm64
- armv7l
appImage:
description: >-
Pear Desktop App bundled with custom plugins (and built-in ad
blocker / downloader)
description: "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App bundled with custom plugins"
category: AudioVideo
flatpak:
description: >-
Pear Desktop App bundled with custom plugins (and built-in ad
blocker / downloader)
description: "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App bundled with custom plugins"
category: AudioVideo
runtimeVersion: '24.08'
baseVersion: '24.08'
@ -98,7 +94,7 @@ flatpak:
- '--talk-name=org.freedesktop.Notifications'
- '--talk-name=org.gnome.SessionManager'
- '--talk-name=org.kde.StatusNotifierWatcher'
- '--own-name=org.mpris.MediaPlayer2.PearDesktop.*'
- "--own-name=org.mpris.MediaPlayer2.\u0059\u006f\u0075\u0074\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063.*"
deb:
depends:
- libgtk-3-0

View File

@ -18,51 +18,89 @@ export default tsEslint.config(
{
plugins: {
stylistic,
importPlugin
importPlugin,
},
languageOptions: {
parser: tsEslint.parser,
parserOptions: {
project: true,
project: ['tsconfig.json', 'tsconfig.test.json'],
sourceType: 'module',
ecmaVersion: 'latest'
}
ecmaVersion: 'latest',
},
},
rules: {
'stylistic/arrow-parens': ['error', 'always'],
'stylistic/object-curly-spacing': ['error', 'always'],
'stylistic/jsx-pascal-case': 'error',
'stylistic/jsx-curly-spacing': ['error', { when: 'never', children: true }],
'stylistic/jsx-curly-spacing': [
'error',
{ when: 'never', children: true },
],
'stylistic/jsx-sort-props': 'error',
'prettier/prettier': ['error', { singleQuote: true, semi: true, tabWidth: 2, trailingComma: 'all', quoteProps: 'preserve' }],
'prettier/prettier': [
'error',
{
singleQuote: true,
semi: true,
tabWidth: 2,
trailingComma: 'all',
quoteProps: 'preserve',
},
],
'@typescript-eslint/no-floating-promises': 'off',
'@typescript-eslint/no-misused-promises': ['off', { checksVoidReturn: false }],
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
'@typescript-eslint/no-misused-promises': [
'off',
{ checksVoidReturn: false },
],
'@typescript-eslint/no-unused-vars': [
'warn',
{ argsIgnorePattern: '^_' },
],
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/consistent-type-imports': ['error', {
'@typescript-eslint/consistent-type-imports': [
'error',
{
fixStyle: 'inline-type-imports',
prefer: 'type-imports',
disallowTypeAnnotations: false,
}],
},
],
'importPlugin/first': 'error',
'importPlugin/newline-after-import': 'off',
'importPlugin/no-default-export': 'off',
'importPlugin/no-duplicates': 'error',
'importPlugin/no-unresolved': ['error', { ignore: ['^virtual:', '\\?inline$', '\\?raw$', '\\?asset&asarUnpack'] }],
'importPlugin/order': ['error', {
'groups': ['builtin', 'external', ['internal', 'index', 'sibling'], 'parent', 'type'],
'importPlugin/no-unresolved': [
'error',
{
ignore: ['^virtual:', '\\?inline$', '\\?raw$', '\\?asset&asarUnpack'],
},
],
'importPlugin/order': [
'error',
{
'groups': [
'builtin',
'external',
['internal', 'index', 'sibling'],
'parent',
'type',
],
'newlines-between': 'always-and-inside-groups',
'alphabetize': { order: 'ignore', caseInsensitive: false }
}],
'alphabetize': { order: 'ignore', caseInsensitive: false },
},
],
'importPlugin/prefer-default-export': 'off',
'camelcase': ['error', { properties: 'never' }],
'class-methods-use-this': 'off',
'stylistic/lines-around-comment': ['error', {
'stylistic/lines-around-comment': [
'error',
{
beforeBlockComment: false,
afterBlockComment: false,
beforeLineComment: false,
afterLineComment: false,
}],
},
],
'stylistic/max-len': 'off',
'stylistic/no-mixed-operators': 'warn', // prettier does not support no-mixed-operators
'stylistic/no-multi-spaces': ['error', { ignoreEOLComments: true }],
@ -70,16 +108,20 @@ export default tsEslint.config(
'no-void': 'error',
'no-empty': 'off',
'prefer-promise-reject-errors': 'off',
'stylistic/quotes': ['error', 'single', {
'stylistic/quotes': [
'error',
'single',
{
avoidEscape: true,
allowTemplateLiterals: false,
}],
allowTemplateLiterals: 'never',
},
],
'stylistic/quote-props': ['error', 'consistent'],
'stylistic/semi': ['error', 'always'],
},
settings: {
'import/parsers': {
'@typescript-eslint/parser': ['.ts']
'@typescript-eslint/parser': ['.ts'],
},
'import/resolver': {
typescript: {},

View File

@ -1,9 +1,9 @@
{
"name": "pear-music",
"desktopName": "com.github.th_ch.pear_music",
"productName": "Pear Desktop",
"name": "\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063",
"desktopName": "com.github.th_ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u005f\u006d\u0075\u0073\u0069\u0063",
"productName": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063",
"version": "3.11.0",
"description": "Pear Desktop App - including custom plugins",
"description": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App - including custom plugins",
"main": "./dist/main/index.js",
"type": "module",
"license": "MIT",
@ -78,7 +78,7 @@
"@hono/zod-openapi": "1.2.0",
"@hono/zod-validator": "0.7.6",
"@jellybrick/dbus-next": "0.10.3",
"@jellybrick/electron-better-web-request": "1.0.4",
"@jellybrick/electron-better-web-request": "2.0.0",
"@jellybrick/mpris-service": "2.1.5",
"@jimp/plugin-color": "1.6.0",
"@mdui/icons": "^1.0.3",
@ -149,13 +149,13 @@
"@types/html-to-text": "9.0.4",
"@types/semver": "7.7.1",
"@types/trusted-types": "2.0.7",
"bufferutil": "4.0.9",
"bufferutil": "4.1.0",
"builtin-modules": "5.0.0",
"cross-env": "10.0.0",
"del-cli": "6.0.0",
"discord-api-types": "0.38.37",
"electron": "38.7.2",
"electron-builder": "26.0.12",
"electron-builder": "26.4.0",
"electron-builder-squirrel-windows": "26.0.12",
"electron-devtools-installer": "4.0.0",
"electron-vite": "4.0.1",
@ -168,7 +168,6 @@
"eslint-plugin-solid": "0.14.5",
"glob": "11.1.0",
"node-gyp": "11.4.2",
"playwright": "1.55.1",
"ts-morph": "27.0.2",
"typescript": "5.9.3",
"typescript-eslint": "8.43.0",

428
pnpm-lock.yaml generated
View File

@ -68,7 +68,7 @@ importers:
version: 1.19.7(hono@4.10.3)
'@hono/node-ws':
specifier: 1.2.0
version: 1.2.0(@hono/node-server@1.19.7(hono@4.10.3))(bufferutil@4.0.9)(hono@4.10.3)(utf-8-validate@6.0.6)
version: 1.2.0(@hono/node-server@1.19.7(hono@4.10.3))(bufferutil@4.1.0)(hono@4.10.3)(utf-8-validate@6.0.6)
'@hono/swagger-ui':
specifier: 0.5.2
version: 0.5.2(hono@4.10.3)
@ -82,8 +82,8 @@ importers:
specifier: 0.10.3
version: 0.10.3
'@jellybrick/electron-better-web-request':
specifier: 1.0.4
version: 1.0.4
specifier: 2.0.0
version: 2.0.0
'@jellybrick/mpris-service':
specifier: 2.1.5
version: 2.1.5
@ -98,7 +98,7 @@ importers:
version: 1.1.1
'@xhayper/discord-rpc':
specifier: 1.3.0
version: 1.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.6)
version: 1.3.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
async-mutex:
specifier: 0.5.0
version: 0.5.0
@ -267,7 +267,7 @@ importers:
version: 1.55.0
'@stylistic/eslint-plugin':
specifier: 5.3.1
version: 5.3.1(eslint@9.35.0)
version: 5.3.1(eslint@9.35.0(jiti@2.6.1))
'@total-typescript/ts-reset':
specifier: 0.6.1
version: 0.6.1
@ -287,8 +287,8 @@ importers:
specifier: 2.0.7
version: 2.0.7
bufferutil:
specifier: 4.0.9
version: 4.0.9
specifier: 4.1.0
version: 4.1.0
builtin-modules:
specifier: 5.0.0
version: 5.0.0
@ -305,47 +305,44 @@ importers:
specifier: 38.7.2
version: 38.7.2
electron-builder:
specifier: 26.0.12
version: 26.0.12(electron-builder-squirrel-windows@26.0.12)
specifier: 26.4.0
version: 26.4.0(electron-builder-squirrel-windows@26.0.12)
electron-builder-squirrel-windows:
specifier: 26.0.12
version: 26.0.12(dmg-builder@26.0.12)
version: 26.0.12(dmg-builder@26.4.0)
electron-devtools-installer:
specifier: 4.0.0
version: 4.0.0
electron-vite:
specifier: 4.0.1
version: 4.0.1(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1))
version: 4.0.1(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1))
eslint:
specifier: 9.35.0
version: 9.35.0
version: 9.35.0(jiti@2.6.1)
eslint-config-prettier:
specifier: 10.1.8
version: 10.1.8(eslint@9.35.0)
version: 10.1.8(eslint@9.35.0(jiti@2.6.1))
eslint-import-resolver-exports:
specifier: 1.0.0-beta.5
version: 1.0.0-beta.5(eslint-plugin-import@2.32.0)(eslint@9.35.0)
version: 1.0.0-beta.5(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1))
eslint-import-resolver-typescript:
specifier: 4.4.4
version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0)
version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1))
eslint-plugin-import:
specifier: 2.32.0
version: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
version: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1))
eslint-plugin-prettier:
specifier: 5.5.4
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.35.0))(eslint@9.35.0)(prettier@3.6.2)
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.35.0(jiti@2.6.1)))(eslint@9.35.0(jiti@2.6.1))(prettier@3.6.2)
eslint-plugin-solid:
specifier: 0.14.5
version: 0.14.5(eslint@9.35.0)(typescript@5.9.3)
version: 0.14.5(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
glob:
specifier: 11.1.0
version: 11.1.0
node-gyp:
specifier: 11.4.2
version: 11.4.2
playwright:
specifier: 1.55.1
version: 1.55.1
ts-morph:
specifier: 27.0.2
version: 27.0.2
@ -354,25 +351,25 @@ importers:
version: 5.9.3
typescript-eslint:
specifier: 8.43.0
version: 8.43.0(eslint@9.35.0)(typescript@5.9.3)
version: 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
utf-8-validate:
specifier: 6.0.6
version: 6.0.6
vite:
specifier: npm:rolldown-vite@7.3.0
version: rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)
version: rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)
vite-plugin-inspect:
specifier: 11.3.3
version: 11.3.3(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1))
version: 11.3.3(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1))
vite-plugin-resolve:
specifier: 2.5.2
version: 2.5.2
vite-plugin-solid:
specifier: 2.11.10
version: 2.11.10(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1))(solid-js@1.9.9)
version: 2.11.10(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1))(solid-js@1.9.9)
ws:
specifier: 8.18.3
version: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6)
version: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
packages:
@ -547,11 +544,21 @@ packages:
engines: {node: '>=12.0.0'}
hasBin: true
'@electron/osx-sign@1.3.3':
resolution: {integrity: sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==}
engines: {node: '>=12.0.0'}
hasBin: true
'@electron/rebuild@3.7.0':
resolution: {integrity: sha512-VW++CNSlZwMYP7MyXEbrKjpzEwhB5kDNbzGtiPEjwYysqyTCF+YbNJ210Dj3AjWsGSV4iEEwNkmJN9yGZmVvmw==}
engines: {node: '>=12.13.0'}
hasBin: true
'@electron/rebuild@4.0.1':
resolution: {integrity: sha512-iMGXb6Ib7H/Q3v+BKZJoETgF9g6KMNZVbsO4b7Dmpgb5qTFqyFTzqW9F3TOSHdybv2vKYKzSS9OiZL+dcJb+1Q==}
engines: {node: '>=22.12.0'}
hasBin: true
'@electron/remote@2.1.3':
resolution: {integrity: sha512-XlpxC8S4ttj/v2d+PKp9na/3Ev8bV7YWNL7Cw5b9MAWgTphEml7iYgbc7V0r9D6yDOfOkj06bchZgOZdlWJGNA==}
peerDependencies:
@ -886,8 +893,8 @@ packages:
'@jellybrick/dbus-next@0.10.3':
resolution: {integrity: sha512-7MLAiQS/UCa8V8/G3eyoWIzMhCUv3GaNxIpclu1wauDGUsL48ZT0CrilEO739gP/bviPiCUhy00DtvCNmYfPhA==}
'@jellybrick/electron-better-web-request@1.0.4':
resolution: {integrity: sha512-vL2lv7Gz8BWgCpwXb3ha17oaEmJqG5ZLdVWssAkA/0PGPMCWH2lLWq7vDymyTswmZ+zKpfOdzwTomvMqn9nElg==}
'@jellybrick/electron-better-web-request@2.0.0':
resolution: {integrity: sha512-BatvX5xGdn4vNGCHaIsoCQZWe65C0GD4xZ+wNTtEVJDjSAN+wbdfUmPKwuog+GKw7YqmilPI7LKO0a9rjTRk9Q==}
'@jellybrick/mpris-service@2.1.5':
resolution: {integrity: sha512-B6wOeS7aHO7BIJRFHbDA4h5tJHeQHf2VzVwIi2rN2wsB0Uf9wsITebGfnknPypZ1ZxRjobDkeTG4EKdBGXwSww==}
@ -1622,6 +1629,13 @@ packages:
dmg-builder: 26.0.12
electron-builder-squirrel-windows: 26.0.12
app-builder-lib@26.4.0:
resolution: {integrity: sha512-Uas6hNe99KzP3xPWxh5LGlH8kWIVjZixzmMJHNB9+6hPyDpjc7NQMkVgi16rQDdpCFy22ZU5sp8ow7tvjeMgYQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
dmg-builder: 26.4.0
electron-builder-squirrel-windows: 26.4.0
arch@2.2.0:
resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==}
@ -1771,17 +1785,24 @@ packages:
buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
bufferutil@4.0.9:
resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==}
bufferutil@4.1.0:
resolution: {integrity: sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==}
engines: {node: '>=6.14.2'}
builder-util-runtime@9.3.1:
resolution: {integrity: sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==}
engines: {node: '>=12.0.0'}
builder-util-runtime@9.5.1:
resolution: {integrity: sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ==}
engines: {node: '>=12.0.0'}
builder-util@26.0.11:
resolution: {integrity: sha512-xNjXfsldUEe153h1DraD0XvDOpqGR0L5eKFkdReB7eFW5HqysDZFfly4rckda6y9dF39N3pkPlOblcfHKGw+uA==}
builder-util@26.3.4:
resolution: {integrity: sha512-aRn88mYMktHxzdqDMF6Ayj0rKoX+ZogJ75Ck7RrIqbY/ad0HBvnS2xA4uHfzrGr5D2aLL3vU6OBEH4p0KMV2XQ==}
builtin-modules@5.0.0:
resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==}
engines: {node: '>=18.20'}
@ -1874,6 +1895,10 @@ packages:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
ci-info@4.3.1:
resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==}
engines: {node: '>=8'}
classcat@5.0.5:
resolution: {integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==}
@ -2151,8 +2176,8 @@ packages:
discord-api-types@0.38.37:
resolution: {integrity: sha512-Cv47jzY1jkGkh5sv0bfHYqGgKOWO1peOrGMkDFM4UmaGMOTgOW8QSexhvixa9sVOiz8MnVOBryWYyw/CEVhj7w==}
dmg-builder@26.0.12:
resolution: {integrity: sha512-59CAAjAhTaIMCN8y9kD573vDkxbs1uhDcrFLHSgutYdPcGOU35Rf95725snvzEOy4BFB7+eLJ8djCNPmGwG67w==}
dmg-builder@26.4.0:
resolution: {integrity: sha512-ce4Ogns4VMeisIuCSK0C62umG0lFy012jd8LMZ6w/veHUeX4fqfDrGe+HTWALAEwK6JwKP+dhPvizhArSOsFbg==}
dmg-license@1.0.11:
resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==}
@ -2216,8 +2241,8 @@ packages:
electron-builder-squirrel-windows@26.0.12:
resolution: {integrity: sha512-kpwXM7c/ayRUbYVErQbsZ0nQZX4aLHQrPEG9C4h9vuJCXylwFH8a7Jgi2VpKIObzCXO7LKHiCw4KdioFLFOgqA==}
electron-builder@26.0.12:
resolution: {integrity: sha512-cD1kz5g2sgPTMFHjLxfMjUK5JABq3//J4jPswi93tOPFz6btzXYtK5NrDt717NRbukCUDOrrvmYVOWERlqoiXA==}
electron-builder@26.4.0:
resolution: {integrity: sha512-FCUqvdq2AULL+Db2SUGgjOYTbrgkPxZtCjqIZGnjH9p29pTWyesQqBIfvQBKa6ewqde87aWl49n/WyI/NyUBog==}
engines: {node: '>=14.0.0'}
hasBin: true
@ -2247,6 +2272,9 @@ packages:
electron-publish@26.0.11:
resolution: {integrity: sha512-a8QRH0rAPIWH9WyyS5LbNvW9Ark6qe63/LqDB7vu2JXYpi0Gma5Q60Dh4tmTqhOBQt0xsrzD8qE7C+D7j+B24A==}
electron-publish@26.3.4:
resolution: {integrity: sha512-5/ouDPb73SkKuay2EXisPG60LTFTMNHWo2WLrK5GDphnWK9UC+yzYrzVeydj078Yk4WUXi0+TaaZsNd6Zt5k/A==}
electron-store@10.1.0:
resolution: {integrity: sha512-oL8bRy7pVCLpwhmXy05Rh/L6O93+k9t6dqSw0+MckIc3OmCTZm6Mp04Q4f/J0rtu84Ky6ywkR8ivtGOmrq+16w==}
engines: {node: '>=20'}
@ -3171,6 +3199,10 @@ packages:
resolution: {integrity: sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==}
engines: {node: '>=18'}
jiti@2.6.1:
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
jpeg-js@0.4.4:
resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==}
@ -3609,6 +3641,10 @@ packages:
resolution: {integrity: sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==}
engines: {node: '>=10'}
node-abi@4.24.0:
resolution: {integrity: sha512-u2EC1CeNe25uVtX3EZbdQ275c74zdZmmpzrHEQh2aIYqoVjlglfUpOX9YY85x1nlBydEKDVaSmMNhR7N82Qj8A==}
engines: {node: '>=22.12.0'}
node-addon-api@1.7.2:
resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==}
@ -3863,21 +3899,11 @@ packages:
engines: {node: '>=18'}
hasBin: true
playwright-core@1.55.1:
resolution: {integrity: sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==}
engines: {node: '>=18'}
hasBin: true
playwright@1.55.0:
resolution: {integrity: sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==}
engines: {node: '>=18'}
hasBin: true
playwright@1.55.1:
resolution: {integrity: sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==}
engines: {node: '>=18'}
hasBin: true
plist@3.1.0:
resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==}
engines: {node: '>=10.4.0'}
@ -4428,10 +4454,12 @@ packages:
tar@6.2.1:
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
engines: {node: '>=10'}
deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me
tar@7.4.3:
resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==}
engines: {node: '>=18'}
deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me
temp-file@3.4.0:
resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==}
@ -4632,8 +4660,8 @@ packages:
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
uuid@9.0.1:
resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
uuid@13.0.0:
resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==}
hasBin: true
validate-html-nesting@1.2.3:
@ -5093,6 +5121,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@electron/osx-sign@1.3.3':
dependencies:
compare-version: 0.1.2
debug: 4.4.1
fs-extra: 10.1.0
isbinaryfile: 4.0.10
minimist: 1.2.8
plist: 3.1.0
transitivePeerDependencies:
- supports-color
'@electron/rebuild@3.7.0':
dependencies:
'@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2
@ -5113,6 +5152,25 @@ snapshots:
- bluebird
- supports-color
'@electron/rebuild@4.0.1':
dependencies:
'@malept/cross-spawn-promise': 2.0.0
chalk: 4.1.2
debug: 4.4.1
detect-libc: 2.0.4
got: 11.8.6
graceful-fs: 4.2.11
node-abi: 4.24.0
node-api-version: 0.2.1
node-gyp: 11.4.2
ora: 5.4.1
read-binary-file-arch: 1.0.6
semver: 7.7.3
tar: 6.2.1
yargs: 17.7.2
transitivePeerDependencies:
- supports-color
'@electron/remote@2.1.3(electron@38.7.2)':
dependencies:
electron: 38.7.2
@ -5235,9 +5293,9 @@ snapshots:
'@esbuild/win32-x64@0.25.9':
optional: true
'@eslint-community/eslint-utils@4.8.0(eslint@9.35.0)':
'@eslint-community/eslint-utils@4.8.0(eslint@9.35.0(jiti@2.6.1))':
dependencies:
eslint: 9.35.0
eslint: 9.35.0(jiti@2.6.1)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.1': {}
@ -5338,11 +5396,11 @@ snapshots:
dependencies:
hono: 4.10.3
'@hono/node-ws@1.2.0(@hono/node-server@1.19.7(hono@4.10.3))(bufferutil@4.0.9)(hono@4.10.3)(utf-8-validate@6.0.6)':
'@hono/node-ws@1.2.0(@hono/node-server@1.19.7(hono@4.10.3))(bufferutil@4.1.0)(hono@4.10.3)(utf-8-validate@6.0.6)':
dependencies:
'@hono/node-server': 1.19.7(hono@4.10.3)
hono: 4.10.3
ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6)
ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@ -5405,10 +5463,10 @@ snapshots:
safe-buffer: 5.2.1
xml2js: 0.6.2
'@jellybrick/electron-better-web-request@1.0.4':
'@jellybrick/electron-better-web-request@2.0.0':
dependencies:
browser-extension-url-match: 1.2.0
uuid: 9.0.1
uuid: 13.0.0
'@jellybrick/mpris-service@2.1.5':
dependencies:
@ -5822,11 +5880,11 @@ snapshots:
dependencies:
solid-js: 1.9.9
'@stylistic/eslint-plugin@5.3.1(eslint@9.35.0)':
'@stylistic/eslint-plugin@5.3.1(eslint@9.35.0(jiti@2.6.1))':
dependencies:
'@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0)
'@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0(jiti@2.6.1))
'@typescript-eslint/types': 8.43.0
eslint: 9.35.0
eslint: 9.35.0(jiti@2.6.1)
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
@ -5951,15 +6009,15 @@ snapshots:
'@types/node': 24.3.0
optional: true
'@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.3))(eslint@9.35.0)(typescript@5.9.3)':
'@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.3)
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.43.0
'@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0)(typescript@5.9.3)
'@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.3)
'@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.43.0
eslint: 9.35.0
eslint: 9.35.0(jiti@2.6.1)
graphemer: 1.4.0
ignore: 7.0.5
natural-compare: 1.4.0
@ -5968,14 +6026,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.3)':
'@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.43.0
'@typescript-eslint/types': 8.43.0
'@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.43.0
debug: 4.4.1
eslint: 9.35.0
eslint: 9.35.0(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@ -5998,13 +6056,13 @@ snapshots:
dependencies:
typescript: 5.9.3
'@typescript-eslint/type-utils@8.43.0(eslint@9.35.0)(typescript@5.9.3)':
'@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 8.43.0
'@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.3)
'@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.3)
'@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
debug: 4.4.1
eslint: 9.35.0
eslint: 9.35.0(jiti@2.6.1)
ts-api-utils: 2.1.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
@ -6028,13 +6086,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@8.43.0(eslint@9.35.0)(typescript@5.9.3)':
'@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0)
'@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0(jiti@2.6.1))
'@typescript-eslint/scope-manager': 8.43.0
'@typescript-eslint/types': 8.43.0
'@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.3)
eslint: 9.35.0
eslint: 9.35.0(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@ -6105,12 +6163,12 @@ snapshots:
'@vladfrangu/async_event_emitter@2.4.6': {}
'@xhayper/discord-rpc@1.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.6)':
'@xhayper/discord-rpc@1.3.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)':
dependencies:
'@discordjs/rest': 2.5.1
'@vladfrangu/async_event_emitter': 2.4.6
discord-api-types: 0.38.37
ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6)
ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@ -6199,7 +6257,7 @@ snapshots:
app-builder-bin@5.0.0-alpha.12: {}
app-builder-lib@26.0.12(dmg-builder@26.0.12)(electron-builder-squirrel-windows@26.0.12):
app-builder-lib@26.0.12(dmg-builder@26.4.0)(electron-builder-squirrel-windows@26.0.12):
dependencies:
'@develar/schema-utils': 2.6.5
'@electron/asar': 3.2.18
@ -6216,11 +6274,11 @@ snapshots:
chromium-pickle-js: 0.2.0
config-file-ts: 0.2.8-rc1
debug: 4.4.1
dmg-builder: 26.0.12(electron-builder-squirrel-windows@26.0.12)
dmg-builder: 26.4.0(electron-builder-squirrel-windows@26.0.12)
dotenv: 16.6.1
dotenv-expand: 11.0.7
ejs: 3.1.10
electron-builder-squirrel-windows: 26.0.12(dmg-builder@26.0.12)
electron-builder-squirrel-windows: 26.0.12(dmg-builder@26.4.0)
electron-publish: 26.0.11
fs-extra: 10.1.0
hosted-git-info: 4.1.0
@ -6240,6 +6298,47 @@ snapshots:
- bluebird
- supports-color
app-builder-lib@26.4.0(dmg-builder@26.4.0)(electron-builder-squirrel-windows@26.0.12):
dependencies:
'@develar/schema-utils': 2.6.5
'@electron/asar': 3.4.1
'@electron/fuses': 1.8.0
'@electron/notarize': 2.5.0
'@electron/osx-sign': 1.3.3
'@electron/rebuild': 4.0.1
'@electron/universal': 3.0.2
'@malept/flatpak-bundler': 0.4.0(patch_hash=c787371eeb2af011ea934e8818a0dad6d7dcb2df31bbb1686babc7231af0183c)
'@types/fs-extra': 9.0.13
async-exit-hook: 2.0.1
builder-util: 26.3.4
builder-util-runtime: 9.5.1
chromium-pickle-js: 0.2.0
ci-info: 4.3.1
debug: 4.4.1
dmg-builder: 26.4.0(electron-builder-squirrel-windows@26.0.12)
dotenv: 16.6.1
dotenv-expand: 11.0.7
ejs: 3.1.10
electron-builder-squirrel-windows: 26.0.12(dmg-builder@26.4.0)
electron-publish: 26.3.4
fs-extra: 10.1.0
hosted-git-info: 4.1.0
isbinaryfile: 5.0.4
jiti: 2.6.1
js-yaml: 4.1.0
json5: 2.2.3
lazy-val: 1.0.5
minimatch: 10.1.1
plist: 3.1.0
resedit: 1.7.2
semver: 7.7.3
tar: 6.2.1
temp-file: 3.4.0
tiny-async-pool: 1.3.0
which: 5.0.0
transitivePeerDependencies:
- supports-color
arch@2.2.0: {}
arg@5.0.2: {}
@ -6418,7 +6517,7 @@ snapshots:
base64-js: 1.5.1
ieee754: 1.2.1
bufferutil@4.0.9:
bufferutil@4.1.0:
dependencies:
node-gyp-build: 4.8.4
@ -6429,6 +6528,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
builder-util-runtime@9.5.1:
dependencies:
debug: 4.4.1
sax: 1.4.1
transitivePeerDependencies:
- supports-color
builder-util@26.0.11:
dependencies:
7zip-bin: 5.2.0
@ -6451,6 +6557,27 @@ snapshots:
transitivePeerDependencies:
- supports-color
builder-util@26.3.4:
dependencies:
7zip-bin: 5.2.0
'@types/debug': 4.1.12
app-builder-bin: 5.0.0-alpha.12
builder-util-runtime: 9.5.1
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.4.1
fs-extra: 10.1.0
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6
js-yaml: 4.1.0
sanitize-filename: 1.6.3
source-map-support: 0.5.21
stat-mode: 1.0.0
temp-file: 3.4.0
tiny-async-pool: 1.3.0
transitivePeerDependencies:
- supports-color
builtin-modules@5.0.0: {}
bundle-name@4.1.0:
@ -6565,6 +6692,8 @@ snapshots:
ci-info@3.9.0: {}
ci-info@4.3.1: {}
classcat@5.0.5: {}
clean-stack@2.2.0: {}
@ -6848,18 +6977,16 @@ snapshots:
discord-api-types@0.38.37: {}
dmg-builder@26.0.12(electron-builder-squirrel-windows@26.0.12):
dmg-builder@26.4.0(electron-builder-squirrel-windows@26.0.12):
dependencies:
app-builder-lib: 26.0.12(dmg-builder@26.0.12)(electron-builder-squirrel-windows@26.0.12)
builder-util: 26.0.11
builder-util-runtime: 9.3.1
app-builder-lib: 26.4.0(dmg-builder@26.4.0)(electron-builder-squirrel-windows@26.0.12)
builder-util: 26.3.4
fs-extra: 10.1.0
iconv-lite: 0.6.3
js-yaml: 4.1.0
optionalDependencies:
dmg-license: 1.0.11
transitivePeerDependencies:
- bluebird
- electron-builder-squirrel-windows
- supports-color
@ -6927,9 +7054,9 @@ snapshots:
dependencies:
jake: 10.9.4
electron-builder-squirrel-windows@26.0.12(dmg-builder@26.0.12):
electron-builder-squirrel-windows@26.0.12(dmg-builder@26.4.0):
dependencies:
app-builder-lib: 26.0.12(dmg-builder@26.0.12)(electron-builder-squirrel-windows@26.0.12)
app-builder-lib: 26.0.12(dmg-builder@26.4.0)(electron-builder-squirrel-windows@26.0.12)
builder-util: 26.0.11
electron-winstaller: 5.4.0
transitivePeerDependencies:
@ -6937,20 +7064,19 @@ snapshots:
- dmg-builder
- supports-color
electron-builder@26.0.12(electron-builder-squirrel-windows@26.0.12):
electron-builder@26.4.0(electron-builder-squirrel-windows@26.0.12):
dependencies:
app-builder-lib: 26.0.12(dmg-builder@26.0.12)(electron-builder-squirrel-windows@26.0.12)
builder-util: 26.0.11
builder-util-runtime: 9.3.1
app-builder-lib: 26.4.0(dmg-builder@26.4.0)(electron-builder-squirrel-windows@26.0.12)
builder-util: 26.3.4
builder-util-runtime: 9.5.1
chalk: 4.1.2
dmg-builder: 26.0.12(electron-builder-squirrel-windows@26.0.12)
ci-info: 4.3.1
dmg-builder: 26.4.0(electron-builder-squirrel-windows@26.0.12)
fs-extra: 10.1.0
is-ci: 3.0.1
lazy-val: 1.0.5
simple-update-notifier: 2.0.0
yargs: 17.7.2
transitivePeerDependencies:
- bluebird
- electron-builder-squirrel-windows
- supports-color
@ -6998,6 +7124,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
electron-publish@26.3.4:
dependencies:
'@types/fs-extra': 9.0.13
builder-util: 26.3.4
builder-util-runtime: 9.5.1
chalk: 4.1.2
form-data: 4.0.4
fs-extra: 10.1.0
lazy-val: 1.0.5
mime: 2.6.0
transitivePeerDependencies:
- supports-color
electron-store@10.1.0:
dependencies:
conf: 14.0.0
@ -7026,7 +7165,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
electron-vite@4.0.1(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)):
electron-vite@4.0.1(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)):
dependencies:
'@babel/core': 7.28.3
'@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.3)
@ -7034,7 +7173,7 @@ snapshots:
esbuild: 0.25.9
magic-string: 0.30.17
picocolors: 1.1.1
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
@ -7219,9 +7358,9 @@ snapshots:
escape-string-regexp@5.0.0: {}
eslint-config-prettier@10.1.8(eslint@9.35.0):
eslint-config-prettier@10.1.8(eslint@9.35.0(jiti@2.6.1)):
dependencies:
eslint: 9.35.0
eslint: 9.35.0(jiti@2.6.1)
eslint-import-context@0.1.9(unrs-resolver@1.11.1):
dependencies:
@ -7230,10 +7369,10 @@ snapshots:
optionalDependencies:
unrs-resolver: 1.11.1
eslint-import-resolver-exports@1.0.0-beta.5(eslint-plugin-import@2.32.0)(eslint@9.35.0):
eslint-import-resolver-exports@1.0.0-beta.5(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1)):
dependencies:
eslint: 9.35.0
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
eslint: 9.35.0(jiti@2.6.1)
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1))
resolve.exports: 2.0.3
eslint-import-resolver-node@0.3.9:
@ -7244,10 +7383,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0):
eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1)):
dependencies:
debug: 4.4.1
eslint: 9.35.0
eslint: 9.35.0(jiti@2.6.1)
eslint-import-context: 0.1.9(unrs-resolver@1.11.1)
get-tsconfig: 4.10.1
is-bun-module: 2.0.0
@ -7255,22 +7394,22 @@ snapshots:
tinyglobby: 0.2.15
unrs-resolver: 1.11.1
optionalDependencies:
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0):
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.3)
eslint: 9.35.0
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.35.0(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0)
eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0):
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@ -7279,9 +7418,9 @@ snapshots:
array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
eslint: 9.35.0
eslint: 9.35.0(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@ -7293,25 +7432,25 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.3)
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.35.0))(eslint@9.35.0)(prettier@3.6.2):
eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.35.0(jiti@2.6.1)))(eslint@9.35.0(jiti@2.6.1))(prettier@3.6.2):
dependencies:
eslint: 9.35.0
eslint: 9.35.0(jiti@2.6.1)
prettier: 3.6.2
prettier-linter-helpers: 1.0.0
synckit: 0.11.11
optionalDependencies:
eslint-config-prettier: 10.1.8(eslint@9.35.0)
eslint-config-prettier: 10.1.8(eslint@9.35.0(jiti@2.6.1))
eslint-plugin-solid@0.14.5(eslint@9.35.0)(typescript@5.9.3):
eslint-plugin-solid@0.14.5(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3):
dependencies:
'@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.3)
eslint: 9.35.0
'@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.35.0(jiti@2.6.1)
estraverse: 5.3.0
is-html: 2.0.0
kebab-case: 1.0.2
@ -7330,9 +7469,9 @@ snapshots:
eslint-visitor-keys@4.2.1: {}
eslint@9.35.0:
eslint@9.35.0(jiti@2.6.1):
dependencies:
'@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0)
'@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.21.0
'@eslint/config-helpers': 0.3.1
@ -7367,6 +7506,8 @@ snapshots:
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.4
optionalDependencies:
jiti: 2.6.1
transitivePeerDependencies:
- supports-color
@ -8115,6 +8256,8 @@ snapshots:
'@jimp/types': 1.6.0
'@jimp/utils': 1.6.0
jiti@2.6.1: {}
jpeg-js@0.4.4: {}
js-tokens@4.0.0: {}
@ -8517,6 +8660,10 @@ snapshots:
dependencies:
semver: 7.7.3
node-abi@4.24.0:
dependencies:
semver: 7.7.3
node-addon-api@1.7.2:
optional: true
@ -8775,20 +8922,12 @@ snapshots:
playwright-core@1.55.0: {}
playwright-core@1.55.1: {}
playwright@1.55.0:
dependencies:
playwright-core: 1.55.0
optionalDependencies:
fsevents: 2.3.2
playwright@1.55.1:
dependencies:
playwright-core: 1.55.1
optionalDependencies:
fsevents: 2.3.2
plist@3.1.0:
dependencies:
'@xmldom/xmldom': 0.8.11
@ -8975,7 +9114,7 @@ snapshots:
sprintf-js: 1.1.3
optional: true
rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1):
rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1):
dependencies:
'@oxc-project/runtime': 0.101.0
fdir: 6.5.0(picomatch@4.0.3)
@ -8987,6 +9126,7 @@ snapshots:
optionalDependencies:
'@types/node': 24.3.0
fsevents: 2.3.3
jiti: 2.6.1
yaml: 2.8.1
rolldown@1.0.0-beta.53:
@ -9506,13 +9646,13 @@ snapshots:
possible-typed-array-names: 1.1.0
reflect.getprototypeof: 1.0.10
typescript-eslint@8.43.0(eslint@9.35.0)(typescript@5.9.3):
typescript-eslint@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3):
dependencies:
'@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.3))(eslint@9.35.0)(typescript@5.9.3)
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.3)
'@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.3)
'@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.3)
eslint: 9.35.0
'@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.35.0(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@ -9618,7 +9758,7 @@ snapshots:
util-deprecate@1.0.2: {}
uuid@9.0.1: {}
uuid@13.0.0: {}
validate-html-nesting@1.2.3: {}
@ -9635,17 +9775,17 @@ snapshots:
optionalDependencies:
solid-js: 1.9.9
vite-dev-rpc@1.1.0(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)):
vite-dev-rpc@1.1.0(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)):
dependencies:
birpc: 2.5.0
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)
vite-hot-client: 2.1.0(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1))
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)
vite-hot-client: 2.1.0(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1))
vite-hot-client@2.1.0(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)):
vite-hot-client@2.1.0(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)):
dependencies:
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)
vite-plugin-inspect@11.3.3(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)):
vite-plugin-inspect@11.3.3(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)):
dependencies:
ansis: 4.1.0
debug: 4.4.1
@ -9655,8 +9795,8 @@ snapshots:
perfect-debounce: 2.0.0
sirv: 3.0.1
unplugin-utils: 0.3.0
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)
vite-dev-rpc: 1.1.0(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1))
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)
vite-dev-rpc: 1.1.0(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1))
transitivePeerDependencies:
- supports-color
@ -9664,7 +9804,7 @@ snapshots:
dependencies:
lib-esm: 0.4.2
vite-plugin-solid@2.11.10(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1))(solid-js@1.9.9):
vite-plugin-solid@2.11.10(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1))(solid-js@1.9.9):
dependencies:
'@babel/core': 7.28.3
'@types/babel__core': 7.20.5
@ -9672,14 +9812,14 @@ snapshots:
merge-anything: 5.1.7
solid-js: 1.9.9
solid-refresh: 0.6.3(solid-js@1.9.9)
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)
vitefu: 1.1.1(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1))
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)
vitefu: 1.1.1(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1))
transitivePeerDependencies:
- supports-color
vitefu@1.1.1(rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)):
vitefu@1.1.1(rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)):
optionalDependencies:
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(yaml@2.8.1)
vite: rolldown-vite@7.3.0(@types/node@24.3.0)(jiti@2.6.1)(yaml@2.8.1)
vudio@2.1.1(patch_hash=0e06c2ed11c02bdc490c209fa80070e98517c2735c641f5738b6e15d7dc1959d): {}
@ -9766,9 +9906,9 @@ snapshots:
wrappy@1.0.2: {}
ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6):
ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6):
optionalDependencies:
bufferutil: 4.0.9
bufferutil: 4.1.0
utf-8-validate: 6.0.6
wsl-utils@0.1.0:

View File

@ -112,7 +112,10 @@ const migrations = {
'>=2.1.3'(store: IStore) {
const listenAlong = store.get('plugins.discord.listenAlong');
if (listenAlong !== undefined) {
store.set('plugins.discord.playOnPearMusic', listenAlong);
store.set(
'plugins.discord.playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063',
listenAlong,
);
store.delete('plugins.discord.listenAlong');
}
},

View File

@ -2,6 +2,9 @@ import i18next, { init, t as i18t, changeLanguage } from 'i18next';
import { languageResources } from 'virtual:i18n';
export const APPLICATION_NAME =
'\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063';
export const loadI18n = async () =>
await init({
resources: await languageResources(),

View File

@ -154,7 +154,7 @@
"label": "عنوان نافذة مخصص",
"prompt": {
"label": "ادخل عنوان مخصص للنافذة: (اتركه فارغًا إلغاء التفعيل)",
"placeholder": "مثال: Pear Desktop"
"placeholder": "مثال: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "إعادة تشغيل التطبيق",
"show": "عرض النافدة",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "الوضع المحيطي"
},
"amuse": {
"description": "تكامل دعم Pear Desktop مع ويدجت Amuse لعرض الأغنية التي قيد التشغيل، من إنتاج 6K Labs",
"description": "تكامل دعم {{applicationName}} مع ويدجت Amuse لعرض الأغنية التي قيد التشغيل، من إنتاج 6K Labs",
"name": "تلسيه",
"response": {
"query": "خادم Amuse API قيد التشغيل. استخدم GET /query للحصول على معلومات الأغنية."
@ -373,7 +373,7 @@
"name": "تجاوز التحقق من السن"
},
"captions-selector": {
"description": "محدد ترجمات المقاطع الصوتية لPear Desktop",
"description": "محدد ترجمات المقاطع الصوتية ل{{applicationName}}",
"menu": {
"autoload": "اختار اخر ترجمة مستخدمة تلقائيا",
"disable-captions": "لا توجد ترجمات بشكل افتراضي"
@ -456,13 +456,13 @@
"disconnected": "غير متصل",
"hide-duration-left": "إخفاء المدة المتبقية",
"hide-github-button": "إخفاء زر رابط GitHub",
"play-on-pear-desktop": "شغل في Pear Desktop",
"play-on-application": "شغل في {{applicationName}}",
"set-inactivity-timeout": "ضبط مهلة عدم النشاط",
"set-status-display-type": {
"label": "نص الحالة",
"submenu": {
"artist": "جار السمع ل{artist}",
"pear-desktop": "جار السمع لPear Desktop",
"application": "جار السمع ل{{applicationName}}",
"title": "جار السمع ل{song title}"
}
}

View File

@ -148,7 +148,7 @@
"submenu": {
"custom-window-title": {
"prompt": {
"placeholder": "Nümunə: Pear Desktop"
"placeholder": "Nümunə: {{applicationName}}"
}
},
"like-buttons": {

View File

@ -154,7 +154,7 @@
"label": "Персонализирано заглавие на прозорец",
"prompt": {
"label": "Въведи персонализирано заглавие: (остави празно за да изключиш)",
"placeholder": "Пример: Pear Desktop"
"placeholder": "Пример: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Рестартирай приложението",
"show": "Покажи прозорец",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Атмосферен режим"
},
"amuse": {
"description": "Добавя поддръжка на Pear Desktop за джаджата Amuse Now Play от 6K Labs",
"description": "Добавя поддръжка на {{applicationName}} за джаджата Amuse Now Play от 6K Labs",
"name": "Забавление",
"response": {
"query": "Сървърът на Amuse API работи. Изпратете GET /query за информация за песента."
@ -373,7 +373,7 @@
"name": "Избягване на възрастови ограничения"
},
"captions-selector": {
"description": "Избор на надписи за аудио тракове в Pear Desktop",
"description": "Избор на надписи за аудио тракове в {{applicationName}}",
"menu": {
"autoload": "Автоматично избиране на последно използвания надпис",
"disable-captions": "Без надписи по подразбиране"
@ -456,14 +456,14 @@
"disconnected": "Прекъснато",
"hide-duration-left": "Скрий оставащото време",
"hide-github-button": "Скрий бутона за линк към GitHub",
"play-on-pear-desktop": "Възпроизведи в Pear Desktop",
"play-on-application": "Възпроизведи в {{applicationName}}",
"set-inactivity-timeout": "Задай таймаут за неактивност",
"set-status-display-type": {
"label": "Статус текст",
"submenu": {
"artist": "Слушам {artist}",
"title": "Слушам {song title}",
"pear-desktop": "Слушам Pear Desktop"
"application": "Слушам {{applicationName}}"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "কাস্টম উইন্ডো টাইটেল",
"prompt": {
"label": "নিজস্ব উইন্ডোর টাইটেল দিন (বন্ধ করতে ফাঁকা রাখুন)",
"placeholder": "উদাহরণস্বরূপ: Pear Desktop"
"placeholder": "উদাহরণস্বরূপ: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "অ্যাপ পুনরায় চালু করুন",
"show": "উইন্ডো দেখান",
"tooltip": {
"default": "ইউটিউব মিউজিক",
"with-song-info": "ইউটিউব মিউজিক: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -443,7 +443,7 @@
"disconnected": "সংযোগ বিচ্ছিন্ন",
"hide-duration-left": "অবশিষ্ট সময় লুকান",
"hide-github-button": "গিটহাব লিঙ্ক বাটন লুকান",
"play-on-pear-desktop": "ইউটিউব মিউজিকে চালান",
"play-on-application": "ইউটিউব মিউজিকে চালান",
"set-inactivity-timeout": "নিষ্ক্রিয়তার সময়সীমা সেট করুন"
},
"name": "ডিসকর্ড রিচ প্রেজেন্স",

View File

@ -154,7 +154,7 @@
"label": "Prilagođeni naslov prozora",
"prompt": {
"label": "Unesite vlastiti naslov prozora: (ostavite prazno za isključenje)",
"placeholder": "Primjer: Pear Desktop"
"placeholder": "Primjer: {{applicationName}}"
}
},
"like-buttons": {
@ -184,9 +184,31 @@
}
},
"plugins": {
"enabled": "Omogući",
"enabled": "Omogućeno",
"label": "Dodaci",
"new": "Novo"
},
"view": {
"label": "Pogled",
"submenu": {
"force-reload": "Silom Ponovo Učitaj",
"reload": "Ponovo Učitaj",
"reset-zoom": "Stvarna Veličina",
"toggle-fullscreen": "Uključi/Isključi Prikaz Cijelog Ekrana",
"zoom-in": "Uvećaj",
"zoom-out": "Umanji"
}
}
},
"tray": {
"next": "Slijedeće",
"play-pause": "Plej/Pauza",
"previous": "Prethodno",
"quit": "Izlaz",
"restart": "Ponovo Pokreni Aplikaciju",
"show": "Pokaži prozor",
"tooltip": {
"default": "{{applicationName}}"
}
}
},
@ -197,6 +219,53 @@
"label": "Kvalitet"
}
}
},
"discord": {
"menu": {
"set-status-display-type": {
"submenu": {
"application": "Slušate {{applicationName}}",
"artist": "Slušate {muzičar}",
"title": "Slušate {naziv pesme}"
}
}
},
"name": "Diskord Rich Presence",
"prompt": {
"set-inactivity-timeout": {
"label": "Unesi ograničenje neaktivnosti u sekundama:",
"title": "Postavi ograničenje neaktivnosti"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "OK"
},
"message": "Ufff! Izvinite, preuzimanje nije uspelo…",
"title": "Greška u preuzimanju!"
},
"start-download-playlist": {
"buttons": {
"ok": "OK"
},
"detail": "({{Playlist Size}} pjesme)",
"message": "Preuzimanje Plejliste {{playlist Title}}",
"title": "Preuzimanje počelo"
}
},
"feedback": {
"conversion-progress": "Pretvaranje: {{percent}}%",
"converting": "Pretvaranje…",
"done": "Gotovo: {{file Path}}",
"download-info": "Preuzimanje {{artist}} - {{title}} [{{videoId}}",
"download-progress": "Preuzimanje: {{percent}}%",
"downloading": "Preuzimanje…"
}
}
}
}
}

View File

@ -154,7 +154,7 @@
"label": "Títol personalitzat de la finestra",
"prompt": {
"label": "Introdueix un títol personalitzat per a la finestra (deixa-ho buit per deshabilitar-ho)",
"placeholder": "Exemple: Pear Desktop"
"placeholder": "Exemple: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reinicia l'aplicació",
"show": "Mostra la finestra",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "Mode ambient"
},
"amuse": {
"description": "Afegeix suport a Pear Desktop per el widget \"now playing\" d'Amuse per 6K Labs",
"description": "Afegeix suport a {{applicationName}} per el widget \"now playing\" d'Amuse per 6K Labs",
"name": "Amuse",
"response": {
"query": "L'API del servidor de Amuse està funcionant. GET /query per tenir informació de la cançó."
@ -321,6 +321,22 @@
"hostname": {
"label": "Nom del host"
},
"https": {
"label": "HTTPS i Certificats",
"submenu": {
"cert": {
"dialogTitle": "Seleccionar arxiu de certificat HTTPS",
"label": "Arxiu de certificat (.crt/.pem)"
},
"enable-https": {
"label": "Activa HTTPS"
},
"key": {
"dialogTitle": "Selecciona arxiu de clau HTTPS privada",
"label": "Arxiu de clau privada (.key/.pem)"
}
}
},
"port": {
"label": "Port"
}
@ -374,7 +390,7 @@
"name": "Esquiva les restriccions d'edat"
},
"captions-selector": {
"description": "Selector de subtítols per les pistes d'àudio de Pear Desktop",
"description": "Selector de subtítols per les pistes d'àudio de {{applicationName}}",
"menu": {
"autoload": "Selecciona automàticament l'últim subtítol emprat",
"disable-captions": "Sense subtítols per defecte"
@ -457,13 +473,13 @@
"disconnected": "Desconnectat",
"hide-duration-left": "Amaga la durada restant",
"hide-github-button": "Amaga el botó de l'enllaç a GitHub",
"play-on-pear-desktop": "Reprodueix a Pear Desktop",
"play-on-application": "Reprodueix a {{applicationName}}",
"set-inactivity-timeout": "Estableix temps d'espera d'inactivitat",
"set-status-display-type": {
"label": "Text d'estat",
"submenu": {
"application": "Escoltant {{applicationName}}",
"artist": "Escoltant {artist}",
"pear-desktop": "Escoltant Pear Desktop",
"title": "Escoltant {song title}"
}
}

View File

@ -154,7 +154,7 @@
"label": "Vlastní název okna",
"prompt": {
"label": "Zadejte vlastní název okna: (zanechejte prázdné pro zakázání)",
"placeholder": "Příklad: Pear Desktop"
"placeholder": "Příklad: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Restartovat aplikaci",
"show": "Zobrazit okno",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Ambientní režim"
},
"amuse": {
"description": "Přídá Pear Desktop podporu pro Amuse právě hraje widget od 6K Labs",
"description": "Přídá {{applicationName}} podporu pro Amuse právě hraje widget od 6K Labs",
"name": "Amuse",
"response": {
"query": "Server Amuse API běží. Pošli požadavek typu GET na /query, aby ses dozvěděl info o písničce."
@ -373,7 +373,7 @@
"name": "Obejít věková omezení"
},
"captions-selector": {
"description": "Titulkový selector pro zvukové stopy v Pear Desktop",
"description": "Titulkový selector pro zvukové stopy v {{applicationName}}",
"menu": {
"autoload": "Automaticky vybrat naposledy použité titulky",
"disable-captions": "Žádné titulky ve vychozím nastavení"
@ -456,13 +456,13 @@
"disconnected": "Odpojeno",
"hide-duration-left": "Skrýt zbývající duration",
"hide-github-button": "Skrýt tlačítko s odkazem na GitHub",
"play-on-pear-desktop": "Hrát na Pear Desktop",
"play-on-application": "Hrát na {{applicationName}}",
"set-inactivity-timeout": "Nastavit timeout pro neaktivitu",
"set-status-display-type": {
"label": "Text statusu",
"submenu": {
"artist": "Poslouchám: {artist}",
"pear-desktop": "Poslouchám Pear Desktop",
"application": "Poslouchám {{applicationName}}",
"title": "Poslouchám {song title}"
}
}

View File

@ -154,7 +154,7 @@
"label": "Tilpasset vindues titel",
"prompt": {
"label": "Indtast tilpasset vindues titel: (lad være top for deaktiveret)",
"placeholder": "Eksempel: Pear Desktop"
"placeholder": "Eksempel: {{applicationName}}"
}
},
"like-buttons": {
@ -206,8 +206,8 @@
"restart": "Genstart app",
"show": "Vis vindue",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "Benutzerdefinierter Fenstertitel",
"prompt": {
"label": "Benutzerdefinierten Fenstertitel eingeben: (zum Deaktivieren leer lassen)",
"placeholder": "Beispiel: Pear Desktop"
"placeholder": "Beispiel: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Anwendung neu starten",
"show": "Fenster anzeigen",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "Ambiente-Modus"
},
"amuse": {
"description": "Fügt Unterstützung für das Amuse \"Spielt gerade\"-Widget von 6K Labs hinzu",
"description": "Fügt {{applicationName}} Unterstützung für das Amuse \"Spielt gerade\"-Widget von 6K Labs hinzu",
"name": "Amuse",
"response": {
"query": "Amuse API-Server läuft. /query für Liedinformationen."
@ -321,6 +321,22 @@
"hostname": {
"label": "Hostname"
},
"https": {
"label": "HTTPS & Zertifikate",
"submenu": {
"cert": {
"dialogTitle": "HTTPS Zertifikat Datei auswählen",
"label": "Zertifikate Datei (.crt/.pem)"
},
"enable-https": {
"label": "HTTPS aktivieren"
},
"key": {
"dialogTitle": "HTTPS privaten Schlüssel Datei auswählen",
"label": "Privater Schlüssel Datei (.key/.pem)"
}
}
},
"port": {
"label": "Port"
}
@ -374,7 +390,7 @@
"name": "Altersbeschränkungen umgehen"
},
"captions-selector": {
"description": "Untertitelwähler für Pear Desktop-Audio-Lieder",
"description": "Untertitelwähler für {{applicationName}}-Audio-Lieder",
"menu": {
"autoload": "Wähle automatisch den zuletzt verwendeten Untertitel",
"disable-captions": "Standardmäßig keine Untertitel"
@ -457,13 +473,13 @@
"disconnected": "Getrennt",
"hide-duration-left": "Verbleibende Zeit verstecken",
"hide-github-button": "Knopf mit Link zu GitHub ausblenden",
"play-on-pear-desktop": "Auf Pear Desktop abspielen",
"play-on-application": "Auf {{applicationName}} abspielen",
"set-inactivity-timeout": "Inaktivitätstimeout setzen",
"set-status-display-type": {
"label": "Status Text",
"submenu": {
"application": "Hört {{applicationName}}",
"artist": "Hört {artist} zu",
"pear-desktop": "Hört Pear Desktop",
"title": "Du hörst {song title}"
}
}
@ -867,12 +883,12 @@
},
"name": "Synchronisierte Texte",
"refetch-btn": {
"fetching": "Hole Songtext...",
"normal": "Songtext neu holen"
"fetching": "Laden...",
"normal": "Songtext neu laden"
},
"warnings": {
"duration-mismatch": "⚠️ - Es kann sein, dass die Synchronization nicht stimmt, da die Songdauer nicht übereinstimmt.",
"inexact": "⚠️ - Der Songtext stimmt möglicherweise nicht überein",
"inexact": "⚠️ - Es ist möglich, dass der Songtext für diesen Song nicht übereinstimmt.",
"instrumental": "⚠️ - Das ist ein instrumentales Lied"
}
},

View File

@ -154,7 +154,7 @@
"label": "Προσαρμοσμένος τίτλος παραθύρου",
"prompt": {
"label": "Εισαγωγή προσαρμοσμένου τίτλου παραθύρου: (κενό για απενεργοποίηση)",
"placeholder": "Παράδειγμα: Pear Desktop"
"placeholder": "Παράδειγμα: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Επανεκκίνηση εφαρμογής",
"show": "Εμφάνιση παραθύρου",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Λειτουργία περιβάλλοντος"
},
"amuse": {
"description": "Προσθέτει υποστήριξη Pear Desktop στο widget Amuse now playing από την 6K Labs",
"description": "Προσθέτει υποστήριξη {{applicationName}} στο widget Amuse now playing από την 6K Labs",
"name": "Amuse",
"response": {
"query": "Ο διακομιστής Amuse API εκτελείται. GET /query για να λάβετε πληροφορίες για το τραγούδι."
@ -373,7 +373,7 @@
"name": "Παράκαμψη ηλικιακών περιορισμών"
},
"captions-selector": {
"description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του Pear Desktop",
"description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του {{applicationName}}",
"menu": {
"autoload": "Αυτόματη επιλογή της τελευταίας χρησιμοποιούμενης λεζάντας",
"disable-captions": "Χωρίς λεζάντες από προεπιλογή"
@ -443,7 +443,7 @@
"disconnected": "Αποσυνδεδεμένο",
"hide-duration-left": "Απόκρυψη της διάρκειας που απομένει",
"hide-github-button": "Απόκρυψη κουμπιού συνδέσμου GitHub",
"play-on-pear-desktop": "Αναπαραγωγή στο Pear Desktop",
"play-on-application": "Αναπαραγωγή στο {{applicationName}}",
"set-inactivity-timeout": "Ορισμός χρονικού ορίου αδράνειας"
},
"name": "Discord Πλούσια παρουσία",

View File

@ -160,7 +160,7 @@
"label": "Custom window title",
"prompt": {
"label": "Enter custom window title: (leave empty to disable)",
"placeholder": "Example: Pear Desktop"
"placeholder": "Example: {{applicationName}}"
}
},
"remove-upgrade-button": "Remove upgrade button",
@ -208,8 +208,8 @@
"restart": "Restart App",
"show": "Show window",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "Ambient Mode"
},
"amuse": {
"description": "Adds Pear Desktop support for the Amuse now playing widget by 6K Labs",
"description": "Adds {{applicationName}} support for the Amuse now playing widget by 6K Labs",
"name": "Amuse",
"response": {
"query": "Amuse API server is running. GET /query to get song info."
@ -390,7 +390,7 @@
"name": "Bypass Age Restrictions"
},
"captions-selector": {
"description": "Caption selector for Pear Desktop audio tracks",
"description": "Caption selector for {{applicationName}} audio tracks",
"menu": {
"autoload": "Automatically select last used caption",
"disable-captions": "No captions by default"
@ -473,12 +473,12 @@
"disconnected": "Disconnected",
"hide-duration-left": "Hide duration left",
"hide-github-button": "Hide GitHub link Button",
"play-on-pear-desktop": "Play on Pear Desktop",
"play-on-application": "Play on {{applicationName}}",
"set-inactivity-timeout": "Set inactivity timeout",
"set-status-display-type": {
"label": "Status text",
"submenu": {
"pear-desktop": "Listening to Pear Desktop",
"application": "Listening to {{applicationName}}",
"artist": "Listening to {artist}",
"title": "Listening to {song title}"
}

View File

@ -154,7 +154,7 @@
"label": "Título de ventana personalizado",
"prompt": {
"label": "Ingresa un título de ventana personalizado: (déjalo vacío para desactivar)",
"placeholder": "Ejemplo: Pear Desktop"
"placeholder": "Ejemplo: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar la aplicación",
"show": "Mostrar ventana",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "Modo ambiente"
},
"amuse": {
"description": "Agrega soporte a Pear Desktop para el widget \"reproduciendo\" de Amuse por 6K Labs",
"description": "Agrega soporte a {{applicationName}} para el widget \"reproduciendo\" de Amuse por 6K Labs",
"name": "Amuse",
"response": {
"query": "El servidor API de Amuse se está ejecutando. Usa GET /query para obtener información de la canción."
@ -321,6 +321,22 @@
"hostname": {
"label": "Nombre del host"
},
"https": {
"label": "HTTPS & Certificados",
"submenu": {
"cert": {
"dialogTitle": "Selecciona el archivo de certificado HTTPS",
"label": "Archivo de certificado (.crt/.pem)"
},
"enable-https": {
"label": "Habilitar HTTPS"
},
"key": {
"dialogTitle": "Selecciona el archivo de clave privada HTTPS",
"label": "Archivo de clave privada (.key/.pem)"
}
}
},
"port": {
"label": "Puerto"
}
@ -374,7 +390,7 @@
"name": "Saltarse las restricciones de edad"
},
"captions-selector": {
"description": "Selector de subtítulos para pistas de audio de Pear Desktop",
"description": "Selector de subtítulos para pistas de audio de {{applicationName}}",
"menu": {
"autoload": "Seleccionar automáticamente el último subtítulo utilizado",
"disable-captions": "Sin subtítulos por defecto"
@ -457,13 +473,13 @@
"disconnected": "Desconectado",
"hide-duration-left": "Ocultar la duración restante",
"hide-github-button": "Ocultar el botón de enlace a GitHub",
"play-on-pear-desktop": "Reproducir en Pear Desktop",
"play-on-application": "Reproducir en {{applicationName}}",
"set-inactivity-timeout": "Establecer tiempo de inactividad",
"set-status-display-type": {
"label": "Texto de estado",
"submenu": {
"application": "Escuchando {{applicationName}}",
"artist": "Escuchando a {artist}",
"pear-desktop": "Escuchando Pear Desktop",
"title": "Escuchando {song title}"
}
}

View File

@ -128,7 +128,7 @@
},
"label": "Keel",
"submenu": {
"to-help-translate": "Soovid aidata tõlkimisel? Klõpsi siin"
"to-help-translate": "Soovid aidata tõlkimisel? Klõpsa siin"
}
},
"resume-on-start": "Rakenduse käivitamisel jätka viimatiesitatud loo esitamist",
@ -139,7 +139,7 @@
"unset": "Määramata"
},
"tray": {
"label": "Trey",
"label": "Tasku",
"submenu": {
"disabled": "Välja lülitatud",
"enabled-and-hide-app": "Sisse lülitatud ja rakendus peidetud",
@ -154,7 +154,7 @@
"label": "Kohandatud akna tiitel",
"prompt": {
"label": "Sisesta kohandatud akna tiitel: (jäta täitmata, et välja lülitada)",
"placeholder": "Näide: Pear Desktop"
"placeholder": "Näide: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Käivita rakendus uuesti",
"show": "Näita akent",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "عنوان پنجره سفارشى",
"prompt": {
"label": "عنوان پنجره سفارشى را وارد کنىد: (خالى بزارىد تا غىرفعال شود)",
"placeholder": "مثال :Pear Desktop"
"placeholder": "مثال :{{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "راه‌اندازی مجدد برنامه",
"show": "نمایش پنجره",
"tooltip": {
"default": "پىر دسکتاپ",
"with-song-info": "پىر دسکتاپ: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "حالت محیطی"
},
"amuse": {
"description": "حالا ویجت Amuse از Pear Desktop هم پشتیبانی می‌کنه! (توسط 6K Labs)",
"description": "حالا ویجت Amuse از {{applicationName}} هم پشتیبانی می‌کنه! (توسط 6K Labs)",
"name": "Amuse",
"response": {
"query": "سرور Amuse فعال است. برای دریافت اطلاعات آهنگ، از آدرس /query استفاده کنید."
@ -320,6 +320,22 @@
"hostname": {
"label": "نام میزبان"
},
"https": {
"label": "HTTPS و گواهینامه‌ها",
"submenu": {
"cert": {
"dialogTitle": "پرونده گواهینامه HTTPS را انتخاب کنید",
"label": "پرونده گواهینامه (crt/.pem.)"
},
"enable-https": {
"label": "فعال کردن HTTPS"
},
"key": {
"dialogTitle": "پرونده کلید خصوصی HTTPS را انتخاب کنید",
"label": "پرونده کلید خصوصی (key/.pem)"
}
}
},
"port": {
"label": "پورت"
}
@ -456,13 +472,13 @@
"disconnected": "اتصال قطع شد",
"hide-duration-left": "مخفی کردن مدت زمان باقی‌مانده",
"hide-github-button": "مخفی کردن دکمه لینک گیت هاب",
"play-on-pear-desktop": "پخش در یوتیوب موزیک",
"play-on-application": "پخش در یوتیوب موزیک",
"set-inactivity-timeout": "تنظیم زمان عدم فعالیت",
"set-status-display-type": {
"label": "متن وضعىت",
"submenu": {
"application": "به پىر دسکتاپ گوش مىکند",
"artist": "به {artist} گوش مىکند",
"pear-desktop": "به پىر دسکتاپ گوش مىکند",
"title": "به {song title} گوش مىکند"
}
}

View File

@ -154,7 +154,7 @@
"label": "Mukautettu ikkunan otsikko",
"prompt": {
"label": "Syötä mukautettu ikkunan otsikko: (jätä tyhjäksi poistaaksesi päältä)",
"placeholder": "Esimerkki: Pear Desktop"
"placeholder": "Esimerkki: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Uudelleen käynnistä appi",
"show": "Näytä ikkuna",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Tunnelmallinen Tila"
},
"amuse": {
"description": "Lisää Pear Desktop tuen Amusen nyt soitetaan -widgetille, kehittäjänä 6K Labs",
"description": "Lisää {{applicationName}} tuen Amusen nyt soitetaan -widgetille, kehittäjänä 6K Labs",
"name": "Amuse",
"response": {
"query": "Amuse API-palvelin on päällä. Käytä GET /query-rajapintaa saadaksesi kappaleen tiedot."
@ -373,7 +373,7 @@
"name": "Ohita Ikään Perustuvat Rajoitukset"
},
"captions-selector": {
"description": "Pear Desktop ääniraitojen tekstitysten valitsin",
"description": "{{applicationName}} ääniraitojen tekstitysten valitsin",
"menu": {
"autoload": "Valitse automaattisesti viimeksi käytetty tekstitys",
"disable-captions": "Tekstitys ei oletusarvoisesti käytössä"
@ -443,7 +443,7 @@
"disconnected": "Yhteys katkaistu",
"hide-duration-left": "Piilota kappaleen jäljellä oleva kesto",
"hide-github-button": "Piilota \"linkki GitHubiin\" -nappi",
"play-on-pear-desktop": "Kuuntele palvelussa Pear Desktop",
"play-on-application": "Kuuntele palvelussa {{applicationName}}",
"set-inactivity-timeout": "Aseta toimettomuuden aikakatkaisu"
},
"name": "Discord Aktiviteetti (Rich Presence)",

View File

@ -154,7 +154,7 @@
"label": "Custom na window title",
"prompt": {
"label": "I-enter ang custom na window tile: (iwanang blanko para di-mapagana)",
"placeholder": "Halimbawa: Pear Desktop"
"placeholder": "Halimbawa: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "I-restart ang App",
"show": "Ipakita ang window",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Ambient Mode"
},
"amuse": {
"description": "Nagdaragdag ng suporta sa Pear Desktop para sa Amuse now playing widget ng 6K Labs",
"description": "Nagdaragdag ng suporta sa {{applicationName}} para sa Amuse now playing widget ng 6K Labs",
"response": {
"query": "Tumatakbo ang Amuse API server. Gamitin ang GET /query para makuha ang impo ng kanta."
}
@ -369,7 +369,7 @@
"name": "I-bypass ang Restriksyon sa Edad"
},
"captions-selector": {
"description": "Tagapili ng caption para sa mga audio track ng Pear Desktop",
"description": "Tagapili ng caption para sa mga audio track ng {{applicationName}}",
"menu": {
"autoload": "Awtomatikong piliin ang huling ginamit na caption",
"disable-captions": "Walang mga caption bilang default"
@ -446,13 +446,13 @@
"disconnected": "Nadiskonekta",
"hide-duration-left": "Itago ang natitirang oras",
"hide-github-button": "Itago ang button na GitHub link",
"play-on-pear-desktop": "Patugtugin sa Pear Desktop",
"play-on-application": "Patugtugin sa {{applicationName}}",
"set-inactivity-timeout": "I-set ang inactivity timeout",
"set-status-display-type": {
"submenu": {
"artist": "Nakikinig sa {artist}",
"title": "Nakikinig sa {song title}",
"pear-desktop": "Kumikinig sa Pear Desktop"
"application": "Kumikinig sa {{applicationName}}"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "Titre de fenêtre personnalisé",
"prompt": {
"label": "Entrer un titre de fenêtre : (Laissé vide pour désactiver)",
"placeholder": "Exemple : Pear Desktop"
"placeholder": "Exemple : {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Redémarrer l'application",
"show": "Afficher la fenêtre",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}} : {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "Mode ambiant"
},
"amuse": {
"description": "Ajout de la prise en charge de Pear Desktop pour le widget Amuse now playing de 6K Labs",
"description": "Ajout de la prise en charge de {{applicationName}} pour le widget Amuse now playing de 6K Labs",
"name": "Amuse",
"response": {
"query": "Le serveur API d'Amuse est en cours d'exécution. GET /query pour obtenir des informations sur les chansons."
@ -321,6 +321,22 @@
"hostname": {
"label": "Nom de l'hôte"
},
"https": {
"label": "HTTPS & Certificats",
"submenu": {
"cert": {
"dialogTitle": "Sélectionner le fichier de certificat HTTPS",
"label": "Fichier de certificat (.crt/.pem)"
},
"enable-https": {
"label": "Activer HTTPS"
},
"key": {
"dialogTitle": "Sélectionner le fichier de clé privée HTTPS",
"label": "Fichier de clé privée (.key/.pem)"
}
}
},
"port": {
"label": "Port"
}
@ -374,7 +390,7 @@
"name": "Contourner les restrictions dâge"
},
"captions-selector": {
"description": "Sélecteur de sous-titres pour les pistes audio Pear Desktop",
"description": "Sélecteur de sous-titres pour les pistes audio {{applicationName}}",
"menu": {
"autoload": "Sélectionner automatiquement la dernière légende utilisée",
"disable-captions": "Pas de sous-titres par défaut"
@ -457,13 +473,13 @@
"disconnected": "Déconnecté",
"hide-duration-left": "Masquer la durée restante",
"hide-github-button": "Masquer le bouton du lien GitHub",
"play-on-pear-desktop": "Jouer sur Pear Desktop",
"play-on-application": "Jouer sur {{applicationName}}",
"set-inactivity-timeout": "Définir le délai d'inactivité",
"set-status-display-type": {
"label": "Texte d'état",
"submenu": {
"application": "Écoute {{applicationName}}",
"artist": "Écoute {artiste}",
"pear-desktop": "Écoute Pear Desktop",
"title": "Écoute {titre de la chanson}"
}
}
@ -483,8 +499,8 @@
"buttons": {
"ok": "Ok"
},
"message": "Argh ! Désolé, le téléchargement a échoué…",
"title": "Erreur de téléchargement !"
"message": "Argh! Désolé, le téléchargement a échoué…",
"title": "Erreur de téléchargement!"
},
"start-download-playlist": {
"buttons": {
@ -492,30 +508,30 @@
},
"detail": "({{playlistSize}} chansons)",
"message": "Téléchargement de la playlist {{playlistTitle}}",
"title": "Téléchargement a commencé"
"title": "Téléchargement commencé"
}
},
"feedback": {
"conversion-progress": "Conversion : {{percent}} %",
"conversion-progress": "Conversion : {{percent}}%",
"converting": "Conversion…",
"done": "Terminé : {{filePath}}",
"download-info": "Téléchargement {{artist}} - {{title}} [{{videoId}}",
"download-progress": "Téléchargé: {{percent}}%",
"download-progress": "Téléchargé : {{percent}}%",
"downloading": "Télécharge…",
"downloading-counter": "Télécharge {{current}}/{{total}}…",
"downloading-playlist": "Téléchargement de la playlist \"{{playlistTitle}}\"  {{playlistSize}} chansons ({{playlistId}})",
"downloading-playlist": "Téléchargement de la playlist \"{{playlistTitle}}\" - {{playlistSize}} chansons ({{playlistId}})",
"error-while-downloading": "Erreur lors du téléchargement de \"{{author}} - {{title}}\" : {{error}}",
"folder-already-exists": "Le dossier {{playlistFolder}} existe déjà",
"getting-playlist-info": "Obtention d'informations sur la liste de lecture…",
"getting-playlist-info": "Obtention des données de la playlist…",
"loading": "Chargement…",
"playlist-has-only-one-song": "La liste de lecture ne contient qu'un seul élément, téléchargement du morceau seul",
"playlist-id-not-found": "Aucun ID de liste de lecture trouvé",
"playlist-is-empty": "La liste de lecture est vide",
"playlist-is-mix-or-private": "Erreur lors de l'obtention des informations sur la liste de lecture: assurez-vous qu'il ne s'agit pas d'une liste privée ou \"Mixée pour vous\"\n\n{{error}}",
"preparing-file": "Péparer des fichier…",
"playlist-has-only-one-song": "La playlist ne contient qu'un seul élément, téléchargement du morceau seul",
"playlist-id-not-found": "Aucun ID de playlist trouvé",
"playlist-is-empty": "La playlist est vide",
"playlist-is-mix-or-private": "Erreur lors de l'obtention des informations sur la playlist : assurez-vous qu'il ne s'agit pas d'une playlist privée ou \"Mixée pour vous\"\n\n{{error}}",
"preparing-file": "Préparation des fichier…",
"saving": "Sauvegarde…",
"trying-to-get-playlist-id": "Obtention de l'ID de la liste de lecture: {{playlistId}}",
"video-id-not-found": "Vidéo non trouvée",
"trying-to-get-playlist-id": "Obtention de l'ID de la playlist : {{playlistId}}",
"video-id-not-found": "Vidéo introuvable",
"writing-id3": "Écriture des balises ID3…"
}
},
@ -525,19 +541,19 @@
"download-finish-settings": {
"label": "Télécharger une fois terminé",
"prompt": {
"last-percent": "Après x pour cent",
"last-percent": "Après x pourcents",
"last-seconds": "Dernières x secondes",
"title": "Configurer quand télécharger"
},
"submenu": {
"advanced": "Avancé",
"enabled": "Activé",
"mode": "Mode de temps",
"mode": "Unité de temps",
"percent": "Pourcent",
"seconds": "Secondes"
}
},
"download-playlist": "Télécharger la liste de lecture",
"download-playlist": "Télécharger la playlist",
"presets": "Préconfigurations",
"skip-existing": "Passer les fichiers existants"
},
@ -574,7 +590,7 @@
},
"lumiastream": {
"description": "Ajoute la prise en charge de Lumia Stream",
"name": "Lumia Stream [Bêta]"
"name": "Lumia Stream [Beta]"
},
"lyrics-genius": {
"description": "Ajoute la prise en charge des paroles pour la plupart des chansons",
@ -605,9 +621,9 @@
"host": "Hôte du Music Together",
"join": "Rejoindre le Music Together",
"permission": {
"all": "Autorisez les invités à contrôler la musique et le player",
"host-only": "Seulement l'hôte peut contrôler les playlists et le lecteur",
"playlist": "Autoriser les invités à contrôler les playlists"
"all": "Autorisez les invités à contrôler la playlist et le lecteur",
"host-only": "Seulement l'hôte peut contrôler la playlist et le lecteur",
"playlist": "Autoriser les invités à contrôler la playlist"
},
"set-permission": "Changer les permissions de contrôle",
"status": {
@ -625,7 +641,7 @@
"id-copied": "Identifiant de l'hôte copié dans le presse papier",
"id-copy-failed": "Echec de la copie de l'identifiant de l'hôte dans le presse papier",
"join-failed": "Echec en rejoignant le Music Together",
"joined": "Rejoint le Music Together",
"joined": "Music Together rejoint",
"permission-changed": "Permission du Music Together changé à \"{{permission}}\"",
"remove-song-failed": "Echec du retrait de la piste",
"user-connected": "{{name}} à rejoint le Music Together",
@ -657,7 +673,7 @@
"submenu": {
"hide-button-text": "Masquer le texte du bouton",
"refresh-on-play-pause": "Actualiser lors de la lecture/pause",
"tray-controls": "Ouvrir/Fermer sur le plateau, cliquez"
"tray-controls": "Ouvrir/Fermer au clic sur licône de la barre des tâches"
}
},
"priority": "Priorité des notifications",
@ -671,30 +687,30 @@
"name": "Amélioration des performances [Beta]"
},
"picture-in-picture": {
"description": "Permet de basculer lapplication en mode image dans image",
"description": "Permet de basculer lapplication en mode picture-in-picture",
"menu": {
"always-on-top": "Toujours en haut",
"always-on-top": "Toujours au dessus",
"hotkey": {
"label": "Raccourci clavier",
"prompt": {
"keybind-options": {
"hotkey": "Raccourci clavier"
},
"label": "Choisissez un raccourci clavier pour activer le mode Image dans l'image",
"title": "Touche de raccourci Image dans l'image"
"label": "Choisissez un raccourci clavier pour activer le mode picture-in-picture",
"title": "Touche de raccourci picture-in-picture"
}
},
"save-window-position": "Enregistrer la position de la fenêtre",
"save-window-size": "Enregistrer la taille de la fenêtre",
"use-native-pip": "Utiliser le mode image dans image natif du navigateur"
"use-native-pip": "Utiliser le mode PiP natif du navigateur"
},
"name": "Image dans l'image",
"name": "Picture-in-picture",
"templates": {
"button": "Image dans l'image"
"button": "Picture-in-picture"
}
},
"playback-speed": {
"description": "Écoutez vite, écoutez lentement ! Ajoute un curseur qui contrôle la vitesse de la chanson",
"description": "Écoutez vite, écoutez lentement! Ajoute un curseur qui contrôle la vitesse de la chanson",
"name": "Vitesse de lecture",
"templates": {
"button": "Vitesse"
@ -727,14 +743,14 @@
"backend": {
"dialog": {
"quality-changer": {
"detail": "Qualité actuelle: {{quality}}",
"detail": "Qualité actuelle : {{quality}}",
"message": "Choisissez la qualité vidéo :",
"title": "Choisissez la qualité vidéo"
}
}
},
"description": "Permet de changer la qualité vidéo avec un bouton sur la vidéo",
"name": "Changeur de qualité vidéo",
"description": "Permet de changer la qualité vidéo avec un bouton sur l'overlay vidéo",
"name": "Sélecteur de qualité vidéo",
"renderer": {
"quality-settings-button": {
"label": "Ouvrir le sélecteur de qualité du lecteur"
@ -746,7 +762,7 @@
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Erreur lors de l'authetification avec Last.fm\nCachez la popup jusqu'au prochain redémarrage.",
"message": "Erreur lors de l'authetification avec Last.fm\nCacher la popup jusqu'au prochain redémarrage.",
"title": "Authentification échouée"
}
}
@ -762,7 +778,7 @@
"scrobble-alternative-title": "Utiliser des titres alternatifs",
"scrobble-other-media": "Scrobbler d'autres médias"
},
"name": "Scrobble",
"name": "Scrobbler",
"prompt": {
"lastfm": {
"api-key": "Clé API de Last.fm",
@ -770,7 +786,7 @@
},
"listenbrainz": {
"token": {
"label": "Entrez votre token utilisateur ListenBrainz:",
"label": "Entrez votre token utilisateur ListenBrainz :",
"title": "Token ListenBrainz"
}
}
@ -796,8 +812,8 @@
}
},
"skip-disliked-songs": {
"description": "Passer les musiques que je n'aime pas",
"name": "Passer les chansons « Je n'aime pas »"
"description": "Passe les titres \"Je n'aime pas\"",
"name": "Passer les titres \"Je n'aime pas\""
},
"skip-silences": {
"description": "Ignorer automatiquement les sections de silence dans les chansons",
@ -811,12 +827,12 @@
"description": "Ajoute des paroles synchronisées aux chansons, grâce à LRClib par exemple.",
"errors": {
"fetch": "⚠️\tUne erreur s'est produite en allant chercher les paroles.\n\tMerci de réessayer plus tard.",
"not-found": "⚠️ Aucune paroles trouvées pour cette musique."
"not-found": "⚠️ Aucune paroles trouvées pour ce titre."
},
"menu": {
"default-text-string": {
"label": "Caractère par défaut entre les paroles",
"tooltip": "Choisi le caractère par défaut à utiliser pour l'espace entre les paroles"
"tooltip": "Choisi le caractère par défaut à utiliser pour les blancs entre les paroles"
},
"line-effect": {
"label": "Effet de ligne",
@ -827,7 +843,7 @@
},
"focus": {
"label": "Focus",
"tooltip": "Rend seulement la ligne actuelle blanche"
"tooltip": "Rend blanche seulement la ligne actuelle"
},
"offset": {
"label": "Décalage",
@ -850,7 +866,7 @@
"label": "Aucun",
"tooltip": "Aucun fournisseur privilégié"
},
"tooltip": "Choisissez le fournisseur par défaut à utiliser"
"tooltip": "Choisissez le fournisseur à utiliser par défaut"
},
"romanization": {
"label": "Romaniser les paroles",
@ -862,7 +878,7 @@
},
"show-time-codes": {
"label": "Afficher les timecodes",
"tooltip": "Affiche à côté de chaque paroles son timecode"
"tooltip": "Affiche le timecode à côté de chaque paroles"
}
},
"name": "Paroles Synchronisées",
@ -873,7 +889,7 @@
"warnings": {
"duration-mismatch": "⚠️ - Les paroles peuvent ne pas être synchronisées à cause d'une différence de durée.",
"inexact": "⚠️ - Les paroles de cette chanson peuvent ne pas être exactes",
"instrumental": "⚠️ - Cette musique n'a pas de paroles"
"instrumental": "⚠️ - C'est un titre instrumental"
}
},
"taskbar-mediacontrol": {
@ -910,7 +926,7 @@
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Empêche le lecteur de s'afficher quand une chanson est en cours de lecture",
"description": "Empêche le lecteur de s'afficher quand un titre est en cours de lecture",
"name": "Lecteur Non-Intrusif"
},
"video-toggle": {
@ -934,7 +950,7 @@
}
}
},
"name": "Basculer la vidéo",
"name": "Bouton de bascule vidéo",
"templates": {
"button-song": "Musique",
"button-video": "Vidéo"

View File

@ -154,7 +154,7 @@
"label": "Título de xanela personalizado",
"prompt": {
"label": "Introduza o título personalizado da xanela (deixe baleiro para desactivala)",
"placeholder": "Exemplo: Pear Desktop"
"placeholder": "Exemplo: {{applicationName}}"
}
},
"like-buttons": {

View File

@ -206,8 +206,8 @@
"restart": "הפעל מחדש",
"show": "הראה חלון",
"tooltip": {
"default": "שולחן כתיבה אגסי",
"with-song-info": "שולחן כתיב אגסי: {{יוצר}} - {{כותרת}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -285,7 +285,7 @@
"name": "מצב אווירה"
},
"amuse": {
"description": "מוסיף תמיכה ב-Pear Desktop עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs",
"description": "מוסיף תמיכה ב-{{applicationName}} עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs",
"name": "משעשע",
"response": {
"query": "שרת ה-API של Amuse פועל. קבל מידע על השיר באמצעות GET /query."
@ -371,7 +371,7 @@
"name": "עקוף את ההחמרות של הגיל"
},
"captions-selector": {
"description": "בורר כתוביות עבור רצועות אודיו של Pear Desktop",
"description": "בורר כתוביות עבור רצועות אודיו של {{applicationName}}",
"menu": {
"autoload": "בחר אוטומטי את הכתובית האחרונה שנבחרה",
"disable-captions": "ברירת מחד ללא כתוביות"
@ -432,7 +432,7 @@
"connected": "מחובר",
"disconnected": "מנותק",
"hide-github-button": "הסתר את לחצן הקישור של GitHub",
"play-on-pear-desktop": "הפעל ביוטיוב מיוזיק",
"play-on-application": "הפעל ביוטיוב מיוזיק",
"set-inactivity-timeout": "הגדר פסק זמן לחוסר פעילות"
}
},

View File

@ -208,8 +208,8 @@
"restart": "ऐप पुनः प्रारंभ करें",
"show": "ऐप दिखाए",
"tooltip": {
"default": "पियर डेस्कटॉप",
"with-song-info": "पियर डेस्कटॉप: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -373,7 +373,7 @@
"name": "आयु प्रतिबंध को बायपास करें"
},
"captions-selector": {
"description": "Pear Desktop म्यूज़िक ऑडियो ट्रैक के लिए कैप्शन चयनकर्ता",
"description": "{{applicationName}} म्यूज़िक ऑडियो ट्रैक के लिए कैप्शन चयनकर्ता",
"menu": {
"autoload": "अंतिम बार उपयोग किए गए कैप्शन का ऑटोमैटिक रूप से चयन करें",
"disable-captions": "डिफ़ॉल्ट रूप में कोई कैप्शन नहीं"
@ -456,13 +456,13 @@
"disconnected": "डिस्कनेक्ट किया गया",
"hide-duration-left": "शेष अवधि छिपाएँ",
"hide-github-button": "GitHub लिंक के बटन को छिपाएँ",
"play-on-pear-desktop": "Pear Desktop म्यूज़िक पर चलाएँ",
"play-on-application": "{{applicationName}} म्यूज़िक पर चलाएँ",
"set-inactivity-timeout": "निष्क्रियता समय समाप्ति सेट करें",
"set-status-display-type": {
"label": "स्टेटस टेक्स्ट",
"submenu": {
"application": "{{applicationName}} सुन रहे है",
"artist": "{artist} को सुन रहे है",
"pear-desktop": "Pear Desktop सुन रहे है",
"title": "{song title} सुन रहे है"
}
}

View File

@ -154,7 +154,7 @@
"label": "Prilagođeni naslov prozora",
"prompt": {
"label": "Unesi prilagođeni naslov prozora: (ostavi prazno za onemogućiti)",
"placeholder": "Primjer: Pear Desktop"
"placeholder": "Primjer: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Ponovo Pokreni Aplikaciju",
"show": "Prikaži prozor",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -237,7 +237,8 @@
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"enable-seekbar": "Omogući postavljanje teme \"seekbar\"-a"
},
"name": "Boja teme albuma"
},
@ -287,7 +288,7 @@
"name": "Ambijentalni Način"
},
"amuse": {
"description": "Dodaje podršku za Pear Desktop za widget \"sada reproducira\" od Amuse od strane 6K Labs",
"description": "Dodaje podršku za {{applicationName}} za widget \"sada reproducira\" od Amuse od strane 6K Labs",
"name": "Zabavljati",
"response": {
"query": "Amuse API poslužitelj je pokrenut. Koristi GET /query za dohvat informacija o pjesmi."
@ -320,6 +321,22 @@
"hostname": {
"label": "Naziv hosta"
},
"https": {
"label": "HTTPS i Sertifikati",
"submenu": {
"cert": {
"dialogTitle": "Biraj HTTPS sertifikat datoteku",
"label": "Sertifikat datoteka (.crt/.pem)"
},
"enable-https": {
"label": "Omogući HTTPS"
},
"key": {
"dialogTitle": "Biraj privatni ključ datoteku za HTTPS",
"label": "Privatni ključ datoteka (.key/.pem)"
}
}
},
"port": {
"label": "Port"
}
@ -373,7 +390,7 @@
"name": "Zaobiđi dobna ograničenja"
},
"captions-selector": {
"description": "Izbornik titlova za audiozapise od Pear Desktopa",
"description": "Izbornik titlova za audiozapise od {{applicationName}}a",
"menu": {
"autoload": "Automatski izaberi posljednje korištene titlove",
"disable-captions": "Bez titlova"
@ -456,13 +473,13 @@
"disconnected": "Odspojen",
"hide-duration-left": "Sakrij preostalo vrijeme",
"hide-github-button": "Sakrij gumb sa GitHub poveznicom",
"play-on-pear-desktop": "Reproduciraj na Pear Desktopu",
"play-on-application": "Reproduciraj na {{applicationName}}u",
"set-inactivity-timeout": "Postavi vremensko ograničenje neaktivnosti (inactivity timeout)",
"set-status-display-type": {
"label": "Tekst statusa",
"submenu": {
"application": "Slušate {{applicationName}}",
"artist": "Slušate {glazbenika}",
"pear-desktop": "Slušate Pear Desktop",
"title": "Slušate {naslov pjesme}"
}
}

View File

@ -154,7 +154,7 @@
"label": "Saját ablak cím",
"prompt": {
"label": "Kérem az egyéni ablak címét: (hagyd üresen a kikapcsoláshoz)",
"placeholder": "Példa: Pear Desktop"
"placeholder": "Példa: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "YT Music újraindítása",
"show": "Ablak megjelenítése",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Ambient mód"
},
"amuse": {
"description": "Hozzáadja a Pear Desktop támogatását az Amuse \"now playing\" widgethez a 6K Labs által",
"description": "Hozzáadja a {{applicationName}} támogatását az Amuse \"now playing\" widgethez a 6K Labs által",
"name": "Amuse",
"response": {
"query": "Az Amuse API szerver fut. Használja a GET /query kérést a dalinformációk lekéréséhez."
@ -371,7 +371,7 @@
"name": "Korellenőrzés kihagyása"
},
"captions-selector": {
"description": "Felirat választó a Pear Desktop zenékhez",
"description": "Felirat választó a {{applicationName}} zenékhez",
"menu": {
"autoload": "Automatikusan kiválasztja az utoljára használt feliratot",
"disable-captions": "Alapértelmezetten nincsenek feliratok"
@ -453,13 +453,13 @@
"disconnected": "Nincs Kapcsolódva",
"hide-duration-left": "Hátralévő idő elrejtése",
"hide-github-button": "GitHub url gombjának elrejtése",
"play-on-pear-desktop": "Lejátszás a Pear Desktop-on",
"play-on-application": "Lejátszás a {{applicationName}}-on",
"set-inactivity-timeout": "Inaktivitási időkorlát beállítása",
"set-status-display-type": {
"label": "Tevékenység szöveg",
"submenu": {
"artist": "Hallgatja: {artist}",
"pear-desktop": "Hallgatja: Pear Desktop",
"application": "Hallgatja: {{applicationName}}",
"title": "Hallgatja: {song title}"
}
}

View File

@ -154,7 +154,7 @@
"label": "Judul jendela kustom",
"prompt": {
"label": "Masukkan judul jendela kustom (kosongkan untuk menonaktifkan)",
"placeholder": "Contoh: Pear Desktop"
"placeholder": "Contoh: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Restart aplikasi",
"show": "Tampilkan jendela",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Mode ambient"
},
"amuse": {
"description": "Menambahkan dukungan Pear Desktop untuk widget Amuse yang sedang diputar oleh 6K Labs",
"description": "Menambahkan dukungan {{applicationName}} untuk widget Amuse yang sedang diputar oleh 6K Labs",
"name": "Amuse",
"response": {
"query": "Server API Amuse sedang berjalan. GET /query untuk mendapatkan info lagu."
@ -373,7 +373,7 @@
"name": "Lewati batasan umur"
},
"captions-selector": {
"description": "Pemilih caption untuk trek audio Pear Desktop",
"description": "Pemilih caption untuk trek audio {{applicationName}}",
"menu": {
"autoload": "Pilih caption terakhir secara otomatis",
"disable-captions": "Tidak ada caption secara default"
@ -456,14 +456,14 @@
"disconnected": "Terputus",
"hide-duration-left": "Sembunyikan sisa durasi",
"hide-github-button": "Sembunyikan tombol link GitHub",
"play-on-pear-desktop": "Mainkan di Pear Desktop",
"play-on-application": "Mainkan di {{applicationName}}",
"set-inactivity-timeout": "Tetapkan batas waktu tidak aktif",
"set-status-display-type": {
"label": "Teks status",
"submenu": {
"artist": "Sedang mendengarkan {artist}",
"title": "Sedang mendengarkan {song title}",
"pear-desktop": "Sedang mendengarkan Pear Desktop"
"application": "Sedang mendengarkan {{applicationName}}"
}
}
},

View File

@ -201,8 +201,8 @@
"restart": "Endurræstu Forritið",
"show": "Sýna glugga",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -335,7 +335,7 @@
"name": "Farið Framhjá Aldurstakmörkunum"
},
"captions-selector": {
"description": "Skjátextavali fyrir Pear Desktop hljóðrásir",
"description": "Skjátextavali fyrir {{applicationName}} hljóðrásir",
"menu": {
"autoload": "Veldu sjálfkrafa síðast notaða myndatexta",
"disable-captions": "Engir skjátextar sjálfgefið"
@ -400,7 +400,7 @@
"disconnected": "Aftengt",
"hide-duration-left": "Fela tímalengd til vinstri",
"hide-github-button": "Fela GitHub tengilhnapp",
"play-on-pear-desktop": "Spilaðu á Pear Desktop",
"play-on-application": "Spilaðu á {{applicationName}}",
"set-inactivity-timeout": "Stilltu tímamörk fyrir óvirkni"
},
"name": "Discord Rík Nærvera",

View File

@ -154,7 +154,7 @@
"label": "Personalizza titolo finestra",
"prompt": {
"label": "Inserisci un titolo della finestra personalizzato: (lascia vuoto per disattivare)",
"placeholder": "Esempio: Pear Desktop"
"placeholder": "Esempio: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Riavvia l'app",
"show": "Mostra finestra",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -237,7 +237,8 @@
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"enable-seekbar": "Abilita tematizzazione della seekbar"
},
"name": "Tema abbinato a colore album"
},
@ -287,7 +288,7 @@
"name": "Modalità Ambiente"
},
"amuse": {
"description": "Aggiunge il supporto a Pear Desktop per il widget Amuse Now Playing di 6K Labs",
"description": "Aggiunge il supporto a {{applicationName}} per il widget Amuse Now Playing di 6K Labs",
"name": "Amuse",
"response": {
"query": "Il server API di Amuse è in funzione. GET /query per ottenere informazioni sui brani."
@ -320,6 +321,22 @@
"hostname": {
"label": "Hostname"
},
"https": {
"label": "HTTPS & Certificati",
"submenu": {
"cert": {
"dialogTitle": "Seleziona file di certificato HTTPS",
"label": "File di certificato (.crt/.pem)"
},
"enable-https": {
"label": "Abilita HTTPS"
},
"key": {
"dialogTitle": "Seleziona il file della chiave privata HTTPS",
"label": "File della chiave privata (.key/.pem)"
}
}
},
"port": {
"label": "Porta"
}
@ -373,7 +390,7 @@
"name": "Aggira i limiti d'età"
},
"captions-selector": {
"description": "Selettore sottotitolo per le tracce audio di Pear Desktop",
"description": "Selettore sottotitolo per le tracce audio di {{applicationName}}",
"menu": {
"autoload": "Seleziona automaticamente l'ultimo sottotitolo utilizzato",
"disable-captions": "Disattiva i sottotitoli"
@ -456,14 +473,14 @@
"disconnected": "Disconnesso",
"hide-duration-left": "Nascondi la durata rimasta",
"hide-github-button": "Nascondi il pulsante link a GitHub",
"play-on-pear-desktop": "Riproduci su Pear Desktop",
"play-on-application": "Riproduci su {{applicationName}}",
"set-inactivity-timeout": "Imposta il timeout di inattività",
"set-status-display-type": {
"label": "Testo dello status",
"submenu": {
"application": "Ascoltando {{applicationName}}",
"artist": "Stai ascoltando {artist}",
"title": "Stai ascoltando {song title}",
"pear-desktop": "Ascoltando Pear Desktop"
"title": "Stai ascoltando {song title}"
}
}
},
@ -866,7 +883,7 @@
},
"name": "Testi sincronizzati",
"refetch-btn": {
"fetching": "Sto recuperando...",
"fetching": "Caricamento...",
"normal": "Recupera i testi"
},
"warnings": {

View File

@ -154,7 +154,7 @@
"label": "カスタムウィンドウタイトル",
"prompt": {
"label": "カスタムウィンドウタイトルを入力: (未入力の場合無効になります)",
"placeholder": "例: Pear Desktop"
"placeholder": "例: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "アプリを再起動",
"show": "ウィンドウを表示",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "アンビエント モード"
},
"amuse": {
"description": "6K LabsのAmuse再生中ウィジェットがPear Desktopに対応しました",
"description": "6K LabsのAmuse再生中ウィジェットが{{applicationName}}に対応しました",
"name": "Amuse",
"response": {
"query": "AmuseのAPIサーバーが稼働中です。GET /query で楽曲情報を取得できます。"
@ -373,7 +373,7 @@
"name": "年齢制限迂回"
},
"captions-selector": {
"description": "Pear Desktopトラック用字幕選択機",
"description": "{{applicationName}}トラック用字幕選択機",
"menu": {
"autoload": "最後の字幕を自動に選択",
"disable-captions": "デフォルトで字幕を無効化"
@ -456,13 +456,13 @@
"disconnected": "切断済み",
"hide-duration-left": "残りの再生時間を隠す",
"hide-github-button": "GitHubリンクボタンを隠す",
"play-on-pear-desktop": "Pear Desktopで再生",
"play-on-application": "{{applicationName}}で再生",
"set-inactivity-timeout": "タイムアウト時間を設定",
"set-status-display-type": {
"label": "ステータステキスト",
"submenu": {
"artist": "{artist}を聴いている",
"pear-desktop": "Pear Desktopを聴く",
"application": "{{applicationName}}を聴く",
"title": "{曲名}を聴いている"
}
}

View File

@ -117,7 +117,7 @@
"hide-menu": {
"dialog": {
"message": "მენიუ შემდეგი გაშვებისას დაიმალება, მის საჩვენებლად გამოიყენეთ [Alt] (ან თუ აპლიკაციის მენიუს იყენებთ, უკან დააწკაპუნეთ [`])",
"title": "მენიუს დამალვა ჩართულია"
"title": "მენიუს დამალვა ჩართ"
},
"label": "მენიუს დამალვა"
},

View File

@ -154,7 +154,7 @@
"label": "사용자 정의 앱 제목",
"prompt": {
"label": "앱 제목으로 표시할 내용 : (빈 칸 일시 비활성화)",
"placeholder": "예: Pear Desktop"
"placeholder": "예: {{applicationName}}"
}
},
"like-buttons": {
@ -171,7 +171,7 @@
"remove": "제거"
},
"remove-theme": "사용자 정의 테마를 제거하시겠습니까?",
"remove-theme-message": "사용자 정의 테마를 제거하시겠습니까?"
"remove-theme-message": "이 설정을 변경하면 커스텀 테마가 삭제됩니다"
},
"label": "테마",
"submenu": {
@ -208,8 +208,8 @@
"restart": "앱 재시작",
"show": "창 표시",
"tooltip": {
"default": "피어 데스크톱",
"with-song-info": "피어 데스크톱: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,8 +288,8 @@
"name": "앰비언트 모드"
},
"amuse": {
"description": "6K Labs Amuse의 'now playing' 위젯에 Pear Desktop 지원 추가",
"name": "Amuse",
"description": "6K Labs Amuse의 'now playing' 위젯에 {{applicationName}} 지원 추가",
"name": "Amuseio AB",
"response": {
"query": "Amuse API 서버가 실행 중입니다. GET /query로 노래 정보를 가져오세요."
}
@ -321,6 +321,22 @@
"hostname": {
"label": "호스트 명"
},
"https": {
"label": "HTTPS 및 인증서",
"submenu": {
"cert": {
"dialogTitle": "HTTPS 인증서 파일을 선택해 주세요",
"label": "인증서 파일(.crt/.pem)"
},
"enable-https": {
"label": "HTTPS 활성화"
},
"key": {
"dialogTitle": "HTTPS 개인 키 파일을 선택해 주세요",
"label": "개인 키 파일(.key/.pem)"
}
}
},
"port": {
"label": "포트"
}
@ -374,7 +390,7 @@
"name": "나이 제한 우회"
},
"captions-selector": {
"description": "Pear Desktop 트랙용 자막 선택기입니다",
"description": "{{applicationName}} 트랙용 자막 선택기입니다",
"menu": {
"autoload": "마지막으로 사용한 자막을 자동으로 선택",
"disable-captions": "기본 자막 제거"
@ -457,13 +473,13 @@
"disconnected": "연결 해제 됨",
"hide-duration-left": "남은 재생 시간 숨기기",
"hide-github-button": "GitHub 링크 버튼 숨기기",
"play-on-pear-desktop": "유튜브 뮤직에서 재생",
"play-on-application": "{{applicationName}} 에서 재생",
"set-inactivity-timeout": "비활성 시간 제한 설정",
"set-status-display-type": {
"label": "상태 텍스트",
"submenu": {
"application": "{{applicationName}} 듣는 중",
"artist": "{아티스트} 듣는 중",
"pear-desktop": "Pear Desktop 듣는 중",
"title": "{곡 제목} 듣는 중"
}
}

View File

@ -151,8 +151,10 @@
"label": "Vizualiniai patobulinimai",
"submenu": {
"custom-window-title": {
"label": "Pasirinktinis lango pavadinimas",
"prompt": {
"placeholder": "Pavyzdys: Pear Desktop"
"label": "Įveskite pasirinktinį lango pavadinimą: (palikite tuščią, jei norite išjungti)",
"placeholder": "Pavyzdys: {{applicationName}}"
}
},
"like-buttons": {
@ -206,8 +208,8 @@
"restart": "Perkrauti programą",
"show": "Rodyti langą",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -285,7 +287,7 @@
"name": "Aplinkos rėžimas"
},
"amuse": {
"description": "Prideda Pear Desktop palaikyma Amuse grojimo valdikliui pagal 6K Labs",
"description": "Prideda {{applicationName}} palaikyma Amuse grojimo valdikliui pagal 6K Labs",
"name": "Amuse (Platforma Dainininkams)",
"response": {
"query": "Amuse API serveris yra veikiantis. Parašykite Get /query kad gautumėte dainos informacija."
@ -347,7 +349,7 @@
"name": "Apeiti Amžiaus Apribojimus"
},
"captions-selector": {
"description": "„Pear Desktop“ Garso takelių antraščių parinkiklis",
"description": "„{{applicationName}}“ Garso takelių antraščių parinkiklis",
"menu": {
"autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę",
"disable-captions": "Pagal numatytuosius nustatymus išjungti antraštės"
@ -427,13 +429,13 @@
"disconnected": "Atsijungta",
"hide-duration-left": "Slėpti kiek liko laiko",
"hide-github-button": "Slėpti \"GitHub\" nuorodos mygtuką",
"play-on-pear-desktop": "Leisti ant \"Pear Desktop\"",
"play-on-application": "Leisti ant \"{{applicationName}}\"",
"set-inactivity-timeout": "Nustatyti neveiklumo laiką",
"set-status-display-type": {
"submenu": {
"application": "Klausosi {{applicationName}}",
"artist": "Klausosi {artist]",
"title": "Klausosi {song title}",
"pear-desktop": "Klausosi Pear Desktop"
"title": "Klausosi {song title}"
}
}
},

View File

@ -208,8 +208,8 @@
"restart": "Restartēt Lietotni",
"show": "Rādīt logu",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Ambientais Režīms"
},
"amuse": {
"description": "Pievieno Pear Desktop atblastu priekš Amuse \"tagad spēlē\" no 6K Labs",
"description": "Pievieno {{applicationName}} atblastu priekš Amuse \"tagad spēlē\" no 6K Labs",
"name": "Amuse",
"response": {
"query": "Amuse API serveris ir palaists. GET /query lai dabūtu dziesmas info."
@ -373,7 +373,7 @@
"name": "Apiet Vecuma Ierobežojumus"
},
"captions-selector": {
"description": "Subtitru izvēlne priekš Pear Desktop audio ceļiem",
"description": "Subtitru izvēlne priekš {{applicationName}} audio ceļiem",
"menu": {
"autoload": "Automātiski izvēlēties pēdējo izmantotos subtitrus",
"disable-captions": "Bez subtitriem pēc noklusējuma"
@ -456,7 +456,7 @@
"disconnected": "Atvienojies",
"hide-duration-left": "Paslēpt cik palika laika",
"hide-github-button": "Paslēpt GitHub saites pogu",
"play-on-pear-desktop": "Atskaņot uz Pear Desktop",
"play-on-application": "Atskaņot uz {{applicationName}}",
"set-inactivity-timeout": "Iestatīt neaktivitātes taimeru",
"set-status-display-type": {
"label": "Statusa teksts",

View File

@ -154,7 +154,7 @@
"label": "Tajuk tetingkap tersuai",
"prompt": {
"label": "Masukkan tajuk tetingkap tersuai: (biarkan kosong untuk matikan)",
"placeholder": "Contoh: Pear Desktop"
"placeholder": "Contoh: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Mulakan Semula Aplikasi",
"show": "Papar tetingkap",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop : {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Mod Sekitaran"
},
"amuse": {
"description": "Menambahkan sokongan Pear Desktop untuk widget sedang dimain Amuse oleh 6K Labs",
"description": "Menambahkan sokongan {{applicationName}} untuk widget sedang dimain Amuse oleh 6K Labs",
"name": "Terhibur",
"response": {
"query": "API server Amuse telah berjalan. GET /query untuk mendapatkan maklumat lagu."
@ -373,7 +373,7 @@
"name": "Pintas Sekatan Umur"
},
"captions-selector": {
"description": "Pemilih kapsyen untuk trek audio Pear Desktop",
"description": "Pemilih kapsyen untuk trek audio {{applicationName}}",
"menu": {
"autoload": "Pilih kapsyen terakhir diguna secara automatik",
"disable-captions": "Tiada kapsyen secara lalai"
@ -456,13 +456,13 @@
"disconnected": "Tidak disambungkan",
"hide-duration-left": "Sembunyikan tempoh yang tinggal",
"hide-github-button": "Sembunyikan Butang pautan GitHub",
"play-on-pear-desktop": "Main di Pear Desktop",
"play-on-application": "Main di {{applicationName}}",
"set-inactivity-timeout": "Tetapkan tamat masa tidak aktif",
"set-status-display-type": {
"label": "Teks status",
"submenu": {
"artist": "Sedang mendengar {artist}",
"pear-desktop": "Mendengar Pear Desktop",
"application": "Mendengar {{applicationName}}",
"title": "Sedang mendengar {tajuk lagu}"
}
}

View File

@ -261,7 +261,7 @@
"name": "Omgå aldersgrense"
},
"captions-selector": {
"description": "Undertekstverktøy for lydspor i Pear Desktop",
"description": "Undertekstverktøy for lydspor i {{applicationName}}",
"menu": {
"autoload": "Auto-velg sist brukte undertekst",
"disable-captions": "Ingen undertekst som forvalg"
@ -326,7 +326,7 @@
"disconnected": "Frakoblet",
"hide-duration-left": "Skjul gjenværende tid",
"hide-github-button": "Skjul GitHub-lenkeknapp",
"play-on-pear-desktop": "Spill på Pear Desktop",
"play-on-application": "Spill på {{applicationName}}",
"set-inactivity-timeout": "Sett tid før tidsavbrudd"
},
"name": "Rik tilstedeværelse for Discord",

View File

@ -208,8 +208,8 @@
"restart": "एप पुनः सुरु गर्नुहोस्",
"show": "विन्डो देखाउनुहोस्",
"tooltip": {
"default": "युट्युब मिउजिक",
"with-song-info": "युट्युब मिउजिक:{{artist}}-{{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -443,7 +443,7 @@
"disconnected": "डिसकन्एक्टेड",
"hide-duration-left": "बाकी समय लुकाऊ",
"hide-github-button": "GitHub लिंक लुकाऊ",
"play-on-pear-desktop": "Pear Desktop मा बजाउ",
"play-on-application": "{{applicationName}} मा बजाउ",
"set-inactivity-timeout": "इनएक्टिभिटी टाइमआउट राख"
},
"name": "डिसकार्ड रिच प्रीसेंस",

View File

@ -5,10 +5,10 @@
"execute-failed": "Mislukt om plugin {{pluginName}}::{{contextName}} uit te voeren",
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} uitgevoerd in {{ms}}ms",
"initialize-failed": "Initialisatie van plugin \"{{pluginName}}\" mislukt",
"load-all": "Alle plugins laden",
"load-all": "Alle plugins aan het laden",
"load-failed": "Mislukt om plugin \"{{pluginName}}\" te laden",
"loaded": "Plugin \"{{pluginName}}\" geladen",
"unload-failed": "Mislukt om plugin \"{{pluginName}}\" te lossen",
"unload-failed": "Mislukt om plugin \"{{pluginName}}\" te ontladen",
"unloaded": "Plugin \"{{pluginName}}\" gelost"
}
}
@ -154,7 +154,7 @@
"label": "Aangepaste venstertitel",
"prompt": {
"label": "Voer aangepaste venstertitel in: (laat leeg om uit te schakelen)",
"placeholder": "Voorbeeld: Pear Desktop"
"placeholder": "Voorbeeld: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Herstarten App",
"show": "Weergeven Venster",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -237,7 +237,8 @@
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"enable-seekbar": "Schakel thema's voor de schuifbalk in"
},
"name": "Albumkleurthema"
},
@ -287,7 +288,7 @@
"name": "Omgevingsmodus"
},
"amuse": {
"description": "Voegt Pear Desktop ondersteuning toe voor de Amuse now playing widget van 6K Labs",
"description": "Voegt {{applicationName}} ondersteuning toe voor de Amuse now playing widget van 6K Labs",
"name": "Amuse",
"response": {
"query": "Amuse API server loopt. Gebruik /query voor nummer informatie."
@ -320,6 +321,22 @@
"hostname": {
"label": "Hostnaam"
},
"https": {
"label": "HTTPS & Certificaten",
"submenu": {
"cert": {
"dialogTitle": "Selecteer HTTPS certificaat",
"label": "Certificaatbestand (.crt/.pem)"
},
"enable-https": {
"label": "HTTPS aanzetten"
},
"key": {
"dialogTitle": "Selecteer HTTPS privésleutel",
"label": "Privésleutelbestand (.key/.pem)"
}
}
},
"port": {
"label": "Poort"
}
@ -373,7 +390,7 @@
"name": "Leeftijdsbeperkingen Omzeilen"
},
"captions-selector": {
"description": "Ondertitelkeuze voor Pear Desktop-audiotracks",
"description": "Ondertitelkeuze voor {{applicationName}}-audiotracks",
"menu": {
"autoload": "Automatisch de laatst gebruikte ondertitel selecteren",
"disable-captions": "Standaard geen ondertitels"
@ -456,14 +473,14 @@
"disconnected": "Verbinding verbroken",
"hide-duration-left": "Verberg resterende tijd",
"hide-github-button": "GitHub-knop verbergen",
"play-on-pear-desktop": "Afspelen op Pear Desktop",
"play-on-application": "Afspelen op {{applicationName}}",
"set-inactivity-timeout": "Inactiviteitstime-out instellen",
"set-status-display-type": {
"label": "Status tekst",
"submenu": {
"application": "Naar {{applicationName}} aan het luisteren",
"artist": "Naar {artist} aan het luisteren",
"title": "Naar {song title} aan het luisteren",
"pear-desktop": "Naar Pear Desktop aan het luisteren"
"title": "Naar {song title} aan het luisteren"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "Niestandardowy tytuł okna",
"prompt": {
"label": "Podaj niestandardowy tytuł okna (zostaw puste, aby to wyłączyć)",
"placeholder": "Przykład: Pear Desktop"
"placeholder": "Przykład: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Uruchom ponownie aplikację",
"show": "Pokaż okno",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "{{title}} (autorstwa {{artist}}) - Pear Desktop"
"default": "{{applicationName}}",
"with-song-info": "{{artist}} - (autorstwa {{artist}}) - {{applicationName}}"
}
}
},
@ -237,7 +237,8 @@
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"enable-seekbar": "Zezwól stylowanie paska wyszukiwań"
},
"name": "Motyw kolorów albumu"
},
@ -287,14 +288,14 @@
"name": "Tryb otoczenia"
},
"amuse": {
"description": "Wspiera integrację Pear Desktop z widgetami Amuse (od 6K Labs)",
"description": "Wspiera integrację {{applicationName}} z widgetami Amuse (od 6K Labs)",
"name": "Amuse",
"response": {
"query": "Serwer API Amuse działa. Użyj metody GET do /query, aby zdobyć informację o utworze."
}
},
"api-server": {
"description": "Pozwala na kontrolowanie Pear Desktop poprzez podłączenie specjalnego serwera API",
"description": "Pozwala na kontrolowanie {{applicationName}} poprzez podłączenie specjalnego serwera API",
"dialog": {
"request": {
"buttons": {
@ -320,11 +321,27 @@
"hostname": {
"label": "Nazwa hosta (IP)"
},
"https": {
"label": "HTTPS i Certyfikaty",
"submenu": {
"cert": {
"dialogTitle": "Wybierz plik certyfikatu HTTPS",
"label": "Certyfikat (.crt/.pem)"
},
"enable-https": {
"label": "Zezwól HTTPS"
},
"key": {
"dialogTitle": "Wybierz plik prywatnego klucza HTTPS",
"label": "Klucz prywatny (.key/.pem)"
}
}
},
"port": {
"label": "Port"
}
},
"name": "Pear Desktop API",
"name": "{{applicationName}} API",
"prompt": {
"hostname": {
"label": "Wpisz nazwę hosta (IP, np. 0.0.0.0), który będzie użyty do serwera API:",
@ -373,7 +390,7 @@
"name": "Omiń ograniczenia wiekowe"
},
"captions-selector": {
"description": "Selektor napisów dla ścieżek audio Pear Desktop",
"description": "Selektor napisów dla ścieżek audio {{applicationName}}",
"menu": {
"autoload": "Automatycznie wybierz ostatnio używanych napisów",
"disable-captions": "Domyślnie, brak napisów"
@ -456,13 +473,13 @@
"disconnected": "Odłączono",
"hide-duration-left": "Ukryj pozostały czas trwania",
"hide-github-button": "Ukryj przycisk do GitHub",
"play-on-pear-desktop": "Odtwórz w Pear Desktop",
"play-on-application": "Odtwórz w {{applicationName}}",
"set-inactivity-timeout": "Ustaw limit czasu bezczynności",
"set-status-display-type": {
"label": "Opis statusu",
"submenu": {
"application": "Słucha {{applicationName}}",
"artist": "Słucha {artist}",
"pear-desktop": "Słucha Pear Desktop",
"title": "Słucha {song title}"
}
}

View File

@ -154,7 +154,7 @@
"label": "Título da janela customizado",
"prompt": {
"label": "Insira título customizado para a janela: (deixe em branco para desabilitar)",
"placeholder": "Exemplo: Pear Desktop"
"placeholder": "Exemplo: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar aplicativo",
"show": "Mostrar janela",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "Modo ambiente"
},
"amuse": {
"description": "Adiciona suporte ao Pear Desktop ao widget 'Reproduzindo agora' do Amuse da 6K Labs",
"description": "Adiciona suporte ao {{applicationName}} ao widget 'Reproduzindo agora' do Amuse da 6K Labs",
"name": "Amuse",
"response": {
"query": "Servidor API do Amuse em execução. GET /query para obter informações da música."
@ -321,6 +321,22 @@
"hostname": {
"label": "Nome do anfitrião"
},
"https": {
"label": "HTTPS & Certificados",
"submenu": {
"cert": {
"dialogTitle": "Selecione o certificado do HTTPS",
"label": "Arquivo de certificado (.crt/.pem)"
},
"enable-https": {
"label": "Habilitar HTTPS"
},
"key": {
"dialogTitle": "Selecione a chave privada do HTTPS",
"label": "Arquivo de chave privada (.key/.pem)"
}
}
},
"port": {
"label": "Porta"
}
@ -374,7 +390,7 @@
"name": "Ignorar restrições de idade"
},
"captions-selector": {
"description": "Seletor de legendas para faixas de áudio do Pear Desktop",
"description": "Seletor de legendas para faixas de áudio do {{applicationName}}",
"menu": {
"autoload": "Selecionar automaticamente a última legenda usada",
"disable-captions": "Sem legendas por padrão"
@ -457,13 +473,13 @@
"disconnected": "Desconectado",
"hide-duration-left": "Ocultar duração restante",
"hide-github-button": "Ocultar botão do GitHub",
"play-on-pear-desktop": "Reproduzir no Pear Desktop",
"play-on-application": "Reproduzir no {{applicationName}}",
"set-inactivity-timeout": "Definir tempo limite de inatividade",
"set-status-display-type": {
"label": "Texto de status",
"submenu": {
"application": "Ouvindo {{applicationName}}",
"artist": "Ouvindo {artist}",
"pear-desktop": "Ouvindo Pear Desktop",
"title": "Ouvindo {song title}"
}
}

View File

@ -154,7 +154,7 @@
"label": "Título de janela personalizado",
"prompt": {
"label": "Introduza um título: (deixe em branco para desativar)",
"placeholder": "Exemplo: Pear Desktop"
"placeholder": "Exemplo: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar aplicação",
"show": "Mostrar janela",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "Modo ambiente"
},
"amuse": {
"description": "Adiciona suporte ao Pear Desktop para o widget Amuse now playing de 6K Labs",
"description": "Adiciona suporte ao {{applicationName}} para o widget Amuse now playing de 6K Labs",
"name": "Amuse",
"response": {
"query": "O servidor da API Amuse está a ser executado. GET/query para obter informações sobre a faixa."
@ -321,6 +321,22 @@
"hostname": {
"label": "Nome do anfitrião"
},
"https": {
"label": "HTTPS e Certificados",
"submenu": {
"cert": {
"dialogTitle": "Selecionar arquivo do certificado HTTPS",
"label": "Arquivo do certificado (.crt/.pem)"
},
"enable-https": {
"label": "Ativar HTTPS"
},
"key": {
"dialogTitle": "Selecionar arquivo da chave privada HTTPS",
"label": "Arquivo da chave privada (.key/.pen)"
}
}
},
"port": {
"label": "Porta"
}
@ -374,7 +390,7 @@
"name": "Ignorar restrições de idade"
},
"captions-selector": {
"description": "Seletor de legendas para as faixas de áudio do Pear Desktop",
"description": "Seletor de legendas para as faixas de áudio do {{applicationName}}",
"menu": {
"autoload": "Selecionar automaticamente a última legenda utilizada",
"disable-captions": "Sem legendas por omissão"
@ -457,13 +473,13 @@
"disconnected": "Desconectado",
"hide-duration-left": "Ocultar tempo restante",
"hide-github-button": "Ocultar botão GitHub",
"play-on-pear-desktop": "Reproduzir em Pear Desktop",
"play-on-application": "Reproduzir em {{applicationName}}",
"set-inactivity-timeout": "Definir tempo de inatividade",
"set-status-display-type": {
"label": "Texto de estado",
"submenu": {
"application": "A reproduzir {{applicationName}}",
"artist": "A ouvir {artist}",
"pear-desktop": "A reproduzir Pear Desktop",
"title": "A ouvir {song title}"
}
}

View File

@ -154,7 +154,7 @@
"label": "Titlul ferestrei personalizate",
"prompt": {
"label": "Introduceți titlul ferestrei personalizate: (lăsați gol pentru a dezactiva)",
"placeholder": "Exemplu: Pear Desktop"
"placeholder": "Exemplu: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reporneste aplicatia",
"show": "Arata fereastra",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Mod ambiental"
},
"amuse": {
"description": "Adauga suport Pear Desktop pentru Amuse se redă acum widget de 6K Labs",
"description": "Adauga suport {{applicationName}} pentru Amuse se redă acum widget de 6K Labs",
"name": "Amuse",
"response": {
"query": "Server-ul API-ului Amuse rulează. GET /query pentru a obține informații despre melodie."
@ -373,7 +373,7 @@
"name": "Ignoră restricțiile de vârstă"
},
"captions-selector": {
"description": "Selector de subtitrări pentru piesele audio de pe Pear Desktop",
"description": "Selector de subtitrări pentru piesele audio de pe {{applicationName}}",
"menu": {
"autoload": "Selectează automat ultima subtitrare folosită",
"disable-captions": "Fără subtitrări în mod implicit"
@ -456,14 +456,14 @@
"disconnected": "Deconectat",
"hide-duration-left": "Ascunde timpul rămas",
"hide-github-button": "Ascunde butonul cu link-ul GitHub",
"play-on-pear-desktop": "Redă pe Pear Desktop",
"play-on-application": "Redă pe {{applicationName}}",
"set-inactivity-timeout": "Setează intervalul de inactivitate",
"set-status-display-type": {
"label": "Text stare",
"submenu": {
"artist": "Ascultând {artist}",
"title": "Ascultând {song title}",
"pear-desktop": "Ascultând Pear Desktop"
"application": "Ascultând {{applicationName}}"
}
}
},

View File

@ -2,13 +2,13 @@
"common": {
"console": {
"plugins": {
"execute-failed": "Ошибка загрузки плагина {{pluginName}}::{{contextName}}",
"execute-failed": "Ошибка при выполнении плагина {{pluginName}}::{{contextName}}",
"executed-at-ms": "Плагин {{pluginName}}::{{contextName}} загружен за {{ms}}мс",
"initialize-failed": "Ошибка инициализации плагина \"{{pluginName}}\"",
"load-all": "Загружаем все плагины",
"load-failed": "Ошибка загрузки плагина \"{{pluginName}}\"",
"loaded": "Плагин \"{{pluginName}}\" загружен",
"unload-failed": "Ошибка выгрузки плагина \"{{pluginName}}\"",
"unload-failed": "Ошибка при выгрузке плагина \"{{pluginName}}\"",
"unloaded": "Плагин \"{{pluginName}}\" выгружен"
}
}
@ -44,7 +44,7 @@
},
"dialog": {
"hide-menu-enabled": {
"detail": "Меню скрыто, 'Alt' чтобы показать его ('Escape' если используете внутреннее меню приложения)",
"detail": "Меню скрыто, используйте 'Alt' чтобы показать его ('Escape' если используете внутреннее меню приложения)",
"message": "Скрытие меню включено",
"title": "Включено скрытие меню"
},
@ -53,8 +53,8 @@
"later": "Позже",
"restart-now": "Перезапустить сейчас"
},
"detail": "Перезапустите приложение для включения плагина {{pluginName}}",
"message": "Перезапуск для применения плагина {{pluginName}}",
"detail": "Для вступления изменений в силу плагину \"{{pluginName}}\" требуется перезапуск",
"message": "Требуется перезапуск плагина \"{{pluginName}}\"",
"title": "Нужен перезапуск"
},
"unresponsive": {
@ -100,7 +100,7 @@
"disable-hardware-acceleration": "Отключить аппаратное ускорение",
"edit-config-json": "Редактировать config.json",
"override-user-agent": "Переопределить User-Agent",
"restart-on-config-changes": "Перезапускать при изменениях конфига",
"restart-on-config-changes": "Перезапускать при изменениях конфигурации",
"set-proxy": {
"label": "Задать прокси",
"prompt": {
@ -154,7 +154,7 @@
"label": "Собственное название окна",
"prompt": {
"label": "Введите собственное название окна: (оставьте пустым, чтобы отключить)",
"placeholder": "Например: Pear Desktop"
"placeholder": "Например: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Перезапустить приложение",
"show": "Показать окно",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -237,7 +237,8 @@
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"enable-seekbar": "Включить тематическое оформление полосы прокрутки"
},
"name": "Цветовая тема альбома"
},
@ -287,7 +288,7 @@
"name": "Режим Ambient"
},
"amuse": {
"description": "Добавляет поддержку виджета Amuse „сейчас играет“ от 6K Labs",
"description": "Добавляет {{applicationName}} поддержку виджета Amuse „сейчас играет“ от 6K Labs",
"name": "Amuse",
"response": {
"query": "Сервер Amuse API запущен. GET /query чтобы получить информацию о треке."
@ -320,6 +321,22 @@
"hostname": {
"label": "Имя хоста"
},
"https": {
"label": "HTTPS и сертификаты",
"submenu": {
"cert": {
"dialogTitle": "Выберите файл сертификата HTTPS",
"label": "Файл сертификата (.crt/.pem)"
},
"enable-https": {
"label": "Включить HTTPS"
},
"key": {
"dialogTitle": "Выберите файл приватного ключа HTTPS",
"label": "Файл приватного ключа (.key/.pem)"
}
}
},
"port": {
"label": "Порт"
}
@ -373,7 +390,7 @@
"name": "Обход возрастных ограничений"
},
"captions-selector": {
"description": "Выбор субтитров для аудиотреков в Pear Desktop",
"description": "Выбор субтитров для аудиотреков в {{applicationName}}",
"menu": {
"autoload": "Автоматически выбирать последние использованные субтитры",
"disable-captions": "Без субтитров по умолчанию"
@ -456,13 +473,13 @@
"disconnected": "Отключено",
"hide-duration-left": "Скрыть сколько осталось времени",
"hide-github-button": "Скрыть ссылку на GitHub",
"play-on-pear-desktop": "Воспроизвести на Pear Desktop",
"play-on-application": "Воспроизвести на {{applicationName}}",
"set-inactivity-timeout": "Поставить таймер неактивности",
"set-status-display-type": {
"label": "Текст статуса",
"submenu": {
"application": "Слушает {{applicationName}}",
"artist": "Слушает {исполнитель}",
"pear-desktop": "Слушает Pear Desktop",
"title": "Слушает {название трека}"
}
}

View File

@ -201,8 +201,8 @@
"restart": "නැවත ආරම්භ කරන්න",
"show": "තිරය පෙන්වන්න",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "Vlastný názov okna",
"prompt": {
"label": "Napíšte vlastný názov okna: (nechajte prázdne pre vypnutie)",
"placeholder": "Napríklad: Pear Desktop"
"placeholder": "Napríklad: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reštartovať aplikáciu",
"show": "Zobraziť okno",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "Ambientný mód"
},
"amuse": {
"description": "Pridáva Pear Desktop podporu pre Amuse práve prehráva widget od 6K Labs",
"description": "Pridáva {{applicationName}} podporu pre Amuse práve prehráva widget od 6K Labs",
"name": "Amuse",
"response": {
"query": "Amuse API server beží. GET /query to get song info."
@ -374,7 +374,7 @@
"name": "Obísť vekové obmedzenia"
},
"captions-selector": {
"description": "Selektor titulkov pre zvukové stopy Pear Desktop",
"description": "Selektor titulkov pre zvukové stopy {{applicationName}}",
"menu": {
"autoload": "Automatický výber naposledy použitých titulkov",
"disable-captions": "Žiadne titulky"
@ -457,13 +457,13 @@
"disconnected": "Odpojené",
"hide-duration-left": "Skryť zostávajúcu dobu trvania",
"hide-github-button": "Skryť tlačidlo s odkazom na GitHub",
"play-on-pear-desktop": "Spustiť na Pear Desktop",
"play-on-application": "Spustiť na {{applicationName}}",
"set-inactivity-timeout": "Nastaviť časový limit nečinnosti",
"set-status-display-type": {
"label": "Text stavu",
"submenu": {
"artist": "Aktuálne si prehráva {artist}",
"pear-desktop": "Počúvať Pear Desktop",
"application": "Počúvať {{applicationName}}",
"title": "Aktuálne si prehráva {song title}"
}
}

View File

@ -201,8 +201,8 @@
"restart": "Ponovni zagon",
"show": "Pokaži okno",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -335,7 +335,7 @@
"name": "Preskoči starostno omejitev"
},
"captions-selector": {
"description": "Izberi podnapise za Pear Desktop zvočne posnetke",
"description": "Izberi podnapise za {{applicationName}} zvočne posnetke",
"menu": {
"autoload": "Avtomatsko uporabi zadnje izbrane podnapise",
"disable-captions": "Avtomatsko brez podnapisov"
@ -400,7 +400,7 @@
"disconnected": "Prekinjena povezava",
"hide-duration-left": "Skrij preostali čas",
"hide-github-button": "Skrij povezavo do GitHub-a",
"play-on-pear-desktop": "Predvajaj v Pear Desktop",
"play-on-application": "Predvajaj v {{applicationName}}",
"set-inactivity-timeout": "Nastavite časovno omejitev neaktivnosti"
},
"name": "Discord bogata prisotnost (Rich Presence)",

View File

@ -154,7 +154,7 @@
"label": "Prilagođeni naziv prozora",
"prompt": {
"label": "Unesite prilagođeni naslov prozora: (ostavite prazno da onemogućite)",
"placeholder": "Primer: Pear Desktop"
"placeholder": "Primer: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Ponovo pokreni aplikaciju",
"show": "Prikaži prozor",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -237,7 +237,8 @@
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"enable-seekbar": "Omogući postavljanje teme \"seekbar\"-a"
},
"name": "Paleta boja albuma"
},
@ -287,7 +288,7 @@
"name": "Ambijentalni režim"
},
"amuse": {
"description": "Dodaje podršku za 'Amuse now' vidžet (6K Labs) u Pear Desktop",
"description": "Dodaje podršku za 'Amuse now' vidžet (6K Labs) u {{applicationName}}",
"name": "Zabavi",
"response": {
"query": "Amuse API server je pokrenut. Koristite GET /query da biste dobili informacije o numeri."
@ -320,6 +321,22 @@
"hostname": {
"label": "Ime host-a"
},
"https": {
"label": "HTTPS i Sertifikati",
"submenu": {
"cert": {
"dialogTitle": "Izaberi HTTPS datoteku sertifikata",
"label": "Datoteka sertifikata (.crt/.pem)"
},
"enable-https": {
"label": "Omogući HTTPS"
},
"key": {
"dialogTitle": "Izaberi HTTPS datoteku privatnog ključa",
"label": "Datoteka privatnog ključa (.key/.pem)"
}
}
},
"port": {
"label": "Port"
}
@ -373,7 +390,7 @@
"name": "Preskoči starosna ograničenja"
},
"captions-selector": {
"description": "Odabir prevoda za numere/audio trake na Pear Desktop",
"description": "Odabir prevoda za numere/audio trake na {{applicationName}}",
"menu": {
"autoload": "Automatski odaberi prethodno odabrani prevod",
"disable-captions": "Podrazumevano bez prevoda"
@ -456,14 +473,14 @@
"disconnected": "Nije povezano",
"hide-duration-left": "Sakrij preostalo vreme",
"hide-github-button": "Sakrij dugme sa GitHub linkom",
"play-on-pear-desktop": "Reprodukuj na Pear Desktop",
"play-on-application": "Reprodukuj na {{applicationName}}",
"set-inactivity-timeout": "Podesi tajmer za neaktivnost",
"set-status-display-type": {
"label": "Tekst statusa",
"submenu": {
"application": "Slušanje {{applicationName}}",
"artist": "Slušanje {artist}",
"title": "Slušanje {song title}",
"pear-desktop": "Slušanje Pear Desktop"
"title": "Slušanje {song title}"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "Anpassad titel på fönstret",
"prompt": {
"label": "Ange anpassad fönstertitel: (lämna tomt för att inaktivera)",
"placeholder": "Exempelvis: Pear Desktop"
"placeholder": "Exempelvis: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Starta om appen",
"show": "Visa fönster",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "Ambiensläge"
},
"amuse": {
"description": "Lägger till stöd för Pear Desktop i Amuse Now Playing-widgeten av 6K Labs",
"description": "Lägger till stöd för {{applicationName}} i Amuse Now Playing-widgeten av 6K Labs",
"name": "Amuse",
"response": {
"query": "Amuse API-servern körs. Använd GET /query för att hämta information om låt."
@ -321,6 +321,22 @@
"hostname": {
"label": "Värdnamn"
},
"https": {
"label": "HTTPS och certifikat",
"submenu": {
"cert": {
"dialogTitle": "Välj HTTPS-certifikatfil",
"label": "Certifikatfil (.crt/.pem)"
},
"enable-https": {
"label": "Aktivera HTTPS"
},
"key": {
"dialogTitle": "Välj privat nyckelfil (.key/.pem)",
"label": "Privat nyckelfil (.key/.pem)"
}
}
},
"port": {
"label": "Port"
}
@ -374,7 +390,7 @@
"name": "Hoppa Över Åldersbegränsningar"
},
"captions-selector": {
"description": "Välj textning för Pear Desktop-ljudspår",
"description": "Välj textning för {{applicationName}}-ljudspår",
"menu": {
"autoload": "Välj automatiskt senast använda textning",
"disable-captions": "Ingen textning som standard"
@ -457,13 +473,13 @@
"disconnected": "Frånkopplad",
"hide-duration-left": "Dölj återstående tid",
"hide-github-button": "Dölj knapp för GitHub-länk",
"play-on-pear-desktop": "Spela på Pear Desktop",
"play-on-application": "Spela på {{applicationName}}",
"set-inactivity-timeout": "Ställ in inaktivitetstid",
"set-status-display-type": {
"label": "Statusmeddelande",
"submenu": {
"application": "Lyssnar på {{applicationName}}",
"artist": "Lyssnar på {artist}",
"pear-desktop": "Lyssnar på Pear Desktop",
"title": "Lyssnar på {song title}"
}
}

View File

@ -154,7 +154,7 @@
"label": "தனிப்பயன் சாளர தலைப்பு",
"prompt": {
"label": "தனிப்பயன் சாளர தலைப்பை உள்ளிடவும்: (முடக்க காலியாக விடவும்)",
"placeholder": "எடுத்துக்காட்டு: Pear Desktop"
"placeholder": "எடுத்துக்காட்டு: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "பயன்பாட்டை மறுதொடக்கம் செய்யுங்கள்",
"show": "சாளரத்தைக் காட்டு",
"tooltip": {
"default": "யூடியூப் இசை",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -373,7 +373,7 @@
"name": "அகவை கட்டுப்பாடுகள் பைபாச்"
},
"captions-selector": {
"description": "Pear Desktop இசை ஆடியோ டிராக்குகளுக்கான தலைப்பு தேர்வாளர்",
"description": "{{applicationName}} இசை ஆடியோ டிராக்குகளுக்கான தலைப்பு தேர்வாளர்",
"menu": {
"autoload": "கடைசியாக பயன்படுத்தப்பட்ட தலைப்பை தானாகத் தேர்ந்தெடுக்கவும்",
"disable-captions": "முன்னிருப்பாக தலைப்புகள் இல்லை"
@ -456,13 +456,13 @@
"disconnected": "துண்டிக்கப்பட்டது",
"hide-duration-left": "காலம் மீதமுள்ளதை மறைக்கவும்",
"hide-github-button": "அறிவிலிமையம் இணைப்பு பொத்தானை மறைக்கவும்",
"play-on-pear-desktop": "யூடியூப் இசையில் விளையாடுங்கள்",
"play-on-application": "யூடியூப் இசையில் விளையாடுங்கள்",
"set-inactivity-timeout": "செயலற்ற நேரம் முடிந்தது",
"set-status-display-type": {
"label": "நிலை உரை",
"submenu": {
"application": "வலையொளி இசையில் கேட்கிறது",
"artist": "{கலைஞர்} பாடலைக் கேட்கிறேன்",
"pear-desktop": "வலையொளி இசையில் கேட்கிறது",
"title": "பாடலைக் கேட்கிறேன்{பாடல் தலைப்பு}"
}
}

View File

@ -154,7 +154,7 @@
"label": "ชื่อหน้าต่างกำหนดเอง",
"prompt": {
"label": "กำหนดชื่อหน้าต่างที่ต้องการ: (ปล่อยว่างเพื่อปิดใช้งาน)",
"placeholder": "ตัวอย่าง: Pear Desktop"
"placeholder": "ตัวอย่าง: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "รีสตาร์ตแอป",
"show": "แสดงหน้าต่าง",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "โหมดสภาพแวดล้อม"
},
"amuse": {
"description": "เพิ่มการรองรับ Pear Desktop สำหรับ Widget Amuse Now Playing ของ 6K Labs",
"description": "เพิ่มการรองรับ {{applicationName}} สำหรับ Widget Amuse Now Playing ของ 6K Labs",
"name": "Amuse",
"response": {
"query": "API Server ของ Amuse ทำงานอยู่ ส่ง GET ไปที่ /query เพื่อขอข้อมูลเกี่ยวกับเพลง"
@ -373,7 +373,7 @@
"name": "ข้ามข้อจำกัดอายุ"
},
"captions-selector": {
"description": "ตัวเลือกคำบรรยายสำหรับเพลงใน Pear Desktop",
"description": "ตัวเลือกคำบรรยายสำหรับเพลงใน {{applicationName}}",
"menu": {
"autoload": "เลือกคำบรรยายที่ใช้ครั้งล่าสุดโดยอัตโนมัติ",
"disable-captions": "ไม่มีคำบรรยายเป็นค่าเริ่มต้น"
@ -456,14 +456,14 @@
"disconnected": "ตัดการเชื่อมต่อ",
"hide-duration-left": "ซ่อนระยะเวลาที่เหลือ",
"hide-github-button": "ซ่อนปุ่มลิงก์ GitHub",
"play-on-pear-desktop": "เล่นบน Pear Desktop",
"play-on-application": "เล่นบน {{applicationName}}",
"set-inactivity-timeout": "ตั้งระยะเวลาไม่มีกิจกรรม",
"set-status-display-type": {
"label": "ข้อความสถานะ",
"submenu": {
"artist": "กำลังฟัง {ชื่อนักร้อง}",
"title": "กำลังฟัง {ชื่อเพลง}",
"pear-desktop": "กำลังฟัง Pear Desktop"
"application": "กำลังฟัง {{applicationName}}"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "Özel pencere başlığı",
"prompt": {
"label": "Özel pencere başlığı girin: (devre dışı bırakmak için boş bırakın)",
"placeholder": "Örnek: Pear Desktop"
"placeholder": "Örnek: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Yeniden başlat",
"show": "Pencereyi görüntüle",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "Ambiyans Modu"
},
"amuse": {
"description": "6K Labs'ın Amuse oynatma widget'ı için Pear Desktop desteği ekler",
"description": "6K Labs'ın Amuse oynatma widget'ı için {{applicationName}} desteği ekler",
"name": "Amuse",
"response": {
"query": "Amuse API sunucusu çalışıyor. Şarkı bilgilerini almak için GET /query kullanabilirsiniz."
@ -321,6 +321,22 @@
"hostname": {
"label": "Ana bilgisayar adı"
},
"https": {
"label": "HTTPS & Sertifikalar",
"submenu": {
"cert": {
"dialogTitle": "HTTPS sertifika dosyası seç",
"label": "Sertifika dosyası (.crt/.pem)"
},
"enable-https": {
"label": "HTTPS'i aktifleştir"
},
"key": {
"dialogTitle": "HTTPS özel anahtar dosyası seç",
"label": "Özel anahtar dosyası (.key/.pem)"
}
}
},
"port": {
"label": "Port"
}
@ -374,7 +390,7 @@
"name": "Yaş doğrulamasını atla"
},
"captions-selector": {
"description": "Pear Desktop için altyazı seçici",
"description": "{{applicationName}} için altyazı seçici",
"menu": {
"autoload": "Son kullanılan altyazıyı otomatik olarak seç",
"disable-captions": "Varsayılan olarak altyazı yok"
@ -457,13 +473,13 @@
"disconnected": "Bağlantı kesildi",
"hide-duration-left": "Kalan süreyi gizle",
"hide-github-button": "GitHub bağlantısını gizle",
"play-on-pear-desktop": "Pear Desktop de oynat",
"play-on-application": "{{applicationName}} de oynat",
"set-inactivity-timeout": "Hareketsizlik zaman aşımını ayarla",
"set-status-display-type": {
"label": "Durum metni",
"submenu": {
"application": "{{applicationName}} Dinleniyor",
"artist": "{artist} Dinleniyor",
"pear-desktop": "Pear Desktop Dinleniyor",
"title": "{song title} Dinleniyor"
}
}

View File

@ -154,7 +154,7 @@
"label": "Налаштування заголовка вікна",
"prompt": {
"label": "Введіть власний заголовок вікна: (залиште порожнім, щоб вимкнути)",
"placeholder": "Приклад: Pear Desktop"
"placeholder": "Приклад: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Перезапустити програму",
"show": "Показати вікно",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Режим навколишнього середовища"
},
"amuse": {
"description": "Додає підтримку Pear Desktop для віджета Amuse now playing від 6K Labs",
"description": "Додає підтримку {{applicationName}} для віджета Amuse now playing від 6K Labs",
"name": "Amuse",
"response": {
"query": "Сервер Amuse API запущено. Запит GET /query для отримання інформації про пісню."
@ -373,7 +373,7 @@
"name": "Обхід вікових обмежень"
},
"captions-selector": {
"description": "Вибір субтитрів для аудіодоріжок Pear Desktop",
"description": "Вибір субтитрів для аудіодоріжок {{applicationName}}",
"menu": {
"autoload": "Автоматичний вибір останніх використаних субтитрів",
"disable-captions": "За замовчуванням субтитри відсутні"
@ -456,13 +456,13 @@
"disconnected": "Від'єднано",
"hide-duration-left": "Приховати тривалість, яка залишилася",
"hide-github-button": "Приховати посилання на GitHub",
"play-on-pear-desktop": "Слухати на Pear Desktop",
"play-on-application": "Слухати на {{applicationName}}",
"set-inactivity-timeout": "Встановити тайм-аут бездіяльності",
"set-status-display-type": {
"label": "Статус",
"submenu": {
"artist": "Ви слухаєте {artist}",
"pear-desktop": "Відтворення з Pear Desktop",
"application": "Відтворення з {{applicationName}}",
"title": "Ви слухаєте {song title}"
}
}

View File

@ -154,7 +154,7 @@
"label": "Tiêu đề cửa sổ tùy chỉnh",
"prompt": {
"label": "Nhập tiêu đề cửa sổ tùy chỉnh: (để trống để vô hiệu hóa)",
"placeholder": "Ví dụ: Pear Desktop"
"placeholder": "Ví dụ: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Khởi động lại ứng dụng",
"show": "Hiện cửa sổ",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{title}} - {{artist}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Chế độ Môi trường xung quanh"
},
"amuse": {
"description": "Thêm hỗ trợ Pear Desktop cho tiện ích hiển thị bài hát đang phát Amuse của 6K Labs",
"description": "Thêm hỗ trợ {{applicationName}} cho tiện ích hiển thị bài hát đang phát Amuse của 6K Labs",
"name": "Amuse",
"response": {
"query": "Máy chủ API của Amuse đang chạy. GET /query để lấy thông tin về bài hát."
@ -320,6 +320,13 @@
"hostname": {
"label": "Tên máy chủ"
},
"https": {
"submenu": {
"enable-https": {
"label": "Bật HTTPS"
}
}
},
"port": {
"label": "Cổng"
}
@ -373,7 +380,7 @@
"name": "Bỏ qua hạn chế độ tuổi"
},
"captions-selector": {
"description": "Bộ lựa chọn phụ đề cho các bài hát trên Pear Desktop",
"description": "Bộ lựa chọn phụ đề cho các bài hát trên {{applicationName}}",
"menu": {
"autoload": "Tự động chọn phụ đề vừa sử dụng",
"disable-captions": "Không có phụ đề làm mặc định"
@ -456,14 +463,14 @@
"disconnected": "Đã ngắt kết nối",
"hide-duration-left": "Ẩn thời lượng còn lại",
"hide-github-button": "Ẩn nút liên kết GitHub",
"play-on-pear-desktop": "Phát trong Pear Desktop",
"play-on-application": "Phát trong {{applicationName}}",
"set-inactivity-timeout": "Đặt thời gian chờ không hoạt động",
"set-status-display-type": {
"label": "Văn bản trạng thái",
"submenu": {
"application": "Đang nghe {{applicationName}}",
"artist": "Đang nghe nhạc của {artist}",
"title": "Đang nghe nhạc {song title}",
"pear-desktop": "Đang nghe Pear Desktop"
"title": "Đang nghe nhạc {song title}"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "自定义窗口标题",
"prompt": {
"label": "输入自定义窗口标题:(留空表示停用)",
"placeholder": "示例:Pear Desktop"
"placeholder": "示例:{{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "重启应用",
"show": "显示窗口",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "沉浸模式"
},
"amuse": {
"description": "为 6K Labs 的 Amuse 正在播放小部件添加 Pear Desktop 支持",
"description": "为 6K Labs 的 Amuse 正在播放小部件添加 {{applicationName}} 支持",
"name": "Amuse",
"response": {
"query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。"
@ -321,6 +321,22 @@
"hostname": {
"label": "主机名"
},
"https": {
"label": "HTTPS & 数字证书",
"submenu": {
"cert": {
"dialogTitle": "选择 HTTPS 证书文件",
"label": "证书文件(.crt/.pem"
},
"enable-https": {
"label": "启用 HTTPS"
},
"key": {
"dialogTitle": "选择 HTTPS 私钥文件",
"label": "私钥文件(.key/.pem"
}
}
},
"port": {
"label": "端口号"
}
@ -374,7 +390,7 @@
"name": "绕过年龄验证"
},
"captions-selector": {
"description": "Pear Desktop 音轨字幕选择器",
"description": "{{applicationName}} 音轨字幕选择器",
"menu": {
"autoload": "自动选择上次使用的字幕",
"disable-captions": "默认无字幕"
@ -457,13 +473,13 @@
"disconnected": "已断开连接",
"hide-duration-left": "隐藏剩余时长",
"hide-github-button": "隐藏 GitHub 链接按钮",
"play-on-pear-desktop": "转至 Pear Desktop 播放",
"play-on-application": "转至 {{applicationName}} 播放",
"set-inactivity-timeout": "设置非活跃时长",
"set-status-display-type": {
"label": "状态文本",
"submenu": {
"application": "在听 {{applicationName}}",
"artist": "在听 {artist}",
"pear-desktop": "在听 Pear Desktop",
"title": "在听 {song title}"
}
}

View File

@ -154,7 +154,7 @@
"label": "自訂窗口標題",
"prompt": {
"label": "輸入自訂視窗標題: (留空將其停用)",
"placeholder": "例如: Pear Desktop"
"placeholder": "例如: {{applicationName}}"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "重新啟動應用程式",
"show": "顯示視窗",
"tooltip": {
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
"default": "{{applicationName}}",
"with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
}
}
},
@ -288,7 +288,7 @@
"name": "微光效果"
},
"amuse": {
"description": "加入支援 6K Labs 的 Amuse OBS 外掛以取得 Pear Desktop 現正播放資訊",
"description": "加入支援 6K Labs 的 Amuse OBS 外掛以取得 {{applicationName}} 現正播放資訊",
"name": "Amuse",
"response": {
"query": "Amuse API 伺服器正在運作中,使用 /query 以取得歌曲資訊。"
@ -374,7 +374,7 @@
"name": "繞過年齡驗證"
},
"captions-selector": {
"description": "Pear Desktop 音軌字幕選項",
"description": "{{applicationName}} 音軌字幕選項",
"menu": {
"autoload": "自動選擇上次使用的字幕",
"disable-captions": "預設無字幕"
@ -457,13 +457,13 @@
"disconnected": "已斷開連線",
"hide-duration-left": "隱藏音樂剩餘時間狀態",
"hide-github-button": "隱藏 GitHub 頁面按鈕",
"play-on-pear-desktop": "顯示 Play on Pear Desktop 按鈕",
"play-on-application": "顯示 Play on {{applicationName}} 按鈕",
"set-inactivity-timeout": "設定閒置狀態時長",
"set-status-display-type": {
"label": "狀態樣式",
"submenu": {
"artist": "正在聆聽 {artist} 的歌曲",
"pear-desktop": "正在聆聽 Pear Desktop",
"application": "正在聆聽 {{applicationName}}",
"title": "正在聆聽 {song title}"
}
}

View File

@ -14,7 +14,8 @@ import {
protocol,
type BrowserWindowConstructorOptions,
} from 'electron';
import enhanceWebRequest, {
import {
enhanceWebRequest,
type BetterSession,
} from '@jellybrick/electron-better-web-request';
import is from 'electron-is';
@ -53,7 +54,7 @@ import {
} from '@/loader/main';
import { LoggerPrefix } from '@/utils';
import { loadI18n, setLanguage, t } from '@/i18n';
import { APPLICATION_NAME, loadI18n, setLanguage, t } from '@/i18n';
import ErrorHtmlAsset from '@assets/error.html?asset';
@ -104,11 +105,6 @@ protocol.registerSchemesAsPrivileged([
{ scheme: 'mailto', privileges: { standard: true } },
]);
// https://github.com/electron/electron/issues/46538#issuecomment-2808806722
if (is.linux()) {
app.commandLine.appendSwitch('gtk-version', '3');
}
// Ozone platform hint: Required for Wayland support
app.commandLine.appendSwitch('ozone-platform-hint', 'auto');
// SharedArrayBuffer: Required for downloader (@ffmpeg/core-mt)
@ -131,7 +127,9 @@ if (config.get('options.disableHardwareAcceleration')) {
if (is.linux()) {
// Overrides WM_CLASS for X11 to correspond to icon filename
app.setName('com.github.th_ch.pear_music');
app.setName(
'com.github.th_ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u005f\u006d\u0075\u0073\u0069\u0063',
);
// Stops chromium from launching its own MPRIS service
if (await config.plugins.isEnabled('shortcuts')) {
@ -167,9 +165,9 @@ electronDebug({
let icon = 'assets/icon.png';
if (process.platform === 'win32') {
icon = 'assets/generated/icon.ico';
icon = 'assets/generated/icons/win/icon.ico';
} else if (process.platform === 'darwin') {
icon = 'assets/generated/icon.icns';
icon = 'assets/generated/icons/mac/icon.icns';
}
function onClosed() {
@ -663,7 +661,8 @@ app.whenReady().then(async () => {
// Register appID on windows
if (is.windows()) {
const appID = 'com.github.th-ch.pear-music';
const appID =
'com.github.th-ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063';
app.setAppUserModelId(appID);
const appLocation = process.execPath;
const appData = app.getPath('appData');
@ -678,7 +677,7 @@ app.whenReady().then(async () => {
'Windows',
'Start Menu',
'Programs',
'Pear Desktop.lnk',
`${APPLICATION_NAME}.lnk`,
);
try {
// Check if shortcut is registered and valid
@ -698,7 +697,7 @@ app.whenReady().then(async () => {
{
target: appLocation,
cwd: path.dirname(appLocation),
description: 'Pear Desktop App - including custom plugins',
description: `${APPLICATION_NAME} Desktop App - including custom plugins`,
appUserModelId: appID,
},
);

View File

@ -22,7 +22,7 @@ import { startingPages } from './providers/extracted-data';
import promptOptions from './providers/prompt-options';
import { getAllMenuTemplate, loadAllMenuPlugins } from './loader/menu';
import { setLanguage, t } from '@/i18n';
import { APPLICATION_NAME, setLanguage, t } from '@/i18n';
import packageJson from '../package.json';
@ -235,6 +235,9 @@ export const mainMenuTemplate = async (
type: 'text',
placeholder: t(
'main.menu.options.submenu.visual-tweaks.submenu.custom-window-title.prompt.placeholder',
{
applicationName: APPLICATION_NAME,
},
),
},
width: 500,

View File

@ -1,6 +1,6 @@
import { createPlugin } from '@/utils';
import backend from './backend';
import { t } from '@/i18n';
import { APPLICATION_NAME, t } from '@/i18n';
export interface MusicWidgetConfig {
enabled: boolean;
@ -12,7 +12,10 @@ export const defaultConfig: MusicWidgetConfig = {
export default createPlugin({
name: () => t('plugins.amuse.name'),
description: () => t('plugins.amuse.description'),
description: () =>
t('plugins.amuse.description', {
applicationName: APPLICATION_NAME,
}),
addedVersion: '3.7.X',
restartNeeded: true,
config: defaultConfig,

View File

@ -15,6 +15,8 @@ import { createBackend } from '@/utils';
import { JWTPayloadSchema } from './scheme';
import { registerAuth, registerControl, registerWebsocket } from './routes';
import { APPLICATION_NAME } from '@/i18n';
import { type APIServerConfig, AuthStrategy } from '../config';
import type { BackendType } from './types';
@ -146,7 +148,7 @@ export const backend = createBackend<BackendType, APIServerConfig>({
openapi: '3.1.0',
info: {
version: '1.0.0',
title: 'Pear Desktop API Server',
title: `${APPLICATION_NAME} API Server`,
description:
'Note: You need to get an access token using the `/auth/{id}` endpoint first to call any API endpoints under `/api`.',
},

View File

@ -1,5 +1,5 @@
import { createPlugin } from '@/utils';
import { t } from '@/i18n';
import { APPLICATION_NAME, t } from '@/i18n';
import backend from './back';
import renderer, {
@ -22,7 +22,10 @@ export default createPlugin<
CaptionsSelectorConfig
>({
name: () => t('plugins.captions-selector.name'),
description: () => t('plugins.captions-selector.description'),
description: () =>
t('plugins.captions-selector.description', {
applicationName: APPLICATION_NAME,
}),
config: {
enabled: false,
disableCaptions: false,

View File

@ -6,39 +6,39 @@ import { onMenu } from './menu';
import { t } from '@/i18n';
export type DiscordPluginConfig = {
enabled: boolean;
'enabled': boolean;
/**
* If enabled, will try to reconnect to discord every 5 seconds after disconnecting or failing to connect
*
* @default true
*/
autoReconnect: boolean;
'autoReconnect': boolean;
/**
* If enabled, the discord rich presence gets cleared when music paused after the time specified below
*/
activityTimeoutEnabled: boolean;
'activityTimeoutEnabled': boolean;
/**
* The time in milliseconds after which the discord rich presence gets cleared when music paused
*
* @default 10 * 60 * 1000 (10 minutes)
*/
activityTimeoutTime: number;
'activityTimeoutTime': number;
/**
* Add a "Play on Pear Desktop" button to rich presence
* Add a "Play on $APPLICATION_NAME" button to rich presence
*/
playOnPearDesktop: boolean;
'playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063': boolean;
/**
* Hide the "View App On GitHub" button in the rich presence
*/
hideGitHubButton: boolean;
'hideGitHubButton': boolean;
/**
* Hide the "duration left" in the rich presence
*/
hideDurationLeft: boolean;
'hideDurationLeft': boolean;
/**
* Controls which field is displayed in the Discord status text
*/
statusDisplayType: (typeof StatusDisplayType)[keyof typeof StatusDisplayType];
'statusDisplayType': (typeof StatusDisplayType)[keyof typeof StatusDisplayType];
};
export default createPlugin({
@ -46,14 +46,14 @@ export default createPlugin({
description: () => t('plugins.discord.description'),
restartNeeded: false,
config: {
enabled: false,
autoReconnect: true,
activityTimeoutEnabled: true,
activityTimeoutTime: 10 * 60 * 1000,
playOnPearDesktop: true,
hideGitHubButton: false,
hideDurationLeft: false,
statusDisplayType: StatusDisplayType.Details,
'enabled': false,
'autoReconnect': true,
'activityTimeoutEnabled': true,
'activityTimeoutTime': 10 * 60 * 1000,
'playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063': true,
'hideGitHubButton': false,
'hideDurationLeft': false,
'statusDisplayType': StatusDisplayType.Details,
} as DiscordPluginConfig,
menu: onMenu,
backend,

View File

@ -6,7 +6,7 @@ import { discordService } from './main';
import { singleton } from '@/providers/decorators';
import promptOptions from '@/providers/prompt-options';
import { setMenuOptions } from '@/config/plugins';
import { t } from '@/i18n';
import { APPLICATION_NAME, t } from '@/i18n';
import type { MenuContext } from '@/types/contexts';
import type { DiscordPluginConfig } from './index';
@ -18,7 +18,7 @@ const registerRefreshOnce = singleton((refreshMenu: () => void) => {
const DiscordStatusDisplayTypeLabels: Record<StatusDisplayType, string> = {
[StatusDisplayType.Name]:
'plugins.discord.menu.set-status-display-type.submenu.pear-desktop',
'plugins.discord.menu.set-status-display-type.submenu.application',
[StatusDisplayType.State]:
'plugins.discord.menu.set-status-display-type.submenu.artist',
[StatusDisplayType.Details]:
@ -67,12 +67,16 @@ export const onMenu = async ({
},
},
{
label: t('plugins.discord.menu.play-on-pear-desktop'),
label: t('plugins.discord.menu.play-on-application'),
type: 'checkbox',
checked: config.playOnPearDesktop,
checked:
config[
'playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063'
],
click(item: Electron.MenuItem) {
setConfig({
playOnPearDesktop: item.checked,
'playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063':
item.checked,
});
},
},
@ -111,6 +115,9 @@ export const onMenu = async ({
DiscordStatusDisplayTypeLabels[
statusDisplayType as StatusDisplayType
],
{
applicationName: APPLICATION_NAME,
},
),
type: 'radio',
checked: config.statusDisplayType === statusDisplayType,

View File

@ -1,5 +1,7 @@
import { HANGUL_FILLER } from './constants';
import { APPLICATION_NAME } from '@/i18n';
import type { GatewayActivityButton } from 'discord-api-types/v10';
import type { SongInfo } from '@/providers/song-info';
import type { DiscordPluginConfig } from './index';
@ -28,9 +30,14 @@ export const buildDiscordButtons = (
songInfo: SongInfo,
): GatewayActivityButton[] | undefined => {
const buttons: GatewayActivityButton[] = [];
if (config.playOnPearDesktop && songInfo.url) {
if (
config[
'playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063'
] &&
songInfo.url
) {
buttons.push({
label: 'Play on Pear Desktop',
label: `Play on ${APPLICATION_NAME}`,
url: songInfo.url,
});
}

View File

@ -4,6 +4,8 @@ import { render } from 'solid-js/web';
import { TitleBar } from './renderer/TitleBar';
import { defaultInAppMenuConfig, type InAppMenuConfig } from './constants';
import { APPLICATION_NAME } from '@/i18n';
import type { RendererContext } from '@/types/contexts';
const scrollStyle = `
@ -25,7 +27,7 @@ export const onRendererLoad = async ({
}: RendererContext<InAppMenuConfig>) => {
setConfig(await getConfig());
document.title = 'Pear Desktop';
document.title = APPLICATION_NAME;
const stylesheet = new CSSStyleSheet();
stylesheet.replaceSync(scrollStyle);
document.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet];

View File

@ -36,7 +36,7 @@ export default createPlugin({
const previousStatePaused = null;
const data: LumiaData = {
origin: 'peardesktop',
origin: '\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u006d\u0075\u0073\u0069\u0063',
eventType: 'switchSong',
};

View File

@ -13,7 +13,7 @@ import {
type SongInfo,
SongInfoEvent,
} from '@/providers/song-info';
import { changeProtocolHandler } from '@/providers/protocol-handler';
import { APP_PROTOCOL, changeProtocolHandler } from '@/providers/protocol-handler';
import { setTrayOnClick, setTrayOnDoubleClick } from '@/tray';
import { mediaIcons } from '@/types/media-icons';
@ -127,7 +127,7 @@ export default (
const getButton = (kind: keyof typeof mediaIcons) =>
`<action ${display(
kind,
)} activationType="protocol" arguments="peardesktop://${kind}"/>`;
)} activationType="protocol" arguments="${APP_PROTOCOL}://${kind}"/>`;
const getButtons = (isPaused: boolean) => `\
<actions>
@ -260,7 +260,9 @@ export default (
songControls = getSongControls(win);
let currentSeconds = 0;
on('peard:player-api-loaded', () => send('peard:setup-time-changed-listener'));
on('peard:player-api-loaded', () =>
send('peard:setup-time-changed-listener'),
);
let savedSongInfo: SongInfo;
let lastUrl: string | undefined;

View File

@ -5,6 +5,7 @@ import { ScrobblerBase } from './base';
import type { SetConfType } from '../main';
import type { SongInfo } from '@/providers/song-info';
import type { ScrobblerPluginConfig } from '../index';
import { APPLICATION_NAME } from '@/i18n';
interface ListenbrainzRequestBody {
listen_type?: string;
@ -91,8 +92,8 @@ function createRequestBody(
track_name: title,
release_name: songInfo.album ?? undefined,
additional_info: {
media_player: 'Pear Desktop App',
submission_client: 'Pear Desktop App - Scrobbler Plugin',
media_player: `${APPLICATION_NAME} Desktop App`,
submission_client: `${APPLICATION_NAME} Desktop App - Scrobbler Plugin`,
origin_url: songInfo.url,
duration: songInfo.songDuration,
},

View File

@ -23,6 +23,8 @@ import { getSongControls } from '@/providers/song-controls';
import * as config from '@/config';
import { LoggerPrefix } from '@/utils';
import { APPLICATION_NAME } from '@/i18n';
import type { RepeatMode, VolumeState } from '@/types/datahost-get-state';
import type { QueueResponse } from '@/types/music-player-desktop-internal';
@ -70,8 +72,8 @@ class YTPlayer extends MprisPlayer {
function setupMPRIS() {
const instance = new YTPlayer({
name: 'PearDesktop',
identity: 'Pear Desktop',
name: '\u0059\u006f\u0075\u0074\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063',
identity: APPLICATION_NAME,
supportedMimeTypes: ['audio/mpeg'],
supportedInterfaces: ['player'],
});
@ -80,7 +82,8 @@ function setupMPRIS() {
instance.canQuit = false;
instance.canUsePlayerControls = true;
instance.supportedUriSchemes = ['http', 'https'];
instance.desktopEntry = 'pear-desktop';
instance.desktopEntry =
'\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063';
return instance;
}

View File

@ -4,7 +4,8 @@ import { app, type BrowserWindow } from 'electron';
import { getSongControls } from './song-controls';
export const APP_PROTOCOL = 'peardesktop';
export const APP_PROTOCOL =
'\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u006d\u0075\u0073\u0069\u0063';
let protocolHandler: ((cmd: string, ...args: string[]) => void) | undefined;

View File

@ -24,7 +24,7 @@ window.ipcRenderer.on(
},
);
// Used because 'loadeddata' or 'loadedmetadata' weren't firing on song start for some users (https://github.com/pear-devs/pear-music/issues/473)
// Used because 'loadeddata' or 'loadedmetadata' weren't firing on song start for some users (https://github.com/pear-devs/pear-desktop/issues/473)
const srcChangedEvent = new CustomEvent('peard:src-changed');
export const setupSeekedListener = singleton(() => {
@ -52,7 +52,7 @@ export const setupTimeChangedListener = singleton(() => {
export const setupRepeatChangedListener = singleton(() => {
const repeatObserver = new MutationObserver((mutations) => {
// provided by Pear Desktop
// provided by App
window.ipcRenderer.send(
'peard:repeat-changed',
(
@ -69,7 +69,7 @@ export const setupRepeatChangedListener = singleton(() => {
});
// Emit the initial value as well; as it's persistent between launches.
// provided by Pear Desktop
// provided by App
window.ipcRenderer.send(
'peard:repeat-changed',
document

View File

@ -1,8 +1,10 @@
import { Menu, nativeImage, screen, Tray } from 'electron';
import is from 'electron-is';
import defaultTrayIconAsset from '@assets/tray.png?asset&asarUnpack';
import pausedTrayIconAsset from '@assets/tray-paused.png?asset&asarUnpack';
import TrayIcon from '@assets/tray.png?asset&asarUnpack';
import PausedTrayIcon from '@assets/tray-paused.png?asset&asarUnpack';
import TrayIconWhite from '@assets/tray-white.png?asset&asarUnpack';
import PausedTrayIconWhite from '@assets/tray-paused-white.png?asset&asarUnpack';
import * as config from './config';
@ -10,7 +12,7 @@ import { restart } from './providers/app-controls';
import { registerCallback, SongInfoEvent } from './providers/song-info';
import { getSongControls } from './providers/song-controls';
import { t } from '@/i18n';
import { APPLICATION_NAME, t } from '@/i18n';
import type { MenuTemplate } from './menu';
@ -52,14 +54,15 @@ export const setUpTray = (app: Electron.App, win: Electron.BrowserWindow) => {
const pixelRatio = is.windows()
? screen.getPrimaryDisplay().scaleFactor || 1
: 1;
const defaultTrayIcon = nativeImage
.createFromPath(defaultTrayIconAsset)
.createFromPath(is.macOS() ? TrayIconWhite : TrayIcon)
.resize({
width: 16 * pixelRatio,
height: 16 * pixelRatio,
});
const pausedTrayIcon = nativeImage
.createFromPath(pausedTrayIconAsset)
.createFromPath(is.macOS() ? PausedTrayIconWhite : PausedTrayIcon)
.resize({
width: 16 * pixelRatio,
height: 16 * pixelRatio,
@ -67,7 +70,11 @@ export const setUpTray = (app: Electron.App, win: Electron.BrowserWindow) => {
tray = new Tray(defaultTrayIcon);
tray.setToolTip(t('main.tray.tooltip.default'));
tray.setToolTip(
t('main.tray.tooltip.default', {
applicationName: APPLICATION_NAME,
}),
);
// MacOS only
tray.setIgnoreDoubleClickEvents(true);
@ -138,6 +145,7 @@ export const setUpTray = (app: Electron.App, win: Electron.BrowserWindow) => {
t('main.tray.tooltip.with-song-info', {
artist: songInfo.artist,
title: songInfo.title,
applicationName: APPLICATION_NAME,
}),
);

View File

@ -1,7 +1,7 @@
import path from 'node:path';
import process from 'node:process';
import { _electron as electron } from 'playwright';
import { test, expect } from '@playwright/test';
import { test, expect, _electron as electron } from '@playwright/test';
process.env.NODE_ENV = 'test';
@ -32,7 +32,11 @@ test('Pear Desktop App - With default settings, app is launched and visible', as
// expect(title.replaceAll(/\s/g, ' ')).toEqual('Pear Desktop');
const url = window.url();
expect(url.startsWith('https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com')).toBe(true);
expect(
url.startsWith(
'https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com',
),
).toBe(true);
await app.close();
});

View File

@ -25,7 +25,8 @@
"exclude": ["./dist"],
"include": [
"electron.vite.config.mts",
"playwright.config.ts",
"./src/**/*",
"*.config.*js",
"*.config.*js"
]
}

8
tsconfig.test.json Normal file
View File

@ -0,0 +1,8 @@
{
"extends": "./tsconfig.json",
"exclude": ["./dist"],
"include": [
"playwright.config.ts",
"./tests/**/*"
]
}