É, eu acho que eu queria dormir no sofá mesmo.
▲ 42 r/quefofo

É, eu acho que eu queria dormir no sofá mesmo.

Encontrei esses dois pilantras na minha cama, e ficaram tão fofos que me convenceram a não tirá-los dali, por enquanto.

São meio-irmãos, o branquinho com manchas é macho, mais velho. A tricolor é a cassula.

Linux Pegasus: Como coloquei um console no meu PC (Atualização)

Olá novamente! Lembram de mim? Alguns podem lembrar, talvez, do cara que fez aquele rice de PixelArt. Há algum tempo eu mostrei nesse sub um projeto de "consolização" no meu Linux Mint, deixando-o o mais conveniente possível pra jogar meus emuladores e jogos de PC via Proton.

Só que de lá pra cá eu coloquei algumas coisinhas legais que, inclusive, vocês mesmos podem usar no setup de vocês. Pra quem não viu, eu vou repetir alguns pontos, apenas alterando o que foi realmente atualizado.

Dito isso, vamos ao projeto:

Configurações do Hardware

  • Processador: i7 3770
  • Memória RAM: 16 GB DDR3
  • SSD de 240 GB
  • HDD de 500 GB (x2)
  • Placa de vídeo: RX 550 4 GB

Programas usados

  • Pegasus Frontend (usando o tema Shinretro)
  • DuckStation
  • PCSX2
  • PPSSPP
  • RetroArch
  • Skraper
  • Blaster (a grande novidade)

Sistema operacional: Linux Mint (modificado com GNOME Wayland)

Como funciona

Em resumo, o Pegasus obtém automaticamente as bibliotecas da Steam, Heroic e Lutris (às vezes precisando de uma configuração manual), o que já permite jogar as bibliotecas “oficiais”. Já os jogos de emulador foram todos configurados usando arquivos metadata em cada diretório de jogo separado.

Para jogos de plataformas como Nintendinho, Super Nintendo, Nintendo 64, Master System, Mega Drive, Game Boy, Game Boy Color e Game Boy Advance (basicamente a maioria dos consoles da Sega e da Nintendo), usa-se o RetroArch.

Já para os consoles da Sony, prefiro usar emuladores dedicados para cada um. Por isso, PS1, PS2 e PSP utilizam, respectivamente, DuckStation, PCSX2 e PPSSPP.

Cada diretório de jogo está unificado em “/home/user/emulacao/roms”, com suas respectivas subpastas para cada console:

/home/user/emulacao/roms
 ├── nes
 ├── snes
 ├── n64
 ├── gba
 ├── ps1
 └── ps2
 …

Dentro de cada subpasta estão as ROMs (óooooobviamente “100% legais”), que, somando todas as subpastas, chegam a mais de 1.000 jogos disponíveis. Além das ROMs, há também o arquivo metadata (metadata.pegasus.txt) daquela coleção. Esse arquivo tem apenas 3 linhas:

collection: [sigla ou nome do console, como Sony Playstation ou apenas PSX]
extension: [extensões dos arquivos das ROMs, como .iso, .chd, .nes etc.]
launch: [comando do terminal que abre o emulador] "{file.path}"

Com apenas essas linhas definidas para cada coleção, aplicando o arquivo nos diretórios do Pegasus, ele já detecta todos os jogos da pasta, desde que estejam indicados pela extensão.

Fora esses arquivos, há também a pasta “media”, onde ficam os assets raspados da coleção. É aqui que entra o Skraper, rodando via Wine. Ele faz o download das capas, screenshots, logos e fanarts que os temas do Pegasus usam automaticamente. Além disso, baixa por padrão um arquivo .dat que adiciona descrições aos jogos, o que deixa o catálogo ainda mais organizado e completo.

Claro, é necessário rodar o Skraper sempre que há uma coleção nova. Isso é raro de acontecer e exige poucos botões, então a tarefa acaba sendo semi-automática.

O caso do Minecraft

Ah, e uma coisa interessante… o Pegasus também consegue lançar o Minecraft. Essa parte, porém, eu tive que fazer manualmente, pois o Skraper, até onde eu sei, não raspa modpacks de Minecraft, ainda mais os que você mesmo criou. Mas foi basicamente assim:

