Георгий
блин бьюсь уже несколько часов не как не могу понять что не так вот конфиг appId: com.electron.app productName: dockumento-oborot directories: buildResources: build files: - '!**/.vscode/*' - '!src/*' - '!electron.vite.config.{js,ts,mjs,cjs}' - '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}' - '!{.env,.env.*,.npmrc,pnpm-lock.yaml}' - '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}' asarUnpack: - resources/** win: executableName: dockumento-oborot nsis: artifactName: ${name}-${version}-setup.${ext} shortcutName: ${productName} uninstallDisplayName: ${productName} createDesktopShortcut: always script: 'install-script.nsi' mac: entitlementsInherit: build/entitlements.mac.plist extendInfo: - NSCameraUsageDescription: Application requests access to the device's camera. - NSMicrophoneUsageDescription: Application requests access to the device's microphone. - NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder. - NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder. notarize: false dmg: artifactName: ${name}-${version}.${ext} linux: target: - AppImage - snap - deb maintainer: electronjs.org category: Utility appImage: artifactName: ${name}-${version}.${ext} npmRebuild: false publish: provider: generic url: https://example.com/auto-updates electronDownload: mirror: https://npmmirror.com/mirrors/electron/ вот скрипт !include "MUI2.nsh" OutFile "$PRODUCT_NAME-$VERSION-setup.exe" InstallDir "$PROGRAMFILES\$PRODUCT_NAME" Page directory Page instfiles Section "Main" ; Здесь можно добавить действия при установке MessageBox MB_OK "Установка завершена!" SectionEnd но все равно ошибка
Скрипт nsis'а неправильный полностью, переменные не так вставляются и есть конкретные macro, которые можно заэкстендить кастомным кодом
🅰️nimeCoder
Может кому пригодится. В электроне думаю если кто-то делал кастомные шапки, знает что они жрут все события. В винде это можно кое как (сомнительно) вырулить WM_* хуками, ну может это можно как то сделать пропатчивая каждый раз электрон, но ишью уже скоро юбилей в 10 лет. Я долго думал как запилить, пробовал варианты с "ручным" перетягиванием на основе эвентов с renderer + setPosition / setBounds, там основная проблема в том что окно нельзя вытянуть за пределы экрана (покрайней мере на лине с Mutter) из-за того что frameless. В общей сложности гемор крч там конкртеный, но очень хотелось сделать кастомную менюшку (а на гноме она вообще даже системная отсутствует, не говоря уже о кастоме). Причем вытянуть окно с frameless нельзя было за пределы экрана только программно, с app drag все ок На ноде чета нет норм решений по захвату мышки, сделал на go небольшой в пару строк и просто с readline + spawn отпаршиваю эвенты по stdout и проверяю отновительно кординат из события + типа события + происходит ли оно по кординатам шапки окна (просто кординаты окна + размеры шапки и простая функция с условием на нахождение в прямоуголнике). Вроде пашет отлично Можно если охота на с/c++ оно там юзает libuiohook. Единственное нормальное решение которое нормально работает что я для себя нашел.
eden
ого, ты крутой
🅰️nimeCoder
Я долго все искал простой относительно путь которым это можно сделать
🅰️nimeCoder
Честно думал даже так будет жрать клики по той зоне, она вроде как то с системой повязана там, но вроде ок
🅰️nimeCoder
Вышло примерно типа такого, и на фронте просто по этим кординатам открываю попап
🅰️nimeCoder
Вышло примерно типа такого, и на фронте просто по этим кординатам открываю попап
это от эвентэмитера, приходят сырые данные от гошки отпаршенные, пока конечно надо будет порефакторить, но работает вроде хорошо
🅰️nimeCoder
у меня шапка full width + 36px height
🅰️nimeCoder
🅰️nimeCoder
Биндинги на ноде все какие то дохлые, если ещё и под элеткрон я хз) кошмар какой-то) а так вопрос на 2.7 мегабайта мож сжатый ещё меньше, а если ещё кто на плюсах) то мб и меньше 2728944 bytes mouse-hook 1618149 bytes mouse-hook.zip Но концепт рабочий
AlexeyFilippov
🅰️nimeCoder
ну меню))) его же открыть надо)
🅰️nimeCoder
а как ты его откроешь если у тебя клик не ловится никак, ни наъождение мыши на шапке, ничего
🅰️nimeCoder
открыть / закрыть
🅰️nimeCoder
жесть какая-то блин)
🅰️nimeCoder
https://github.com/electron/electron/issues/1354
SheferDev
Привет всем, подскажите пожалуйста, делаю распознавание голоса webkitSpeechRecognition, фронт на nuxt, если в браузере открываю, все работает, в электроне пишет ошибку network
Alexey Filippov
Может кому пригодится. В электроне думаю если кто-то делал кастомные шапки, знает что они жрут все события. В винде это можно кое как (сомнительно) вырулить WM_* хуками, ну может это можно как то сделать пропатчивая каждый раз электрон, но ишью уже скоро юбилей в 10 лет. Я долго думал как запилить, пробовал варианты с "ручным" перетягиванием на основе эвентов с renderer + setPosition / setBounds, там основная проблема в том что окно нельзя вытянуть за пределы экрана (покрайней мере на лине с Mutter) из-за того что frameless. В общей сложности гемор крч там конкртеный, но очень хотелось сделать кастомную менюшку (а на гноме она вообще даже системная отсутствует, не говоря уже о кастоме). Причем вытянуть окно с frameless нельзя было за пределы экрана только программно, с app drag все ок На ноде чета нет норм решений по захвату мышки, сделал на go небольшой в пару строк и просто с readline + spawn отпаршиваю эвенты по stdout и проверяю отновительно кординат из события + типа события + происходит ли оно по кординатам шапки окна (просто кординаты окна + размеры шапки и простая функция с условием на нахождение в прямоуголнике). Вроде пашет отлично Можно если охота на с/c++ оно там юзает libuiohook. Единственное нормальное решение которое нормально работает что я для себя нашел.
а замеры есть +- сколько кушает на фоне
SheferDev
Вроде есть ответ на гитхабе, вчера решил уже не делать, там что-то связано с локацией или что-то подобное
Александр
Может кому пригодится. В электроне думаю если кто-то делал кастомные шапки, знает что они жрут все события. В винде это можно кое как (сомнительно) вырулить WM_* хуками, ну может это можно как то сделать пропатчивая каждый раз электрон, но ишью уже скоро юбилей в 10 лет. Я долго думал как запилить, пробовал варианты с "ручным" перетягиванием на основе эвентов с renderer + setPosition / setBounds, там основная проблема в том что окно нельзя вытянуть за пределы экрана (покрайней мере на лине с Mutter) из-за того что frameless. В общей сложности гемор крч там конкртеный, но очень хотелось сделать кастомную менюшку (а на гноме она вообще даже системная отсутствует, не говоря уже о кастоме). Причем вытянуть окно с frameless нельзя было за пределы экрана только программно, с app drag все ок На ноде чета нет норм решений по захвату мышки, сделал на go небольшой в пару строк и просто с readline + spawn отпаршиваю эвенты по stdout и проверяю отновительно кординат из события + типа события + происходит ли оно по кординатам шапки окна (просто кординаты окна + размеры шапки и простая функция с условием на нахождение в прямоуголнике). Вроде пашет отлично Можно если охота на с/c++ оно там юзает libuiohook. Единственное нормальное решение которое нормально работает что я для себя нашел.
Привет, поделись опытом) как билдишь под платформы?
SheferDev
Может кому пригодится. В электроне думаю если кто-то делал кастомные шапки, знает что они жрут все события. В винде это можно кое как (сомнительно) вырулить WM_* хуками, ну может это можно как то сделать пропатчивая каждый раз электрон, но ишью уже скоро юбилей в 10 лет. Я долго думал как запилить, пробовал варианты с "ручным" перетягиванием на основе эвентов с renderer + setPosition / setBounds, там основная проблема в том что окно нельзя вытянуть за пределы экрана (покрайней мере на лине с Mutter) из-за того что frameless. В общей сложности гемор крч там конкртеный, но очень хотелось сделать кастомную менюшку (а на гноме она вообще даже системная отсутствует, не говоря уже о кастоме). Причем вытянуть окно с frameless нельзя было за пределы экрана только программно, с app drag все ок На ноде чета нет норм решений по захвату мышки, сделал на go небольшой в пару строк и просто с readline + spawn отпаршиваю эвенты по stdout и проверяю отновительно кординат из события + типа события + происходит ли оно по кординатам шапки окна (просто кординаты окна + размеры шапки и простая функция с условием на нахождение в прямоуголнике). Вроде пашет отлично Можно если охота на с/c++ оно там юзает libuiohook. Единственное нормальное решение которое нормально работает что я для себя нашел.
не знаю почему тебя так, я сделал за пару строчек кода)
🅰️nimeCoder
а замеры есть +- сколько кушает на фоне
Ну оно совсем копейки же кушает
🅰️nimeCoder
Привет, поделись опытом) как билдишь под платформы?
На гитхаб экшенах или на своём пека с wine
SheferDev
винда, макось не тестил
🅰️nimeCoder
Ну вот, наверное хуками. Хуками wm я писал что можно на винде, только на винде и то если честно вся эта игра с Windows api не очень
🅰️nimeCoder
А кроме винды есть ещё 2 платформы.
SheferDev
Гляну как нибудь на днях на макоси
SheferDev
ты не работал с распознаванием голоса на Electron?
🅰️nimeCoder
+ hookWindowMessage
🅰️nimeCoder
Но я не помню, мож там ещё какие пролемы
🅰️nimeCoder
А когда делаешь по эвентам из браузера и ставишь позицию окна там вылезает проблема что за пределы окна не вытащить его, оно в монитор упирается, мож на винде не упирается но на лине точно
🅰️nimeCoder
ты не работал с распознаванием голоса на Electron?
Ну если какой нибудь яндекс спич кит то он к электону мало отношения имеет
🅰️nimeCoder
А если системные какие то фичи то хз вообще
SheferDev
обычный гугловский, через браузер работает у нукста, через электрон открываю, ошибку бьет по сети, будто электрон не дает доступ к интернету
🅰️nimeCoder
Да и электрон это не гуглхром, и гугл свою апи туда сомневаюсь что по умолчанию разрешает
🅰️nimeCoder
Насколько помню в чате уже было что-то подобное, и вроде дело было в cors
🅰️nimeCoder
Ну типа ты всегда можешь рендер процесс запросы переписать в main по protocol и подредактировать политики
Александр
На гитхаб экшенах или на своём пека с wine
Это ты на каждой платформе билдишь гошку или пребилд какой-то сделал
🅰️nimeCoder
А, ты про гошку ну на акшенах её проще всего
🅰️nimeCoder
А потом пребилд юзать
🅰️nimeCoder
Пока конкретно эту штуку чисто сделал и надо ещё в самой прилу чуть доработать, так что готовых бинарей что можно скачать нету особо
SheferDev
в index.html дай разрешение
скинь фулл линк пожалуйста
Alexey Filippov
скинь фулл линк пожалуйста
<meta http-equiv="Content-Security-Policy" content="default-src 'self' https://www.yandex.ru https://api.openweathermap.org; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:" />
SheferDev
Спасибо, попробую
🅰️nimeCoder
можешь думаю тут глянуть воркфловы
Александр
спасибо
🅰️nimeCoder
репа кстати тоже четкая в принципе) юзаю данный продукт)
🅰️nimeCoder
🅰️nimeCoder
а замеры есть +- сколько кушает на фоне
при активном движении мышкой около 0.25 % CPU в пике, память стабильно 5.7 МБ (+-0.2)
Идель Гатауллин
!спам
Идель Гатауллин
!спам
Alexey Filippov
при активном движении мышкой около 0.25 % CPU в пике, память стабильно 5.7 МБ (+-0.2)
child_process? у меня +- так же ест. он всегда на фоне или только при пкм включается? хотя наврядли так получится, поэтому на фоне крутит
🅰️nimeCoder
child_process? у меня +- так же ест. он всегда на фоне или только при пкм включается? хотя наврядли так получится, поэтому на фоне крутит
ну чисто в теории в части случаев его можно офнуть если нет фокуса окна (хотя сомнительно, ведь фокус может быть выдан резко при клике на окно с заднего плана), при скрытии окна, при курсоре который находится далеко от окна, наверное и другое можно придумать, но жрать сильно оно не просит и никак не мешает по сути
🅰️nimeCoder
Ну можно на NAPI наверное libhookio встроить, но думаю вопрос геморроя с версиями ABI, сборкой под каждую версию электрона и прочим встанет более резко, а экономия сомнительная, можно на си сделать, мб будет еще меньше жрать (минус гошный GC и еще чего мб), но опять же я лично лучше го возьму, меньше гемора с сборкой
🅰️nimeCoder
Так я же проверяю в фокуск ли окно, если нет игнорирую
🅰️nimeCoder
По большому счету я проверил edge кейсы
🅰️nimeCoder
Очень рад что решил траблу, хотелось жутко)
Alexey Filippov
Очень рад что решил траблу, хотелось жутко)
слушай, я тут пишу резюме. сможешь посмотреть, что-о посоветовать
Alexey Filippov
ща доделаю и скину
Alexey Filippov
Очень рад что решил траблу, хотелось жутко)
и второй момент твое аниме не заблокировали? в новостях что-то подобое читал
🅰️nimeCoder
я вообще вне РФ)
🅰️nimeCoder
слава богу у нас еще не такая содомия
🅰️nimeCoder
По тиху начал заполнять заглушки в менюшке контекстной) ну и еще хотелось эту штуку проработать для кастомного PIP, там возможность отследить эвенты не менее важна
Alexey Filippov
как и надо ли
Alexey Filippov
🅰️nimeCoder
Ну и важный момент еще, покрайней мере у меня, это обязательное навешивание где надо app-region: no-drag; ибо все что попадает в зону app-region: drag; (даже контекстное меню) на всю высоту / ширину сжирает эвенты
🅰️nimeCoder
Т.е если бы на контекстном меню небыло app-region: no-drag; у меня бы вся часть его что находится над app-region: drag; была бы не кликабельна
🅰️nimeCoder
Это при всем том что блок позиционируется абсолютно и сам не дитя зоны драга. Странное поведение конечно, но да и хер с ним. Система как то магически там видать зону обрабатывает