Ferramenta all-in-one de otimização e configuração de sistema para gamers no Linux, construída com GTK 4, libadwaita e C17.
O Epinephrine reúne monitoramento de hardware, tuning de performance e configuração de recursos como Gamescope e Gamemode em uma única interface moderna (GNOME/Adwaita), com suporte a temas e traduções.
- Gaming Score (0.0 – 11.0): classifica o sistema comparando CPU, GPU, RAM e monitor contra uma máquina de referência.
- Monitoramento em tempo real de CPU, RAM, GPU/VRAM, Vulkan e video driver/kernel module.
- Informações de armazenamento (discos e uso).
- Atalho para lançamento rápido de jogos recentes.
- Importação automática de jogos a partir de:
- Steam (parse de
libraryfolders.vdf) - Heroic Games Launcher
- Lutris
- Bottles (
programs.yml/ diretórioprograms)
- Steam (parse de
- Card por jogo com ícone, tempo de jogo, FPS médio, espaço para comandos de inicialização e botão de play.
- Layout de dois painéis com divisor gradiente usando a cor accent do tema.
- GPU: informações detalhadas, monitor de uso/temperatura, e gerenciamento por recurso detectado:
- Performance level, power profile, power limit, Frame Rate Target Control
- AMD Radeon Chill, Anti-Lag, Variable Rate Shading, Zero RPM fan
- Controle de ventoinha, e gerenciamento NVIDIA (via
nvidia-smi)
- Placa-mãe: fabricante/modelo, BIOS, chipset, SMBus.
- RAM: módulos (DIMMs), total/usado, tecnologia e frequência.
- CPU: governor, frequência min/máx, arquitetura, cores.
- Teclado: informação do dispositivo, numlock/capslock/scrolllock, repetição de teclas, layout e backlight.
- Mouse: velocidade, perfil de aceleração, scroll natural (libinput/gsettings/xinput) e configuração especial para dispositivos gamer como o mouse Logitech G300s:
- Perfis on-board (F3/F4/F5), DPI, polling rate, cor de LED e remapeamento de botões (G1–G9).
- Suporte a ratbagd via D-Bus API para configuração quando disponível.
- Perfis de fábrica restauráveis (MMO, FPS, Produtividade).
- Controles (joystick): teste em tempo real com visual de botões/analógicos (layouts padrão e arcade), indicadores de input, botões extras (M1–M4) detectados por
EVIOCGBIT, e nome/URL vindos de banco de dados.
- Gamescope: gerador visual de comando (
--nested, resolução, refresh, HDR, scaler/filter, sharpness, VRR, backend, ReShade, e muito mais), com copiar/salvar/restaurar. - GameMode: configuração de
gamemode.ini(governors, renice, frequência CPU, scripts start/end, tweaks de desktop, etc.). - MangoHud: configuração do overlay (FPS, temps, posição, tamanho de fonte, histograma, custom text, etc.).
- Se o utilitário não estiver instalado, o app oferece um botão de instalação usando o gerenciador de pacotes detectado (
apt/dnf/pacman/zypper/xbps) viapkexec.
- Tema: sistema, libadwaita ou Breeze.
- Cor de destaque: seguir a GPU detectada, ou forçar AMD/Intel/NVIDIA/Tux.
- Idioma: português do Brasil (
pt_BR), inglês (en_US) e espanhol (es_ES).
- Toast com resumo do erro e botão "Details".
- Ao clicar em "Details", abre um overlay com:
- Explicação detalhada do erro.
- Output de terminal (quando disponível).
- Botões "Copy Error" e "OK".
O app carrega bancos de dados em Markdown (compilados como recursos) para exibir nome, URL oficial e specs dos dispositivos detectados:
database/GPU_INDEX.md— specs, VRAM e data de lançamento de GPUs.database/JOY_INDEX.md— controles (nome, categoria, URL, features).database/KEYBOARD_INDEX.md— teclados.database/MOUSE_INDEX.md— mouses (inclui fabricante, ano de lançamento).
Também consulta o banco usb.ids do sistema (/usr/share/hwdata/usb.ids) com refresh assíncrono via curl, usado como fallback de nomeação de dispositivos USB.
| Dependência | Versão mínima |
|---|---|
| Meson | >= 1.0.0 |
GTK 4 (gtk4) |
>= 4.10 |
libadwaita (libadwaita-1) |
>= 1.4 |
| fontconfig | — |
| Compilador C com suporte a C17 (GCC, Clang) | — |
sudo dnf install meson gtk4-devel libadwaita-devel fontconfig-develsudo apt install meson libgtk-4-dev libadwaita-1-dev libfontconfig1-devsudo pacman -S meson gtk4 libadwaita fontconfig| Programa | Função |
|---|---|
gamescope |
Aba Gamescope do Utilities |
gamemoderun / gamemoded |
Aba GameMode do Utilities |
mangoapp / mangohud |
Aba MangoHud do Utilities |
gsettings (GNOME) ou xinput (X11) |
Aplicar configurações de mouse |
openrgb |
Editar iluminação no OpenRGB |
libinput |
Detecção de DPI do mouse |
nvidia-smi |
Gerenciamento de GPU NVIDIA |
ratbagd |
Configuração de mice gamer via D-Bus |
pkexec |
Operações privilegiadas (instalação de utilitários, tuning) |
curl |
Refresh do banco usb.ids |
meson setup builddir
meson compile -C builddirO binário será gerado em builddir/src/epinephrine.
Para executar diretamente do build:
./builddir/src/epinephrineConsulte BUILDING.md para instruções detalhadas de build (incluindo builds com Address Sanitizer), instalação e limpeza.
epinephrine/
├── meson.build # Configuração do Meson
├── data/ # UI XML (GResources), ícones, fonts, desktop/metainfo
│ └── ui/ # Páginas em formato GTK Builder (.ui)
├── database/ # Bancos de dados INDEX (GPU, JOY, KEYBOARD, MOUSE)
├── lang/ # Traduções (en_US.md, pt_BR.md, es_ES.md)
├── src/
│ ├── main.c, application.c # Bootstrap da aplicação
│ ├── window.c # Janela principal, abas e sistema de erros
│ ├── command-builder.c # Gerador de comando do Gamescope
│ ├── epi-privilege.c # Execução privilegiada via pkexec
│ ├── epi-ratbagd.c/h # Integração com ratbagd via D-Bus
│ ├── epi-i18n.c/h # Internacionalização
│ ├── usb-ids.c # Banco usb.ids (sistema + refresh online)
│ └── pages/ # Páginas do app (dashboard, games, hardware, ...)
└── BUILDING.md # Guia de build detalhado
- Descubra o
VID:PIDcomlsusb(oudmesg | grep -i "input:"para teclados). - Encontre a página oficial do produto na internet (página do fabricante).
- Abra um pull request adicionando a linha à tabela do INDEX correspondente em
database/:- GPU:
GPU_INDEX.md(nome exibido porvulkaninfo, VRAM, URL, specs, data de lançamento). - Controle:
JOY_INDEX.md(nome, VID:PID, categoria, URL, features, conexão, botões). - Teclado:
KEYBOARD_INDEX.md(nome, VID:PID, keyset, URL, features, conexão). - Mouse:
MOUSE_INDEX.md(nome, VID:PID, URL, fabricante, ano de lançamento, número de botões).
- GPU:
Os arquivos de tradução estão em lang/ como Markdown com tabelas key-text.
- Cada arquivo contém uma tabela com coluna
ChaveeTexto. - Novas strings devem ser adicionadas a todos os arquivos de idioma.
- Strings do código usam
tr()ouepi_i18n_get(). - Strings em arquivos
.uisão traduzidas viaepi_i18n_apply_widgets().
- Padrão da linguagem: C17.
- O código usa GTK 4 com Builder (.ui) e libadwaita (widgets
Adw). - Mantenha o padrão das páginas existentes (cada página tem
page-<nome>.c/.he um arquivo.uiemdata/ui/). - Os INDEX files são parseados como recursos compilados (ver
load_controller_indexempage-hardware.ccomo referência). - Erros devem usar
dashboard_show_error_toast(short_msg, details)para padronização.
Renan Mayrinck — renanmayrinck.com — Apoie via LiberaPay
MIT — veja o arquivo meson.build (license: 'MIT').
Creditos para: Renan Mayrinck, Emerson Lourenço.
This project was built with Opencode, an AI coding assistant. The code is fully functional, but may not follow the best practices adopted by professional developers. Contributions and suggestions are welcome via pull requests or issues.