Primeiro, criei um diretório (/home/user/emulacao/roms/Minecraft). Dentro dele eu criei um metadata.pegasus.txt com o seguinte conteúdo:

collection: minecraft
extension: desktop
launch: dex "{file.path}"

Usando o Krita, criei as logos e a arte para a coleção, e aloquei tudo na pasta “/home/user/themes/shinretro-master/assets/collections/minecraft”. Então, com o Prismlauncher, criei um atalho .desktop para as minhas instâncias.

Exemplo:

[Desktop Entry]
Type=Application
Categories=Game;ActionGame;AdventureGame;Simulation
Exec="flatpak" 'run' 'org.prismlauncher.PrismLauncher' '--launch' 'Vanilla'
Name=Vanilla
Name[pt_BR]=Vanilla.desktop

Nota: Todas as instâncias nessa coleção usam o mod Controlify.

Após a criação destes desktops, eu criei uma pasta /media na mesma raiz, e dentro dela fiz a mesma organização do Skraper (box2dfront, screenshot, etc.) e dentro de cada um coloquei as minhas próprias imagens, fazendo o trabalho manual do skraper pra cada instância… demorou um bocado. Uma ferramenta que ajudou bastante foi o BlockBench com seu plugin de Titles, que permitiu criar logos (wheel) pra cada modpack. Para além disso, criei um .dat basicamente copiando o formato das outras coleções, substituindo por descrições das instâncias.

Ou seja, essa parte foi bem mais manual, mas no final valeu a pena. Agora posso jogar quase todos meus modpacks de Minecraft também no sofá da sala.

O Blaster

Depois de tudo configurado, bastou definir a entrada e saída do Pegasus de forma simples usando o controle (já que a intenção é jogar sentado no sofá). Para isso, eu criei um programa, que eu dei o nome de “Blaster”.

O Blaster é uma ferramenta de gerenciamento de macros, transformando combos do seu gamepad diretamente em comandos no terminal, sem precisar traduzir isso para teclas. Isso garante completa compatibilidade com jogos, já que nada vai conflitar (apertar um botão no controle não vai criar um input de teclado e controle ao mesmo tempo).

Se você usa qualquer distro base Debian, você já pode instalar o Blaster no seu computador e testar. Lembre-se apenas de que ainda é uma ferramenta em Beta, então é normal encontrar algum problema. Se você manja de programação, pode editar à vontade o código em /opt/Blaster, e seria de bom grado contribuir com o projeto enviando suas melhorias lá no Git.

Link do repositório: github.com/MrDeltaMan/Blaster

No meu setup atual, eu configurei o meu Blaster da seguinte forma:

  • Abrir o Pegasus: Select + RB + B = flatpak run org.pegasus_frontend.Pegasus
  • Fechar janela ativa: Select + RB + Y = ydotool key alt+f4
  • Abrir teclado virtual: Select + RB + X = gamepad-osk --toggle
  • Aumentar volume em 5%: Select + RB + DPAD Esquerdo = wpctl set-volume u/DEFAULT_AUDIO_SINK@ 5%+
  • Diminuir volume em 5%: Select + RB + DPAD Direito = wpctl set-volume u/DEFAULT_AUDIO_SINK@ 5%-
  • Mudar para tela da sala: Select + RB + Gatilho Esquerdo = /home/gabriel/scripts/tela-sala.sh
  • Mudar para tela do escritório: Select + RB + Gatilho Direito = /home/gabriel/scripts/tela-escritorio.sh
  • Interromper Alarme: Select + RB + A = alarm-clock-applet --stop-all
  • Trava Geral (Catraca): Select + Gatilho Esquerdo + Y = blaster://toggle_catraca
  • Black Screen: Select + Gatilho Direito + A = python3 -c "import gi; gi.require_version('Gtk', '3.0'); from gi.repository import Gtk, Gdk; w=Gtk.Window(); w.fullscreen(); w.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0,0,0,1)); w.connect('destroy', Gtk.main_quit); w.show_all(); Gtk.main()"

