Krapka
Хотя я изначально думал между ним и tauri и выбрал второе, но уже не помню почему
Sergey
А Neutrolino?
Он сырой вроде как
Sergey
Я даже завести не смог
Krapka
Я даже завести не смог
Думаю что-то такое и у меня было. Проверю сейчас
Krapka
Были ещё парочку других проблем которые уже не вспомню, но на решение этих ушло достаточно много времени, потому хотелось бы перейти на что-то, что работало бы
А, вспомнил. Ещё в VSCode не запускался из-за переменных среды. Приходилось запускать из внешнего терминала. Думаю опять проблема линукса, но это в добавок ко всем багам выше
Krapka
Я пока все баги пофиксил, забыл уже что хотел делать
Elmir
Я не до конца понял что значит «хорошая связка»
Чтобы все преимущества фронта но node integration true and context isolation false функциональность
Elmir
Вся функциональность ноды и апи операционной системы напрямую
Ахмед
Ребят я с электрон, не сильно знаком, но я думаю что он умеет отслеживать состояние сети, если да то кто знает, как я могу настроить электрон так чтобы он отслеживал состояние сети? к примеру если ее нет могу ли я через ipc мб, передать уведомление в интерфейс мол "нет сети"? (у меня шаблон electron +vue + vite)
Вальдемар
всем привет! позвольте такой вопрос. пытаюсь сделать приложение с электроном (версия последняя), застрял на моменте с драг дропом. задача вроде простая, перетянуть из папки файл в окно и получить к нему путь. но не выходит никак. в консоли дата трансфер пустой. да и само перетаскивание срабатывает будто через раз. const dropZone = document.getElementById("drop-zone") as HTMLElement; dropZone.addEventListener("dragover", (event) => { event.preventDefault(); }); dropZone.addEventListener("drop", (event) => { console.log("event", event); event.preventDefault(); const files = event.dataTransfer?.files; if (files && files.length > 0) { selectedFilePath = files[0].path; dropZone.textContent = `Выбран файл: ${files[0].name}`; console.log("Выбранный файл:", selectedFilePath); } }); я уже как только не крутил и не вертел эти ивенты - не выходит. видео приложил, где видно, как через раз подхватывается и что тогда даже промелькивает, что имя файла андефайнд.
Вальдемар
в доке электрона я видел драг-дроп, но там из приложения, а мне бы в приложение закинуть. я прикидываю, что здесь какая-то проблема с ограничением по безопасности. но как тогда получить этот путь?
Вальдемар
полдня копаний и попыток, но я нашел на СО решение моей проблемы. dropZone.addEventListener("dragover", (event) => { event.preventDefault(); event.stopPropagation(); }); dropZone.addEventListener("drop", async (event) => { event.preventDefault(); event.stopPropagation(); const files = event.dataTransfer?.files; if (files && files.length > 0) { const file = files[0]; selectedFilePath = window.api.getFilePath(file); dropZone.textContent = `${file.name}`; } }); window.api.getFilePath(file); это getFilePath: (file: File): string => webUtils.getPathForFile(file), в прелоаде. причем, я до этого пробовал веб утилс в рендрере напрямую. и в доке ссылка на рендерер где веб утилс, что сбило меня с толку. в общем, он там не должен быть, иначе не заработает. при этом - 0 ошибок, 0 информации и выпилили это в электроне 32. опыт неприятный, время потрачено много на такую ерунду. может кому-то в будущем поможет.
eden
подскажите, как цвет поменять окна? пробовал так, не получилось
eden
eden
разобрался
Sergey
разобрался
как сделал?
eden
как сделал?
оказывается, надо было в body css прописать фон, я думал, он идет из browserWindow
🅰️nimeCoder
оказывается, надо было в body css прописать фон, я думал, он идет из browserWindow
тот что в browser рисуется на окне вроде, а тот что в CSS поверх
🅰️nimeCoder
и принимает оно вроде только HEX
eden
и принимает оно вроде только HEX
не, названия цветов тоже
🅰️nimeCoder
тот что в browser рисуется на окне вроде, а тот что в CSS поверх
это особенно заметно когда быстро мачаешь размер окна и хромиум "неуспевает" адаптировать верстку
eden
да, я вот и подумал, что этот кусок - часть этого окна
🅰️nimeCoder
тот фон что будет за пределами рендера HTML будет тем что у BrowserWindow
🅰️nimeCoder
ну это чисто по тому что я помню
🅰️nimeCoder
но я как то хотел в зависимости от темы приложения менять этот фон, у меня окно тоже transparent, но почему то я отказклся от этой идеи вроде
🅰️nimeCoder
но я как то хотел в зависимости от темы приложения менять этот фон, у меня окно тоже transparent, но почему то я отказклся от этой идеи вроде
оно как бы сглаживает эффект при изменении размера если на темной теме не вылазит белый и наоборот
Krapka
Я даже завести не смог
В целом, штука хорошая, но не для продакшн. Верно подмечено, сырая
Rinat
Добрый день. Прошу помощи разобраться в rendere, АЭС частности в ipcMain: как передать объект с параметрами? Получается только переменную. ipcMain.handle(‘task’,()=>varInt) Возможно пережать объект?
Rinat
Спасибо, буду разбираться.
Vladislav
Спасибо, буду разбираться.
А что там разбираться -то, 5 минут прочтения и все ясно как день... // renderer.js (async () => { const user = await window.api.getUser(42); console.log('Получен пользователь:', user); })(); // preload.js const { contextBridge, ipcRenderer } = require('electron'); // Прокидываем метод в глобальное пространство contextBridge.exposeInMainWorld('api', { getUser: (id) => ipcRenderer.invoke('get-user', id), }); // Главный процесс ждёт вызова по каналу 'get-user' ipcMain.handle('get-user', async (event, id) => { // Возвращаем объект с данными return { id, name: 'John Doe', email: 'johnDoe@example.com' }; });
Rinat
Спасибо, очень помог)
eden
Привет, у кого-нибудь есть гайд по настройке github action на автоматический билд, подписание и нотаризацию приложений? Я близок к *роскомнадзор*
eden
могу скинуть свой экшн когда буду у компа, или опиши проблему, мб подскажу что
спасибо за ответ! Сейчас проблема такая - я использую этот экшен https://github.com/paneron/action-electron-builder и там предлагают использовать либо api_key либо apple_id. Я выбрал второй вариант, но что-то не работает и непонятно что. Экшн падает с такой ошибкой: ⨯ Unexpected token 'E', "Error: HTT"... is not valid JSON failedTask=build stackTrace=SyntaxError: Unexpected token 'E', "Error: HTT"... is not valid JSON SyntaxError: Unexpected token 'E', "Error: HTT"... is not valid JSON Сам экшен был рабочий, я потерял доступ к аккаунту и пытаюсь заменить переменные на другие. Проблема где-то здесь зарыта
Артем
зайди в свой девелоперский аккаунт от эпл, и переподпиши соглашения (скорей всего они обновились) после ревокни свой app specific password, если ты его использовал
Артем
сталкивался с абсолютно такой же проблемой
eden
сейчас попробую первый способ
Евгений
Есть рабочий плагин или либа для выпадающего меню на пкм? Как в хроме "исследовать элемент"
Евгений
Последний которым пользовался пару лет назад больше не работает на новых версиях
eden
сейчас попробую первый способ
вроде заработало. Надо написать пост, про то как это с нуля собирать, вдруг кому-то пригодится, да и сам забуду как страшный сон, как это делать
Артем
а, нет.. не заработало
попробуй через cli вручную для макос подписать (так проверишь валидность кредов)
eden
попробуй через cli вручную для макос подписать (так проверишь валидность кредов)
skipped macOS notarization reason=notarize options were unable to be generated вот такая штука в логах есть
Артем
попробуй используя notarytool подписать локально не через экшн. там вроде еще можно логи расширить через флаг соответствующий
eden
какой-то пиздец, простите. 15 источников пришлось почитать, в трех репозиториях исходники посмотреть и одно ишью, чтобы разобраться, как это дело завести. то, что написано в README к github экшену was a fucking lie
eden
в чем проблема была?
это еще предстоит выяснить) я жонглировал переменнными, пока не заработало, буду отключать по одной, пока не останутся только нужные. но если коротко, я пошёл по такому пути - вместо того, чтобы опираться на доку экшена в гитхабе, я пошёл смотреть https://github.com/electron/notarize и что конкретно он ждёт в переменных. У него есть несколько сетов переменных и там очень хитро - если ты заведешь какую-то неправильную, лишнюю переменную - он может сломаться.
eden
плюс наткнулся на такую штуку - https://github.com/electron-userland/electron-builder/issues/8103 APPLE_TEAM_ID нужен всегда, хотя не везде об этом пишут
Георгий
плюс наткнулся на такую штуку - https://github.com/electron-userland/electron-builder/issues/8103 APPLE_TEAM_ID нужен всегда, хотя не везде об этом пишут
+, тоже с этим возился в своё время, по итогу APPLE_ID/APPLE_ID_PASSWORD/APPLE_TEAM_ID в энвах сработал нормально
eden
+, тоже с этим возился в своё время, по итогу APPLE_ID/APPLE_ID_PASSWORD/APPLE_TEAM_ID в энвах сработал нормально
что самое интересное - этот набор переменных у меня не заработал. ему понадобилось чтобы она называлась APPLE_APP_SPECIFIC_PASSWORD и никак иначе(
Георгий
Георгий
Для интереса .plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.cs.allow-unsigned-executable-memory</key> <true/> <key>com.apple.security.cs.allow-jit</key> <true/> </dict> </plist> sign.cjs const { notarize } = require('@electron/notarize'); exports.default = async function (context) { const { electronPlatformName, appOutDir, packager } = context; const { NOTARIZE_APPLE_ID, NOTARIZE_APPLE_ID_PASSWORD, NOTARIZE_APPLE_TEAM_ID } = process.env; if (electronPlatformName !== 'darwin') { return; } console.info('Start custom notarize process for MacOS'); try { await notarize({ appPath: `${ appOutDir }/${ packager.appInfo.productFilename }.app`, appBundleId: 'bla-bla-bla', appleId: NOTARIZE_APPLE_ID, appleIdPassword: NOTARIZE_APPLE_ID_PASSWORD, teamId: NOTARIZE_APPLE_TEAM_ID, }); } catch (err) { console.error(err); } };
eden
он там от себя приколов, кажется, добавляет
eden
и еще вот такое нашёл
Георгий
он там от себя приколов, кажется, добавляет
Ну если репозиторий закрытый, а скрипт сам дёргается энивей через electron-builder, то можно же просто команду через npm стартануть
Георгий
А ты получается пытаешься прям в экшене все сделать самом?
eden
А ты получается пытаешься прям в экшене все сделать самом?
ага, потому что так удобнее билдить для мака и лично мне в 100 раз удобнее билдить для винды
Георгий
ага, потому что так удобнее билдить для мака и лично мне в 100 раз удобнее билдить для винды
Я в гитлабе пробовал автоматом билд прогонять, правда только на винду из-за кастомных раннеров. Вроде тоже норм было
Георгий
хммм, интересно, спасибо. выходит экшн необязательный тогда
Формально да, и там по коду выше видно, что я проверяю платформу для билда, чтобы у меня винда там случайно не начала чего-то пытаться подписывать
eden
спасибо!
eden
купил сертификат для подписания приложений для винды а он теперь требует подтверждения регистрации компании и прочую хрень просчитался, но где
Yuri
а ИП-то подойдет?
Разные компании предъявляют разные требования. Если ты у GlobalSign к примеру покупаешь ev серт, то подойдет
eden
certum.eu это здесь
Yuri
Я про то, что некоторые компании выдают серты только ООО
eden
пытаюсь хранить настройки в keychain, и моё приложение теперь спрашивает пароль от него. Ни разу такого в других приложениях не видел. Как от этого избавиться, подскажите, пожалуйста? использую две эти штуки: import { safeStorage } from 'electron'; import Store from 'electron-store';
Георгий
да, но юзеров это отпугнет, думаю
А у тебя условно запрашивается пароль при вызове safeStorage.encryptString?