Importe do cartão, tria, revele e entregue — com o ensaio do cliente aberto ao lado. O VintageLightbox (Zed GPUI) é o app do balcão: as telas desenhadas em Rust, o motor de revelação na GPU e o catálogo na sua máquina.
Não há instalador pronto: um arquivo só para Windows, macOS e Linux compila o app no próprio computador e instala sozinho o que faltar. A compilação usa um perfil próprio, mais rápido e com menos memória que o dos pacotes prontos, e abre menos compilações ao mesmo tempo em máquinas com pouca memória.
É o app escrito inteiro em Rust, com a interface desenhada pelo GPUI e o motor de revelação na GPU. Desde 17/09/2026 ele segue o desenho do painel da RecordarFotos: as mesmas cores, a mesma moldura e as mesmas telas. Traz RAW, cartão da câmera, pasta fixa de exportação, tela do cliente no segundo monitor e envio que continua na bandeja. Não precisa do Xcode.
Antes de começar: internet ligada, alguns GiB livres no disco e
15 a 40 minutos na primeira vez. Atualizar é repetir o mesmo passo, e as opções
(--seco, --versao, --destino, e no Windows
VLB_SECO, VLB_VERSAO, VLB_DESTINO) estão em
Opções.
Além do Rust -gnu e do MSYS2 (compilador, libclang e o
windres), este instalador põe pelo winget o
Windows SDK, de onde vem o fxc.exe que compila os shaders.
curl -fsSL https://raw.githubusercontent.com/alexkads/VintageLightbox/main/scripts/instalar-vintagelightbox-gpui.cmd | shxcode-select --install, clique em Instalar, espere terminar e
cole a linha de novo.Não precisa do Xcode. Os shaders do GPUI são compilados pelo próprio macOS quando o app abre.
Ele instala o VintageLightbox (Zed GPUI).app, com o identificador dos pacotes
prontos: as permissões já concedidas continuam valendo. Um VintageLightbox.app
antigo não é apagado.
curl -fsSL https://raw.githubusercontent.com/alexkads/VintageLightbox/main/scripts/instalar-vintagelightbox-gpui.cmd | shDeu errado? A última linha diz em que passo parou e qual arquivo mandar a quem está ajudando — o registro da instalação, com o retrato da máquina e tudo o que passou pela tela. Ver Quando algo dá errado.
Com apt, dnf ou pacman, o instalador põe o compilador, a libclang e as bibliotecas que o GPUI abre: X11, Wayland, xkbcommon, fontconfig, ALSA, OpenSSL, D-Bus, libsecret e o Vulkan (com o driver Mesa). Sem um driver Vulkan a janela não abre, mesmo com tudo compilado.
Câmeras e cartões via PTP: para câmeras que aparecem como
camera:/ ou gphoto2://, instale o suporte da sua distribuição:
# Ubuntu/Debian/Mint
sudo apt install gphoto2 gvfs-backends libgphoto2-6
# Fedora
sudo dnf install gphoto2 gvfs-gphoto2 libgphoto2
# Arch/Garuda/Manjaro
sudo pacman -S gphoto2 gvfs libgphoto2
Depois de conectar a câmera, abra Do cartão ou pasta…. O VintageLightbox
monta a câmera pelo GVfs, mostra as fotos sem baixar o cartão inteiro e
copia somente as fotos escolhidas. O gphoto2 direto é usado como fallback
quando o GVfs não estiver disponível. Se a câmera não aparecer, confira também as regras
udev e se a sessão gráfica está rodando com GVfs.
Para importar somente algumas fotos: no menu Do cartão ou pasta…, clique em Escolher pasta… e selecione a pasta da câmera ou do cartão. Na tela de seleção, clique na primeira foto e depois faça Shift+clique na última para marcar um intervalo. Use ⌘+A no macOS ou Ctrl+A no Linux e Windows para marcar todas as fotos; cliques com Ctrl ou ⌘ alternam fotos individuais. Confirme somente depois de marcar os arquivos desejados: apenas essa seleção será copiada para a sessão.
O botão Escolher fotos… também permite selecionar arquivos diretamente pelo seletor nativo do sistema. Para uma seleção por intervalo consistente, use a tela de seleção do VintageLightbox após escolher a pasta.
Na raiz do projeto, o caminho recomendado é:
./crates/ui-gpui/rodar-local.sh
Para iniciar somente o app, sem a infraestrutura local de vendas:
VLB_POS_VENDA_URL=http://localhost:8080 \
VLB_SITE_URL=http://localhost:8001 \
cargo run --release -p ui-gpui
Quando for necessário levantar também o e-commerce local:
cd /Users/alexkads/Projects/RecordarFotos/recordarfotos-e-commerce
docker compose -f docker-compose.dev.yml up -d
cd /Users/alexkads/Projects/RecordarFotos/VintageLightbox-Rust
VLB_POS_VENDA_URL=http://localhost:8080 VLB_SITE_URL=http://localhost:8001 cargo run --release -p ui-gpui
Para instalar em outros computadores com Fedora sem compilar em cada um, gere um
.rpm numa máquina com o projeto:
./scripts/empacotar-rpm.sh # compila e gera dist/fedora/*.rpm
./scripts/empacotar-rpm.sh --instalar # gera e já instala nesta máquina
Nos outros computadores, basta dar dois cliques no arquivo, ou:
sudo dnf install ./vintagelightbox-0.1.10-1.fc44.x86_64.rpm
O dnf traz sozinho as bibliotecas que faltarem e sugere a extensão da bandeja, o
driver Vulkan e o suporte à câmera. Para remover: sudo dnf remove vintagelightbox.
⚠️ Gerado no Fedora 44, o pacote só instala no Fedora 44 em diante.
No Fedora:
dnf install.
O instalador para e mostra um comando sudo rpm-ostree install …: rode-o,
reinicie o computador e cole a linha acima de novo.dd/mm/aaaa hh:mm. Agendamento novo e cancelamento avisam como no chatbot.No Windows e no Linux, onde está ⌘ use Ctrl. As teclas soltas não valem enquanto se digita num campo.
| Onde | Tecla | O que faz |
|---|---|---|
| Em todo o app | ⌘ B | Recolhe ou abre o menu lateral |
| ⌘ Z · ⌘ ⇧ Z | Desfazer · refazer | |
| ⌘ A · ⌘ D | Marcar todas · desmarcar | |
| Esc | Sai da revelação ou da impressão e volta | |
| Galeria e revelação | ← → ↑ ↓ | Anda pelas fotos |
| 0–5 | Nota (0 tira) | |
| 6 7 8 9 | Cor: vermelha, amarela, verde, azul | |
| P · X · U | Escolhida · rejeitada · sem sinalizador | |
| B | Marca ou desmarca como levada no balcão | |
| Delete ou ⌫ | Apaga as fotos marcadas | |
| Revelação | R | Recorte e endireitar |
| \ | Antes e depois | |
| ⌘ ⇧ C · ⌘ ⇧ V | Copiar · colar a revelação | |
| Tela do cliente | Esc · I | Fecha · mostra ou esconde as informações |
| Importação | Espaço · ↑ ↓ · Enter | Marca a foto · anda · confirma |
| Chatbot | Enter · ⇧ Enter | Envia a mensagem · quebra a linha |
| Enter na busca | Busca nos cinco canais | |
| Agendamentos | Esc | Volta um passo: do formulário aos detalhes, e fecha |
| Caixa | F1 · F2 · F3 | Atalhos · desconto · pessoas |
| F4 | Finalizar (no pagamento, conclui a venda) | |
| F6 · F7 · F8 | Sangria e suprimento · vendas · abrir ou fechar o caixa | |
| 1–8 · ⌫ | No pagamento: escolhe a forma · tira o último lançado | |
| % · R | No desconto: em percentual · em reais | |
| S · U | No movimento: sangria · suprimento | |
| macOS | ⌘ H · ⌥ ⌘ H · ⌘ Q | Ocultar · ocultar os outros · sair |
O app se atualiza sozinho. Toda vez que ele abre, confere se há versão nova. Se houver, aparece no rodapé a faixa com a versão e o que ela traz — em destaque quando a atualização é importante — e o botão Ver novidades, que mostra o que mudou e por que vale atualizar.
.dmg, que não é mais
publicado)? Clique em Atualizar: sem pacote novo, o app compila, como no
item acima, e daí em diante segue esse caminho.
Nada se perde se a atualização falhar. O app instalado só é trocado depois de a
versão nova compilar e provar que abre, e a anterior fica guardada ao lado
(.anterior). Se algo der errado, a faixa diz que a versão que você usa continua
funcionando, onde está o registro, e oferece Tentar de novo — sozinho, o app só
tenta de novo no dia seguinte. O catálogo e as fotos não mudam com a atualização.
Se nada aparece, é porque está tudo em dia: o app não interrompe ninguém para dizer isso. Ainda dá para atualizar à mão, repetindo o passo da instalação (dois cliques no arquivo no Windows, ou a mesma linha no Terminal).
As versões ficam num servidor da Recordar Fotos e, se ele não responder, numa cópia no GitHub. Tudo é público e gratuito; o app não manda nada sobre você ou suas fotos ao procurar.
| O que | macOS e Linux | Windows |
|---|---|---|
| Só mostrar o que faria | … | sh -s -- --seco | set VLB_SECO=1 |
| Outra versão (branch ou tag) | … | sh -s -- --versao v0.2.0 | set VLB_VERSAO=v0.2.0 |
| Outra pasta de instalação | … | sh -s -- --destino ~/Apps | set VLB_DESTINO=D:\Apps\VintageLightbox |
| Só o retrato da máquina, para mandar a quem ajuda | … | sh -s -- --diagnostico | — |
| Ver as opções | … | sh -s -- --ajuda | — |
… é o curl -fsSL … | sh da instalação, com a opção no lugar do
| sh final. No Windows, as opções só valem se o arquivo for rodado
da mesma janela em que foram definidas (dois cliques não as enxergam): abra o
Prompt de Comando, digite o set e depois
"%USERPROFILE%\Downloads\instalar-vintagelightbox-gpui.cmd".
Para ler o instalador antes de rodar:
curl -fsSL https://raw.githubusercontent.com/alexkads/VintageLightbox/main/scripts/instalar-vintagelightbox-gpui.cmd -o instalar.cmd
less instalar.cmd
sh instalar.cmd
| macOS | Linux | Windows | |
|---|---|---|---|
| O app | /Applications/VintageLightbox (Zed GPUI).app | ~/.local/bin/vintagelightbox-gpui | %LOCALAPPDATA%\Programs\VintageLightbox-GPUI |
| O catálogo | Imagens › VintageLightbox › VintageLightbox Catalog, na sua pasta pessoal | ||
| Cache do compilador | ~/.vintagelightbox/target-gpui | %USERPROFILE%\.vintagelightbox\target-gpui | |
| Código baixado | ~/.vintagelightbox/fonte-gpui | %USERPROFILE%\.vintagelightbox\fonte-gpui | |
| Registros da instalação (os dez últimos) | ~/.vintagelightbox/registros/instalacao-<data>.log | — | |
Para desinstalar: no macOS, VintageLightbox para o Lixo; no Windows, a pasta acima e o
atalho VintageLightbox (Zed GPUI); no Linux,
~/.local/bin/vintagelightbox-gpui,
~/.local/share/applications/vintagelightbox-gpui.desktop e o ícone de mesmo nome.
No macOS e no Linux, o instalador diz o que mandar. Toda instalação grava um registro com o retrato da máquina (sistema, sessão Wayland ou X11, GNOME e a extensão da bandeja, Rust, memória, disco, bibliotecas, placa de vídeo) e tudo o que passou pela tela, inclusive a compilação. Quando algo falha, a última linha é assim:
❌ parou em: compilando (código 101)
Mande este arquivo para quem está ajudando:
/home/voce/.vintagelightbox/registros/instalacao-20260921-161500.log
Mande esse arquivo. Para mandar só o retrato da máquina, sem compilar nada:
curl -fsSL https://raw.githubusercontent.com/alexkads/VintageLightbox/main/scripts/instalar-vintagelightbox-gpui.cmd | sh -s -- --diagnostico
| O que aparece | O que fazer |
|---|---|
falta o compilador Metal (macOS, versão antiga do instalador) | É uma cópia antiga do instalador, de quando ele pedia o Xcode. Cole de novo a linha do macOS, que não precisa dele. |
faltam as Command Line Tools do Xcode (macOS) | Rode xcode-select --install, espere terminar e repita a instalação. |
command not found: curl (Linux) | Instale o curl (sudo apt install curl ou sudo dnf install curl) e repita. |
este Linux é imutável (Fedora Silverblue, Kinoite, Bazzite) | Rode o comando sudo rpm-ostree install … que a mensagem mostra, reinicie o computador e repita. |
| O ícone da bandeja não aparece (Fedora e outros com GNOME) | Se o GNOME mostrou um aviso para instalar a extensão, aceite. Senão, saia e entre de novo na sessão. Se continuar sumido, abra o app Extensões e ligue AppIndicator and KStatusNotifierItem Support. |
não reconheci o gerenciador de pacotes (Linux) | Instale à mão os pacotes que a mensagem lista e repita. |
a instalação dos pacotes falhou ou não há 'sudo' (Linux) | Esta conta não pode instalar programas: peça a quem administra a máquina para rodar o comando mostrado logo acima, e repita. |
o Rust continua ausente ou anterior ao 1.89 | Rode rustup update stable e repita. |
| O navegador bloqueou o download (Windows) | Na lista de downloads, escolha Manter (no Edge: … › Manter). |
o winget … não existe nesta máquina (Windows) | Instale o Instalador de Aplicativo pela Microsoft Store e repita. |
o g++ do MinGW continua faltando (Windows) | Instale o MSYS2 e, no terminal dele, rode pacman -S mingw-w64-x86_64-gcc. Depois repita. |
o fxc.exe continua faltando (Windows) | Instale o Windows SDK, ou defina GPUI_FXC_PATH com o caminho do fxc.exe, e repita. |
o windres do MinGW continua faltando (Windows) | No terminal do MSYS2, rode pacman -S mingw-w64-x86_64-binutils. Depois repita. |
o g++ do MinGW nao compilou um arquivo de teste (Windows) | O instalador mostra a mensagem do compilador, atualiza o MSYS2 e reinstala o compilador sozinho. Se continuar (o g++ do MinGW continua sem compilar), abra o MSYS2 MINGW64, rode pacman -Syu duas vezes e repita. |
a compilacao falhou de novo (Windows) | O instalador já tentou duas vezes, a segunda com uma compilação de cada vez. A mensagem do compilador está acima, nas linhas cargo:warning=. Se ela fala em acesso negado, o antivírus está bloqueando: em Segurança do Windows › Proteção contra vírus e ameaças › Exclusões, adicione %USERPROFILE%\.vintagelightbox e C:\msys64, e repita. |
a libclang continua faltando (Windows) | No terminal do MSYS2, rode pacman -S mingw-w64-x86_64-clang. Depois repita. |
Unable to find libclang no meio da compilação (Linux) | Instale clang e libclang-dev (no Fedora, clang e clang-devel) e repita. |
| A janela não abre (Linux) | Falta um driver Vulkan: instale mesa-vulkan-drivers. Com placa NVIDIA no Fedora, instale o driver da NVIDIA pelo RPM Fusion (akmod-nvidia) e reinicie. |
| A compilação para por falta de espaço | Libere alguns GiB e repita. |
signal: 9 ou SIGKILL no meio da compilação | Faltou memória. O instalador já compila menos coisas ao mesmo tempo em máquinas com pouca memória; se ainda assim falhar, feche outros programas e repita com uma compilação de cada vez: ponha CARGO_BUILD_JOBS=1 antes do sh (… | CARGO_BUILD_JOBS=1 sh). |
| A janela do Windows fechou sozinha | Rode o arquivo de dentro do Prompt de Comando (veja Opções) para ler a mensagem. |
| Abre um app diferente, ou o app não muda depois de atualizar | O app antigo continuava aberto: saia pela bandeja (Sair) e abra de novo. Só roda uma cópia por vez. |
| A faixa diz “Não consegui atualizar: …” | Confira a internet e clique em Atualizar de novo. Se continuar, feche o app e repita o passo da instalação: o resultado é o mesmo. |
| Atualizou, mas continua igual | Faltou reabrir. Clique em Reabrir agora na faixa, ou saia pela bandeja (Sair) e abra de novo. |
| A tela do cliente abre preta | Atualize o app (repita a instalação). |
| A tela do cliente não vai para o outro monitor | Confira se o segundo monitor está estendido, e não espelhado. No Linux com Wayland o sistema não deixa o app escolher o monitor: arraste a janela uma vez. |
| O aviso de mensagem nova (chatbot) ou de agendamento não aparece | Confira o sino no alto da tela Chatbot: riscado, os avisos do sistema estão desligados (o aviso dentro do app continua). Depois, o Não perturbe do sistema. Com a janela na frente o aviso é dentro do app, e não do sistema. |
| A lista aparece vazia ou dá erro ao entrar | Confira a internet: as telas vêm do app, mas os dados vêm da RecordarFotos. As fotos já importadas continuam no catálogo. |
O mesmo guia, em texto, está em INSTALAR-GPUI.md.
Quem já tem instalar-vintagelightbox.cmd, ou copiou o comando com esse nome, continua
sendo atendido: o arquivo antigo só baixa o instalador acima e o roda. Para instalação nova, use o
arquivo acima.
O script antigo só para macOS, curl -fsSL https://alexkads.github.io/VintageLightbox/instalar.sh | sh,
continua no ar e instala o mesmo VintageLightbox.app, mas pede que o Xcode e o
componente Metal já estejam prontos. O instalador do GPUI não precisa
de nenhum dos dois.