Nos emuladores, com a configuração nativa de cada um, já deixei alguns comandos para abrir o menu:

  • RetroArch: Select + Seta para baixo
  • DuckStation, PCSX2 e PPSSPP: Select + RB + Seta para cima

Desse modo, é possível configurar o emulador sem precisar de teclado ou mouse, apenas pela interface, que felizmente suporta controles.

Com o Blaster instalado e configurado corretamente, ele já passa a iniciar com o meu sistema, sempre com as macros e controle salvos. Isso permite que eu simplesmente ligue o PC, ligue o controle e, com poucos botões, entre no jogo e saia quando quiser. Prático e fácil, como tudo deveria ser nesta vida miserável.

Detalhes Extras e Scripts de Tela

Um detalhe que quase esqueci de mencionar é que 90% dessas mais de 1.000 ROMs (100% ripadas de jogos originais e aprovadas pelo Kojima em pessoa) estão traduzidas em PT-BR. Ou seja, posso jogar jogos como Família Addams de Game Boy Color e entender todas as atrocidades que a Wandinha está falando que vai fazer com o irmão dela. Graças à comunidade que fez o trabalho dos devs de localizar a porra do jogo.

Outra coisa resolvida de um jeito bem simples foi aquele problema clássico: “não consigo jogar no mesmo lugar onde eu trabalho e estudo”.

Como meu escritório fica ao lado da sala, separado apenas por uma parede que não bloqueia sinal Bluetooth, resolvi isso com um HDMI de 5 metros, um adaptador DisplayPort e alguns scripts. Como minha TV da sala é burra (não é Smart), não daria para espelhar via Bluetooth. Então fiz o caminho mais primitivo e, sinceramente, mais seguro.

Conectando ambas as telas no computador, uma pelo HDMI direto e a outra pelo adaptador DisplayPort (já que o monitor do escritório é basicamente uma TV pequena sem entrada DP), basta uma configuração simples com scripts usando comandos do próprio Linux para alternar entre as telas.

No caso, esses são os scripts:

/home/user/scripts/tela-escritorio.sh:

#!/bin/bash

# Alterna o vídeo
~/.local/bin/gnome-randr --output HDMI-1 --mode 1920x1080 --primary --output DP-1 --off

# Alterna o áudio
SINK="alsa_output.pci-0000_00_1b.0.analog-stereo"
pactl set-default-sink "$SINK"

for input in $(pactl list short sink-inputs | awk '{print $1}'); do
  pactl move-sink-input "$input" "$SINK"
done

/home/user/scripts/tela-sala.sh:

#!/bin/bash

# Alterna o vídeo
~/.local/bin/gnome-randr --output DP-1 --mode 1920x1080 --primary --output HDMI-1 --off

# Alterna o áudio
SINK=$(pactl list short sinks | grep hdmi | awk '{print $2}')
pactl set-default-sink "$SINK"

for input in $(pactl list short sink-inputs | awk '{print $1}'); do
  pactl move-sink-input "$input" "$SINK"
done

E assim, basta colocar o caminho até os scripts de tela no script do controle.

Conclusão

Considerando tudo isso, dá para dizer que sim: eu tenho um console com um monte de outros consoles dentro, com mais de 1.000 jogos para jogar dentro do meu PC, bastando apertar alguns botões no controle.

Na prática funciona assim:

  1. Estou trabalhando/estudando.
  2. Terminou a hora de trabalhar/estudar.
  3. Hora de jogar. Ligo o controle e aperto Select + LT + A, Select + RB + B, e depois Select + RB + LT.
  4. Saio do escritório e vou para o sofá da sala. Seleciono meu joguinho. Me divirto.
  5. Quando canso, aperto Select + RB + Y, depois Select + RB + RT.
  6. E volto para o quarto para xingar pessoas no Reddit~ digo, voltar a trabalhar/estudar.

Zero fricção inconveniente, da qual tanto reclamam no PC gaming. Não preciso passar por interface de emulador, RetroArch ou Haddad me cobrando imposto. É só um comando e ir para a sala. Quando enjoar ou precisar voltar a trabalhar, outro clique de botões e pronto.

