UniFandora - mini slideshow (imagens, GIFs, vídeos)
(github.com/enarche-ahn)Apresento um aplicativo simples de slideshow que criei porque precisava dele.
Durante a semana de trabalho, quando paro um instante para tomar um café, gosto de deixar GIFs da IU rodando em um cantinho do monitor.
Troquei meu computador principal por um Mac e, como não encontrei um app adequado, resolvi criar algo simples com a ajuda do GPT.
Estas são as principais características do app.
- Função de slideshow
- Reprodução de imagens (incluindo GIFs) e vídeos
- Possibilidade de assistir ao vídeo até o fim, independentemente do tempo configurado do slideshow
- Ajuste da altura da janela de acordo com a proporção da imagem
- Exibição de horário
- Atualização automática
Resolvi compartilhar caso exista alguém com um gosto parecido com o meu.
No começo, eu estava desenvolvendo em Swift, mas pensei que seria melhor fazer algo cross-platform,
então considerei Flutter e Electron e, como não estava pensando em mobile, decidi usar Electron.
Durante este desenvolvimento, também descobri algumas coisas novas, então compartilho esses detalhes junto.
github : https://github.com/enarche-ahn/unifandora-release
Atualização automática
Foi a primeira vez que usei Electron.
Eu já tinha muita curiosidade porque ouvia dizer que o Visual Code foi desenvolvido com Electron,
mas, quando usei de fato, acabei gostando muito.
Fiquei especialmente surpreso com como é fácil integrar atualização automática.
Exibir logs no shell
Normalmente, quando eu imprimia mensagens de log para depuração no renderer, só conseguia verificá-las no modo de desenvolvimento do navegador.
Perguntei ao GPT por via das dúvidas, e ele me apresentou a solução na hora.
O método era tão simples e eficiente que fiquei impressionado.
(Talvez seja porque passei muito tempo desenvolvendo só backend e não conhecia bem isso ^^;)
Se você adicionar como abaixo, o console.log() emitido em [renderer.js] também será exibido corretamente no shell.
[main.js]
// Log messages received from renderer
ipcMain.on('renderer-log', (event, message) => {
console.log('Renderer Log:', message);
});
[preload.js]
contextBridge.exposeInMainWorld('electronAPI', {
sendLog: (message) => ipcRenderer.send('renderer-log', message)
});
[renderer.js]
// Override console.log to forward log messages to the main process.
(function() {
const originalConsoleLog = console.log;
console.log = function(...args) {
if (window.electronAPI && typeof window.electronAPI.sendLog === 'function') {
window.electronAPI.sendLog(args.join(' '));
}
originalConsoleLog.apply(console, args);
};
})();
window.addEventListener('DOMContentLoaded', () => {
...
console.log('Slideshow started...');
});
1 comentários
No momento, publiquei apenas a versão para Windows do binário.
A versão para macOS ainda não está disponível porque preciso me reinscrever no Apple Developer Program ^^;;;
Por enquanto, quem precisar pode baixar o código-fonte, compilar e usar~