É quase um videogame de verdade. Atenção ao “quase”, pois falta justamente a parte do hardware ser dedicado ao jogo e vir completamente configurado desde o início. Mas depois de configurado, fica conveniente e dinâmico tal qual um videogame.

E é isso. Estou satisfeito com esse DIY que só o Linux poderia proporcionar. Parte do processo foi divertida, e ver tudo prontinho e funcional dá um prazer estranho: todo o trabalho tomando forma e funcionando. A melhor parte, claro, é proporcionar divertimento. E isso certamente está garantido com mais de 1.000 jogos, que praticamente não exigem expansão para outros títulos ou consoles, embora também não fosse difícil configurar novos, apenas demoraria um pouco.

Mas, apesar disso, funciona. E, uma vez configurado, é plug and play. Conveniente, sem fricção, elegante e prazeroso de jogar.

Se esse projeto te deu vontade de fazer sua própria estação de jogos, tem meu incentivo. Vale muito a pena.

Autoria de: u/SorbetLongjumping551 / Mr. Delta-Man

u/SorbetLongjumping551 — 14 days ago

Atualização do protótipo "Blaster", agora para o Wayland (Beta 0.3)

Eis as novidades dessa ferramenta que eu tenho desenvolvido na última semana:

  • Agora o Blaster funciona em ambientes Wayland;
  • Sistema de reconexão de controle mais robusto;
  • Nova função de "catraca", permitindo desativar e ativar o Blaster;
  • Nova lista de Comandos da Comunidade (comandos prontos para uso com poucos cliques).

https://github.com/MrDeltaMan/Blaster

https://preview.redd.it/l1vhp5vm8p7h1.png?width=1102&format=png&auto=webp&s=475551a0e74f0c53c0827b0130f8db92718055df

reddit.com
u/SorbetLongjumping551 — 20 days ago

ATUALIZAÇÃO DO MEU PROTÓTIPO DE GERENCIADOR DE "MACROS".

Pensando bem, nem sei se dá pra chamar de "macros". Mas enfim, pra quem não viu, eu fiz um protótipo bem simples de um programa que permite transformar botões do seu gamepad em comandos do terminal. Isso pode ser útil pra muita gente, e eu espero que o projeto vá pra frente e até caia nas mãos de alguém mais competente em programação.

Aqui está o repositório do GitHub pra quem quiser testar, é só instalar o .deb e ser feliz: https://github.com/MrDeltaMan/Blaster

u/SorbetLongjumping551 — 21 days ago

Atualização do DeltaPixel Theme

Fala, pessoal! Tudo certo?

Suponho que alguns de vocês se lembrem de mim (assim espero!). Sou o cara que criou aquele pacotão de temas e ícones para deixar o Linux quase completamente em pixel art. O projeto tem ficado bem legal, principalmente graças ao Tsora, dono do Pixora Theme, que tem feito um trabalho sensacional adicionando ícones novos, especialmente para a parte de gerenciamento de arquivos.

Acabei de lançar uma atualização no meu pacote! Além de incluir os novos ícones do Pixora, também adicionei novos wallpapers. Se você tiver interesse em deixar seu computador com aquela cara de videogame dos anos 80 ou 90, dá uma passada no repositório do GitHub:

https://github.com/MrDeltaMan/DeltaPixel-Theme

E claro, deixo aqui aquele meu apelo de sempre: deem uma olhada no projeto do Tsora. É graças ao esforço dele que o meu pacote tem ficado cada vez mais bonito e sólido. O cara merece todo o crédito:

https://github.com/tsora1603/pixora-icons

u/SorbetLongjumping551 — 1 month ago

Estou trabalhando num programa pra automatizar macros com controle.

Eu fiz um protótipo de um programinha que atendesse uma necessidade minha pra automatizar alguns comandos úteis pro meu fluxo de jogatina.

Como Linux é um ambiente perfeito pra emulação e hoje melhor do que nunca pra jogos da Steam, é fácil ter um monte de coisa pra poder jogar e ter que abrir uma caralhada de emuladores e launchers (Lutris, Heroic e cia) só pra poder se divertir com seus joguinhos.

E também, como sou fã de jogar no sofá, é meio inconveniente pra mim ter que ir até o PC e configurar ele, parar alarmes, mudar o volume, mexer no teclado e no mouse, só pra poder jogar tranquilo.

Por isso eu tive a ideia a alguns meses de automatizar esse fluxo com macros no próprio controle. Eu decidi não usar o AntiMicroX e outros programas de macro pois... eles geralmente conflitam com os jogos nativos de PC, afinal, você basicamente tá traduzindo os botões do controle pros botões do teclado.

Então eu fiz a um bom tempo um script em Python pra fazer esse serviço direto, criando combos que acionam um comando no terminal. Isso foi uma mão na roda inicialmente, só que com o tempo mostrou um problema... editar o script era um saco.

Primeiro que tinha que abrir o evtest sempre que eu não sabia qual era o ID do botão do controle, além de eu ter uma certa dificuldade com formatação, e acabava deixando um código gigante que precisava ser reiniciado constantemente.

Por isso eu resolvi fazer um programa focado nisso, criar um motor em python que lê dinamicamente um arquivo .json que salva meus macros. E eu vim aqui pra ver com gente que entende de fato do negócio pra gente desenvolver o negócio com mais cabeças pensando.

Quem quiser dar uma olhada, eu uppei aqui no GitHub: https://github.com/MrDeltaMan/Blaster

u/SorbetLongjumping551 — 1 month ago

Desenho novo do sketchbook

Não sei se ficou tão melhor assim pintado, ainda estou aprendendo a usar marcadores.

u/SorbetLongjumping551 — 1 month ago

Meu Linux Mint não desliga.

Eu tenho tido um problema com meu Linux Mint Cinnamon desde a sua instalação, ele raramente desliga apenas ao clicar no botão da interface, sempre tendo que fazer um desligamento forçado. Isso tem ficado ainda mais frequente. Se alguém ai puder me ajudar, ficarei muito grato. Sou bem iniciante no Linux, menos de um ano usando.

reddit.com
u/SorbetLongjumping551 — 2 months ago

Estou com dó de pintar 😔 (possível W.I.P)

Não sei se passo o marcador pra pintar, tenho medo de estragar o desenho do jeito que ele tá no lápis. Bom, qualquer coisa o esboço já tá salvo.

u/SorbetLongjumping551 — 2 months ago
▲ 6 r/desenhos+1 crossposts

Record desse ano, dois desenhos no mesmo dia!

Fiz dois desenhos hoje... mais ou menos.

Esse primeiro é uma atualização de um desenho antigo de 2023, só modificando a succubus. O segundo é uma comission que tinha o esboço pronto a mais de duas semanas e eu só consegui terminar hoje.

E não, eu não sou brony, foi desenho pra cliente, nunca nem desenhei MLP na minha vida e é pouco provável que eu vá desenhar de novo.

u/SorbetLongjumping551 — 2 months ago

O MIRANHA!!! (segunda vez usando marcadores)

Miranha, melhor super-herói que tem, o Miranha!

O Miranha.

O Miranha.

Sua tia é uma piranh~

u/SorbetLongjumping551 — 2 months ago

120 cores por 38 reais, e tem essas cores bem vivas, apesar da qualidade do corpo do marcador ser meio bucha.

u/SorbetLongjumping551 — 2 months ago

Custou 10 reais, um chiclete mascado, e um cuspe.

Algumas coisas importantes: Essa mesa na realidade era menor, só que eu preguei nela DUAS PORTAS de um guarda-roupa velho, sem o puxador, e assim eu fiz uma expansão bem grande pra caber minhas coisas. Então isso que ceis tão vendo são duas portas pregadas em cima da mesa, dá até pra ver uma linha que separa essas tábuas da porta.

O meu computador tem até nome inclusive. Ele se chama Jubileu, atualmente na sua forma Super Sucata Jubileu (porque ele tem GPU)

u/SorbetLongjumping551 — 2 months ago