<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marcos Oliveira</title>
    <description>The latest articles on DEV Community by Marcos Oliveira (@marcosplusplus).</description>
    <link>https://dev.to/marcosplusplus</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1516818%2F5fe49cd6-69f7-43f7-b3d9-e1168f95bcf1.jpg</url>
      <title>DEV Community: Marcos Oliveira</title>
      <link>https://dev.to/marcosplusplus</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marcosplusplus"/>
    <language>en</language>
    <item>
      <title>Meet This SSH Multi-Server Manager</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Tue, 07 Jul 2026 13:33:03 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/meet-this-ssh-multi-server-manager-3pik</link>
      <guid>https://dev.to/marcosplusplus/meet-this-ssh-multi-server-manager-3pik</guid>
      <description>&lt;p&gt;If you manage multiple servers via SSH, you should check out &lt;strong&gt;LazySSH&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's a &lt;a href="https://terminalroot.com/tags#terminal" rel="noopener noreferrer"&gt;terminal&lt;/a&gt;-based (&lt;a href="https://terminalroot.com/tags#tui" rel="noopener noreferrer"&gt;TUI&lt;/a&gt;) &lt;a href="https://terminalroot.com/tags#ssh" rel="noopener noreferrer"&gt;SSH&lt;/a&gt; manager, inspired by tools like &lt;em&gt;lazydocker&lt;/em&gt; and &lt;em&gt;k9s&lt;/em&gt;, that makes it easy to navigate and manage entries in your &lt;code&gt;~/.ssh/config&lt;/code&gt; file.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search by alias, IP, or tags&lt;/li&gt;
&lt;li&gt;Pin favorite servers&lt;/li&gt;
&lt;li&gt;Add, edit, and remove hosts directly from the interface&lt;/li&gt;
&lt;li&gt;Ping to check availability&lt;/li&gt;
&lt;li&gt;SSH connection with a single Enter&lt;/li&gt;
&lt;li&gt;Sorting and filtering options&lt;/li&gt;
&lt;li&gt;Preserves your &lt;code&gt;~/.ssh/config&lt;/code&gt; by creating automatic backups before making changes&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Homebrew (macOS and Linux)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;lazyssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Building with Go (Linux, macOS, and Windows)
&lt;/h3&gt;

&lt;p&gt;If you already have Go installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/adembc/lazyssh.git
&lt;span class="nb"&gt;cd &lt;/span&gt;lazyssh
go build &lt;span class="nt"&gt;-o&lt;/span&gt; lazyssh ./cmd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, optionally, move the binary to a directory in your &lt;code&gt;PATH&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo mv &lt;/span&gt;lazyssh /usr/local/bin/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install it directly using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/Adembc/lazyssh/cmd@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;After installation, just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lazyssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The program automatically reads the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.ssh/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So all you need is to have your SSH hosts already configured as usual to start using it.&lt;/p&gt;




&lt;p&gt;For more information, visit: &lt;a href="https://github.com/adembc/lazyssh" rel="noopener noreferrer"&gt;https://github.com/adembc/lazyssh&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>tui</category>
    </item>
    <item>
      <title>Conheça esse Gerenciador para Múltiplos Servidores SSH</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Tue, 07 Jul 2026 13:29:40 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/conheca-esse-gerenciador-para-multiplos-servidores-ssh-3aej</link>
      <guid>https://dev.to/marcosplusplus/conheca-esse-gerenciador-para-multiplos-servidores-ssh-3aej</guid>
      <description>&lt;p&gt;Se você gerencia vários servidores via SSH, vale conhecer o &lt;strong&gt;LazySSH&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;É um gerenciador &lt;a href="https://terminalroot.com.br/tags#ssh" rel="noopener noreferrer"&gt;SSH&lt;/a&gt; em modo &lt;a href="https://terminalroot.com.br/tags#terminal" rel="noopener noreferrer"&gt;terminal&lt;/a&gt; (&lt;a href="https://terminalroot.com.br/tags#tui" rel="noopener noreferrer"&gt;TUI&lt;/a&gt;), inspirado em ferramentas como &lt;em&gt;lazydocker&lt;/em&gt; e &lt;em&gt;k9s&lt;/em&gt;, que facilita a navegação e o gerenciamento das entradas do &lt;code&gt;~/.ssh/config&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Busca por alias, IP ou tags&lt;/li&gt;
&lt;li&gt;Fixar servidores favoritos&lt;/li&gt;
&lt;li&gt;Adicionar, editar e remover hosts pela interface&lt;/li&gt;
&lt;li&gt;Ping para verificar disponibilidade&lt;/li&gt;
&lt;li&gt;Conexão SSH com um único Enter&lt;/li&gt;
&lt;li&gt;Ordenação e filtros&lt;/li&gt;
&lt;li&gt;Preserva seu &lt;code&gt;~/.ssh/config&lt;/code&gt;, criando backups automáticos antes de alterações&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Instalação
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Homebrew (macOS e Linux)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;lazyssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Compilando com Go (Linux, macOS e Windows)
&lt;/h3&gt;

&lt;p&gt;Se você já tem o Go instalado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/adembc/lazyssh.git
&lt;span class="nb"&gt;cd &lt;/span&gt;lazyssh
go build &lt;span class="nt"&gt;-o&lt;/span&gt; lazyssh ./cmd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois, opcionalmente, mova o binário para um diretório do &lt;code&gt;PATH&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo mv &lt;/span&gt;lazyssh /usr/local/bin/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou instale diretamente com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/Adembc/lazyssh/cmd@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Utilizando
&lt;/h2&gt;

&lt;p&gt;Após a instalação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lazyssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O programa lê automaticamente o arquivo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.ssh/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Portanto, basta ter seus hosts SSH configurados normalmente para começar a utilizá-lo.&lt;/p&gt;




&lt;p&gt;Para mais informações acesse&amp;gt; &lt;a href="https://github.com/adembc/lazyssh" rel="noopener noreferrer"&gt;https://github.com/adembc/lazyssh&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tui</category>
      <category>go</category>
      <category>ssh</category>
    </item>
    <item>
      <title>Easily Create Progress Bars in C</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Sat, 09 May 2026 21:57:38 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/easily-create-progress-bars-in-c-1lbg</link>
      <guid>https://dev.to/marcosplusplus/easily-create-progress-bars-in-c-1lbg</guid>
      <description>&lt;p&gt;&lt;code&gt;c_progress_bar&lt;/code&gt; is a library for &lt;a href="https://terminalroot.com.br/c" rel="noopener noreferrer"&gt;C&lt;/a&gt; that helps you create:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Colorful progress bar&lt;/li&gt;
&lt;li&gt;Estimated remaining time&lt;/li&gt;
&lt;li&gt;Elapsed time tracking&lt;/li&gt;
&lt;li&gt;Works with &lt;a href="https://terminalroot.com/how-to-compile-with-msvc-via-command-line/" rel="noopener noreferrer"&gt;MSVC&lt;/a&gt;, &lt;a href="https://terminalroot.com/tags#clang" rel="noopener noreferrer"&gt;Clang&lt;/a&gt;, and &lt;a href="https://terminalroot.com/tags#gcc" rel="noopener noreferrer"&gt;GCC&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Written in C99 with minimal dependencies&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/c-modules/c_progress_bar
&lt;span class="nb"&gt;cd &lt;/span&gt;c_progress_bar/
cmake &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-B&lt;/span&gt; build
cmake &lt;span class="nt"&gt;--build&lt;/span&gt; build/
&lt;span class="nb"&gt;sudo &lt;/span&gt;cmake &lt;span class="nb"&gt;install &lt;/span&gt;build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Simple example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#include &amp;lt;stdint.h&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;#include "c_progress_bar.h"&lt;/span&gt;

&lt;span class="c"&gt;#define N 1000000000&lt;/span&gt;

int main&lt;span class="o"&gt;(&lt;/span&gt;void&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
    double &lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0.0&lt;span class="p"&gt;;&lt;/span&gt;

    // Setup progress bar
    CPB_Config config &lt;span class="o"&gt;=&lt;/span&gt; cpb_get_default_config&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    config.description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Processing"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                // Default: &lt;span class="s2"&gt;""&lt;/span&gt;
    config.min_refresh_time &lt;span class="o"&gt;=&lt;/span&gt; 0.1&lt;span class="p"&gt;;&lt;/span&gt;                    // Minimum refresh &lt;span class="nb"&gt;time &lt;/span&gt;&lt;span class="k"&gt;in &lt;/span&gt;seconds. Default: 0.1.
    config.timer_remaining_time_recent_weight &lt;span class="o"&gt;=&lt;/span&gt; 0.3&lt;span class="p"&gt;;&lt;/span&gt;  // Weight &lt;span class="k"&gt;for &lt;/span&gt;recent rate &lt;span class="k"&gt;in &lt;/span&gt;remaining &lt;span class="nb"&gt;time &lt;/span&gt;estimation. Range: &lt;span class="o"&gt;[&lt;/span&gt;0, 1]. Default: 0.3.

    // You don&lt;span class="s1"&gt;'t need to modify anything for CPB_ProgressBar.
    // Just call cpb_init
    CPB_ProgressBar progress_bar;
    cpb_init(&amp;amp;progress_bar, 0, N, config);

    // Main loop
    cpb_start(&amp;amp;progress_bar);
    for (int64_t i = 0; i &amp;lt;= N; i++)
    {
        if (i % 1000 == 0)
        {
            cpb_update(&amp;amp;progress_bar, i);
        }

        sum += (i % 100) * 0.0001;
    }
    cpb_finish(&amp;amp;progress_bar);

    printf("Final result: %f\n", sum);

    return 0;
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;For more information, visit the &lt;a href="https://github.com/c-modules/c_progress_bar" rel="noopener noreferrer"&gt;repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>c</category>
    </item>
    <item>
      <title>Crie Facilmente Barras de Progresso em C</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Sat, 09 May 2026 21:52:32 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/crie-facilmente-barras-de-progresso-em-c-50bl</link>
      <guid>https://dev.to/marcosplusplus/crie-facilmente-barras-de-progresso-em-c-50bl</guid>
      <description>&lt;p&gt;📊 Uma biblioteca simples de barras de progresso para C.&lt;/p&gt;




&lt;p&gt;&lt;code&gt;c_progress_bar&lt;/code&gt; é uma biblioteca para &lt;a href="https://terminalroot.com.br/c" rel="noopener noreferrer"&gt;C&lt;/a&gt; que ajuda a você criar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Barra de progresso colorida&lt;/li&gt;
&lt;li&gt;Estimativa de tempo restante&lt;/li&gt;
&lt;li&gt;Rastreamento de tempo decorrido&lt;/li&gt;
&lt;li&gt;Trabalha com &lt;a href="https://terminalroot.com.br/2023/06/como-compilar-com-msvc-via-linha-de-comando.html" rel="noopener noreferrer"&gt;MSVC&lt;/a&gt;, &lt;a href="https://terminalroot.com.br/tags#clang" rel="noopener noreferrer"&gt;Clang&lt;/a&gt; e &lt;a href="https://terminalroot.com.br/tags#gcc" rel="noopener noreferrer"&gt;GCC&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Escrito em C99 com dependências mínimas&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Instalação
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/c-modules/c_progress_bar
&lt;span class="nb"&gt;cd &lt;/span&gt;c_progress_bar/
cmake &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-B&lt;/span&gt; build
cmake &lt;span class="nt"&gt;--build&lt;/span&gt; build/
&lt;span class="nb"&gt;sudo &lt;/span&gt;cmake &lt;span class="nb"&gt;install &lt;/span&gt;build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Simples exemplo
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#include &amp;lt;stdint.h&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;#include "c_progress_bar.h"&lt;/span&gt;

&lt;span class="c"&gt;#define N 1000000000&lt;/span&gt;

int main&lt;span class="o"&gt;(&lt;/span&gt;void&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
    double &lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0.0&lt;span class="p"&gt;;&lt;/span&gt;

    // Setup progress bar
    CPB_Config config &lt;span class="o"&gt;=&lt;/span&gt; cpb_get_default_config&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    config.description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Processing"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                // Default: &lt;span class="s2"&gt;""&lt;/span&gt;
    config.min_refresh_time &lt;span class="o"&gt;=&lt;/span&gt; 0.1&lt;span class="p"&gt;;&lt;/span&gt;                    // Minimum refresh &lt;span class="nb"&gt;time &lt;/span&gt;&lt;span class="k"&gt;in &lt;/span&gt;seconds. Default: 0.1.
    config.timer_remaining_time_recent_weight &lt;span class="o"&gt;=&lt;/span&gt; 0.3&lt;span class="p"&gt;;&lt;/span&gt;  // Weight &lt;span class="k"&gt;for &lt;/span&gt;recent rate &lt;span class="k"&gt;in &lt;/span&gt;remaining &lt;span class="nb"&gt;time &lt;/span&gt;estimation. Range: &lt;span class="o"&gt;[&lt;/span&gt;0, 1]. Default: 0.3.

    // You don&lt;span class="s1"&gt;'t need to modify anything for CPB_ProgressBar.
    // Just call cpb_init
    CPB_ProgressBar progress_bar;
    cpb_init(&amp;amp;progress_bar, 0, N, config);

    // Main loop
    cpb_start(&amp;amp;progress_bar);
    for (int64_t i = 0; i &amp;lt;= N; i++)
    {
        if (i % 1000 == 0)
        {
            cpb_update(&amp;amp;progress_bar, i);
        }

        sum += (i % 100) * 0.0001;
    }
    cpb_finish(&amp;amp;progress_bar);

    printf("Final result: %f\n", sum);

    return 0;
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Para mais informações acesse o &lt;a href="https://github.com/c-modules/c_progress_bar" rel="noopener noreferrer"&gt;repositório&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://terminalroot.com.br/c" rel="noopener noreferrer"&gt;Aprenda C&lt;/a&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://terminalroot.com.br/c" rel="noopener noreferrer"&gt;https://terminalroot.com.br/c&lt;/a&gt;
&lt;/h3&gt;

</description>
      <category>c</category>
    </item>
    <item>
      <title>Quickshell: Build Your Own Desktop on Linux</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Wed, 06 May 2026 12:44:35 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/quickshell-build-your-own-desktop-on-linux-20d2</link>
      <guid>https://dev.to/marcosplusplus/quickshell-build-your-own-desktop-on-linux-20d2</guid>
      <description>&lt;p&gt;Instead of relying on ready-made solutions (Waybar, Polybar, ...), you create your own.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Quickshell&lt;/strong&gt; is a modern toolkit built with &lt;a href="https://terminalroot.com/tags#cpp" rel="noopener noreferrer"&gt;C++&lt;/a&gt; for creating desktop interface components — bars, widgets, lock screens, launchers, and even complete environments — using &lt;a href="https://terminalroot.com/tags#qt" rel="noopener noreferrer"&gt;QtQuick + QML&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is not a "bar program".&lt;/li&gt;
&lt;li&gt;It is also not a complete, ready-made desktop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is a &lt;strong&gt;foundation for building a custom desktop&lt;/strong&gt;, running alongside a compositor like Hyprland, Sway, or i3.&lt;/p&gt;

&lt;p&gt;In practice, it replaces several pieces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;status bar&lt;/li&gt;
&lt;li&gt;notifications&lt;/li&gt;
&lt;li&gt;widgets&lt;/li&gt;
&lt;li&gt;lockscreen&lt;/li&gt;
&lt;li&gt;display manager&lt;/li&gt;
&lt;li&gt;system controls&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;Quickshell uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;QtQuick (UI)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QML (configuration/programming)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Hot reload (save → instant update) ([Quickshell][2])&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simple example (bar):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight qml"&gt;&lt;code&gt;&lt;span class="kt"&gt;PanelWindow&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;anchors&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nl"&gt;implicitHeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;

  &lt;span class="kt"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.centerIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;parent&lt;/span&gt;
    &lt;span class="nl"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello world&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Native integrations:
&lt;/h3&gt;

&lt;p&gt;One of its strengths is that it comes already integrated with the system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wayland + X11 (windowing)&lt;/li&gt;
&lt;li&gt;Hyprland, i3, Sway (workspaces)&lt;/li&gt;
&lt;li&gt;PipeWire (audio)&lt;/li&gt;
&lt;li&gt;BlueZ (Bluetooth)&lt;/li&gt;
&lt;li&gt;UPower (battery)&lt;/li&gt;
&lt;li&gt;MPRIS (media players)&lt;/li&gt;
&lt;li&gt;standard system tray&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This eliminates a lot of boilerplate.&lt;/p&gt;




&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Arch Linux / EndeavourOS / Manjaro
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yay &lt;span class="nt"&gt;-S&lt;/span&gt; quickshell
&lt;span class="c"&gt;### Or&lt;/span&gt;
paru &lt;span class="nt"&gt;-S&lt;/span&gt; quickshell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or build from scratch on any system:&lt;/p&gt;

&lt;p&gt;Dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;cmake ninja-build qt6-base-dev qt6-declarative-dev &lt;span class="se"&gt;\&lt;/span&gt;
qt6-wayland wayland-protocols libpipewire-0.3-dev &lt;span class="se"&gt;\&lt;/span&gt;
libdbus-1-dev libxkbcommon-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Clone:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/quickshell-mirror/quickshell.git
&lt;span class="nb"&gt;cd &lt;/span&gt;quickshell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Build:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cmake &lt;span class="nt"&gt;-B&lt;/span&gt; build &lt;span class="nt"&gt;-G&lt;/span&gt; Ninja
cmake &lt;span class="nt"&gt;--build&lt;/span&gt; build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;cmake &lt;span class="nt"&gt;--install&lt;/span&gt; build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;quickshell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight qml"&gt;&lt;code&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/.config/&lt;/span&gt;&lt;span class="nx"&gt;quickshell&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;qml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Minimal example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight qml"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;QtQuick&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Quickshell&lt;/span&gt;

&lt;span class="kt"&gt;PanelWindow&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;implicitHeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;

    &lt;span class="kt"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;anchors.centerIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;parent&lt;/span&gt;
        &lt;span class="nl"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Quickshell is working&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Works best on &lt;strong&gt;Wayland&lt;/strong&gt; (Hyprland, Sway, etc.)&lt;/li&gt;
&lt;li&gt;May be limited on X11&lt;/li&gt;
&lt;li&gt;Still in development → bugs are normal&lt;/li&gt;
&lt;li&gt;No config = blank screen&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;For more information, visit the &lt;a href="https://github.com/quickshell-mirror/quickshell" rel="noopener noreferrer"&gt;repository&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>qt</category>
      <category>cpp</category>
      <category>linux</category>
    </item>
    <item>
      <title>Quickshell: construa seu próprio desktop no Linux</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Wed, 06 May 2026 12:41:54 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/quickshell-construa-seu-proprio-desktop-no-linux-2hj</link>
      <guid>https://dev.to/marcosplusplus/quickshell-construa-seu-proprio-desktop-no-linux-2hj</guid>
      <description>&lt;p&gt;Em vez de depender de soluções prontas (Waybar, Polybar, ...), você cria o seu próprio.&lt;/p&gt;




&lt;p&gt;O &lt;strong&gt;Quickshell&lt;/strong&gt; é um toolkit moderno feito com &lt;a href="https://terminalroot.com.br/tags#cpp" rel="noopener noreferrer"&gt;C++&lt;/a&gt; para criar componentes de interface de desktop — barras, widgets, lock screens, launchers e até ambientes completos — usando &lt;a href="https://terminalroot.com.br/tags#qt" rel="noopener noreferrer"&gt;QtQuick + QML&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Não é um "programa de barra".&lt;/li&gt;
&lt;li&gt;Também não é um desktop completo pronto.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É uma &lt;strong&gt;base para construir um desktop customizado&lt;/strong&gt;, rodando junto com um compositor como Hyprland, Sway ou i3.&lt;/p&gt;

&lt;p&gt;Na prática, ele substitui várias peças:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;barra (status bar)&lt;/li&gt;
&lt;li&gt;notificações&lt;/li&gt;
&lt;li&gt;widgets&lt;/li&gt;
&lt;li&gt;lockscreen&lt;/li&gt;
&lt;li&gt;display manager&lt;/li&gt;
&lt;li&gt;controles de sistema&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Exemplo
&lt;/h2&gt;

&lt;p&gt;O Quickshell usa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;QtQuick (UI)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QML (configuração/programação)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Hot reload (salvou → atualizou na hora) ([Quickshell][2])&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exemplo simples (barra):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight qml"&gt;&lt;code&gt;&lt;span class="kt"&gt;PanelWindow&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;anchors&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nl"&gt;implicitHeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;

  &lt;span class="kt"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.centerIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;parent&lt;/span&gt;
    &lt;span class="nl"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello world&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Integrações nativas:
&lt;/h3&gt;

&lt;p&gt;Um dos pontos fortes é já vir integrado com o sistema:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wayland + X11 (windowing)&lt;/li&gt;
&lt;li&gt;Hyprland, i3, Sway (workspaces)&lt;/li&gt;
&lt;li&gt;PipeWire (áudio)&lt;/li&gt;
&lt;li&gt;BlueZ (Bluetooth)&lt;/li&gt;
&lt;li&gt;UPower (bateria)&lt;/li&gt;
&lt;li&gt;MPRIS (players de mídia)&lt;/li&gt;
&lt;li&gt;system tray padrão&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso elimina muito boilerplate.&lt;/p&gt;




&lt;h2&gt;
  
  
  Instalação
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Arch Linux / EndeavourOS / Manjaro
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yay &lt;span class="nt"&gt;-S&lt;/span&gt; quickshell
&lt;span class="c"&gt;### Ou&lt;/span&gt;
paru &lt;span class="nt"&gt;-S&lt;/span&gt; quickshell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou construa do zero em qualquer sistema:&lt;/p&gt;

&lt;p&gt;Dependências:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;cmake ninja-build qt6-base-dev qt6-declarative-dev &lt;span class="se"&gt;\&lt;/span&gt;
qt6-wayland wayland-protocols libpipewire-0.3-dev &lt;span class="se"&gt;\&lt;/span&gt;
libdbus-1-dev libxkbcommon-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Clone:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/quickshell-mirror/quickshell.git
&lt;span class="nb"&gt;cd &lt;/span&gt;quickshell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Construa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cmake &lt;span class="nt"&gt;-B&lt;/span&gt; build &lt;span class="nt"&gt;-G&lt;/span&gt; Ninja
cmake &lt;span class="nt"&gt;--build&lt;/span&gt; build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instale:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;cmake &lt;span class="nt"&gt;--install&lt;/span&gt; build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;quickshell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configuração:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight qml"&gt;&lt;code&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/.config/&lt;/span&gt;&lt;span class="nx"&gt;quickshell&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;qml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo mínimo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight qml"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;QtQuick&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Quickshell&lt;/span&gt;

&lt;span class="kt"&gt;PanelWindow&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;implicitHeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;

    &lt;span class="kt"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;anchors.centerIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;parent&lt;/span&gt;
        &lt;span class="nl"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Quickshell funcionando&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Funciona melhor em &lt;strong&gt;Wayland&lt;/strong&gt; (Hyprland, Sway, etc.)&lt;/li&gt;
&lt;li&gt;Em X11 pode ser limitado&lt;/li&gt;
&lt;li&gt;Ainda está em desenvolvimento → bugs são normais&lt;/li&gt;
&lt;li&gt;Sem config = tela vazia&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Para mais informações acesse o &lt;a href="https://github.com/quickshell-mirror/quickshell" rel="noopener noreferrer"&gt;repositório&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://terminalroot.com.br/qt" rel="noopener noreferrer"&gt;Aprenda Qt&lt;/a&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://terminalroot.com.br/qt" rel="noopener noreferrer"&gt;https://terminalroot.com.br/qt&lt;/a&gt;
&lt;/h3&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://terminalroot.com.br/promo" rel="noopener noreferrer"&gt;Aprenda C++ Completo&lt;/a&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://terminalroot.com.br/promo" rel="noopener noreferrer"&gt;https://terminalroot.com.br/promo&lt;/a&gt;
&lt;/h3&gt;

</description>
      <category>qt</category>
      <category>cpp</category>
      <category>linux</category>
    </item>
    <item>
      <title>Quickshell: construa seu próprio desktop no Linux</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Wed, 06 May 2026 12:27:59 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/quickshell-construa-seu-proprio-desktop-no-linux-3480</link>
      <guid>https://dev.to/marcosplusplus/quickshell-construa-seu-proprio-desktop-no-linux-3480</guid>
      <description>&lt;p&gt;Em vez de depender de soluções prontas (Waybar, Polybar, ...), você cria o seu próprio.&lt;/p&gt;




&lt;p&gt;O &lt;strong&gt;Quickshell&lt;/strong&gt; é um toolkit moderno feito com &lt;a href="https://terminalroot.com.br/tags#cpp" rel="noopener noreferrer"&gt;C++&lt;/a&gt; para criar componentes de interface de desktop — barras, widgets, lock screens, launchers e até ambientes completos — usando &lt;a href="https://terminalroot.com.br/tags#qt" rel="noopener noreferrer"&gt;QtQuick + QML&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Não é um "programa de barra".&lt;/li&gt;
&lt;li&gt;Também não é um desktop completo pronto.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É uma &lt;strong&gt;base para construir um desktop customizado&lt;/strong&gt;, rodando junto com um compositor como Hyprland, Sway ou i3.&lt;/p&gt;

&lt;p&gt;Na prática, ele substitui várias peças:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;barra (status bar)&lt;/li&gt;
&lt;li&gt;notificações&lt;/li&gt;
&lt;li&gt;widgets&lt;/li&gt;
&lt;li&gt;lockscreen&lt;/li&gt;
&lt;li&gt;display manager&lt;/li&gt;
&lt;li&gt;controles de sistema&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Exemplo
&lt;/h2&gt;

&lt;p&gt;O Quickshell usa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;QtQuick (UI)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QML (configuração/programação)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Hot reload (salvou → atualizou na hora) ([Quickshell][2])&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exemplo simples (barra):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight qml"&gt;&lt;code&gt;&lt;span class="kt"&gt;PanelWindow&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;anchors&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nl"&gt;implicitHeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;

  &lt;span class="kt"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.centerIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;parent&lt;/span&gt;
    &lt;span class="nl"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello world&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Integrações nativas:
&lt;/h3&gt;

&lt;p&gt;Um dos pontos fortes é já vir integrado com o sistema:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wayland + X11 (windowing)&lt;/li&gt;
&lt;li&gt;Hyprland, i3, Sway (workspaces)&lt;/li&gt;
&lt;li&gt;PipeWire (áudio)&lt;/li&gt;
&lt;li&gt;BlueZ (Bluetooth)&lt;/li&gt;
&lt;li&gt;UPower (bateria)&lt;/li&gt;
&lt;li&gt;MPRIS (players de mídia)&lt;/li&gt;
&lt;li&gt;system tray padrão&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso elimina muito boilerplate.&lt;/p&gt;




&lt;h2&gt;
  
  
  Instalação
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Arch Linux / EndeavourOS / Manjaro
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yay &lt;span class="nt"&gt;-S&lt;/span&gt; quickshell
&lt;span class="c"&gt;### Ou&lt;/span&gt;
paru &lt;span class="nt"&gt;-S&lt;/span&gt; quickshell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou construa do zero em qualquer sistema:&lt;/p&gt;

&lt;p&gt;Dependências:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;cmake ninja-build qt6-base-dev qt6-declarative-dev &lt;span class="se"&gt;\&lt;/span&gt;
qt6-wayland wayland-protocols libpipewire-0.3-dev &lt;span class="se"&gt;\&lt;/span&gt;
libdbus-1-dev libxkbcommon-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Clone:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/quickshell-mirror/quickshell.git
&lt;span class="nb"&gt;cd &lt;/span&gt;quickshell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Construa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cmake &lt;span class="nt"&gt;-B&lt;/span&gt; build &lt;span class="nt"&gt;-G&lt;/span&gt; Ninja
cmake &lt;span class="nt"&gt;--build&lt;/span&gt; build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instale:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;cmake &lt;span class="nt"&gt;--install&lt;/span&gt; build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;quickshell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configuração:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight qml"&gt;&lt;code&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/.config/&lt;/span&gt;&lt;span class="nx"&gt;quickshell&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;qml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo mínimo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight qml"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;QtQuick&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Quickshell&lt;/span&gt;

&lt;span class="kt"&gt;PanelWindow&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;anchors.right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="nl"&gt;implicitHeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;

    &lt;span class="kt"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;anchors.centerIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;parent&lt;/span&gt;
        &lt;span class="nl"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Quickshell funcionando&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Funciona melhor em &lt;strong&gt;Wayland&lt;/strong&gt; (Hyprland, Sway, etc.)&lt;/li&gt;
&lt;li&gt;Em X11 pode ser limitado&lt;/li&gt;
&lt;li&gt;Ainda está em desenvolvimento → bugs são normais&lt;/li&gt;
&lt;li&gt;Sem config = tela vazia&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Para mais informações acesse o &lt;a href="https://github.com/quickshell-mirror/quickshell" rel="noopener noreferrer"&gt;repositório&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://terminalroot.com.br/qt" rel="noopener noreferrer"&gt;Aprenda Qt&lt;/a&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://terminalroot.com.br/qt" rel="noopener noreferrer"&gt;https://terminalroot.com.br/qt&lt;/a&gt;
&lt;/h3&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://terminalroot.com.br/promo" rel="noopener noreferrer"&gt;Aprenda C++ Completo&lt;/a&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://terminalroot.com.br/promo" rel="noopener noreferrer"&gt;https://terminalroot.com.br/promo&lt;/a&gt;
&lt;/h3&gt;

</description>
      <category>cpp</category>
      <category>qt</category>
    </item>
    <item>
      <title>Conheça esse docking moderno para JavaFX</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Wed, 06 May 2026 12:27:09 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/conheca-esse-docking-moderno-para-javafx-2ka7</link>
      <guid>https://dev.to/marcosplusplus/conheca-esse-docking-moderno-para-javafx-2ka7</guid>
      <description>&lt;p&gt;Monte layouts estilo IDE em JavaFX sem limitações e sem gambiarras.&lt;/p&gt;




&lt;p&gt;O &lt;strong&gt;SnapFX&lt;/strong&gt; é um &lt;strong&gt;framework de docking para JavaFX&lt;/strong&gt;, focado em criar interfaces flexíveis no estilo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IntelliJ / VS Code&lt;/li&gt;
&lt;li&gt;IDEs em geral&lt;/li&gt;
&lt;li&gt;ferramentas com múltiplos painéis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Leve e moderno, pensado para layouts dinâmicos e organizados, sem você ter que reinventar drag &amp;amp; drop de janelas.&lt;/p&gt;




&lt;h2&gt;
  
  
  Instalação
&lt;/h2&gt;

&lt;p&gt;Via &lt;a href="https://terminalroot.com.br/2023/05/como-utilizar-o-gradle.html" rel="noopener noreferrer"&gt;Gradle&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;implementation&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"org.snapfx:snapfx-core:&amp;lt;version&amp;gt;"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Construa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Beowolve/SnapFX.git
./gradlew publishToMavenLocal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo Simples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.snapfx.SnapFX&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;javafx.application.Application&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;javafx.scene.Scene&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;javafx.scene.control.TextArea&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;javafx.stage.Stage&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SimpleDemo&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Application&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nd"&gt;@Override&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Stage&lt;/span&gt; &lt;span class="n"&gt;stage&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;SnapFX&lt;/span&gt; &lt;span class="n"&gt;snapFX&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;SnapFX&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="c1"&gt;// Dock nodes&lt;/span&gt;
        &lt;span class="n"&gt;snapFX&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;dock&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TextArea&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Editor 1"&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="s"&gt;"Editor"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;snapFX&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;dock&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TextArea&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Console"&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="s"&gt;"Console"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// Build layout&lt;/span&gt;
        &lt;span class="nc"&gt;Scene&lt;/span&gt; &lt;span class="n"&gt;scene&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Scene&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;snapFX&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;buildLayout&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="n"&gt;stage&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setScene&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scene&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;snapFX&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;initialize&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;stage&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="c1"&gt;// Optional: switch theme at runtime via named catalog entry&lt;/span&gt;
        &lt;span class="c1"&gt;// snapFX.setThemeStylesheet(SnapFX.getAvailableThemeStylesheets().get("Dark"));&lt;/span&gt;
        &lt;span class="n"&gt;stage&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;show&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Para mais informações acesse o &lt;a href="https://github.com/Beowolve/SnapFX" rel="noopener noreferrer"&gt;repositório&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://terminalroot.com.br/java" rel="noopener noreferrer"&gt;Aprenda Java&lt;/a&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://terminalroot.com.br/java" rel="noopener noreferrer"&gt;https://terminalroot.com.br/java&lt;/a&gt;
&lt;/h3&gt;

</description>
      <category>java</category>
    </item>
    <item>
      <title>Adicionei um Jogo ao Sistema Operacional Que Eu Criei</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Sun, 19 Apr 2026 21:39:38 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/adicionei-um-jogo-ao-sistema-operacional-que-eu-criei-2g97</link>
      <guid>https://dev.to/marcosplusplus/adicionei-um-jogo-ao-sistema-operacional-que-eu-criei-2g97</guid>
      <description>&lt;p&gt;☕ Nesse vídeo mostrei como desenvolvi um &lt;a href="https://terminalroot.com.br/tags#games" rel="noopener noreferrer"&gt;jogo&lt;/a&gt; &lt;strong&gt;baremetal&lt;/strong&gt; em um projeto de de &lt;a href="https://terminalroot.com.br/tags#so" rel="noopener noreferrer"&gt;sistema operacional&lt;/a&gt; para jogos de &lt;a href="https://terminalroot.com.br/tags#terminal" rel="noopener noreferrer"&gt;terminal&lt;/a&gt; que estou desenvolvendo com &lt;a href="https://terminalroot.com.br/cpp" rel="noopener noreferrer"&gt;C++&lt;/a&gt; e &lt;a href="https://terminalroot.com.br/tags#assembly" rel="noopener noreferrer"&gt;GNU Assembler&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Esse vídeo é continuação &lt;a href="https://youtu.be/3GwRF0IK1Ks" rel="noopener noreferrer"&gt;desse vídeo&lt;/a&gt; e esse é o &lt;a href="https://github.com/terroo/terminalroot-os" rel="noopener noreferrer"&gt;repositório do projeto&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Assista ao Vídeo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=L9uUPg9q_eI" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F88evgiem4fgz653bq10o.png" alt="Adicionei um Jogo ao Sistema Operacional Que Eu Criei" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Aprenda:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;👑 Aprenda a criar sua própria linguagem de programação: &lt;a href="https://terminalroot.com.br/mylang" rel="noopener noreferrer"&gt;https://terminalroot.com.br/mylang&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;✅ Aprenda Criação de Games com C++ e SFML: &lt;a href="https://terminalroot.com.br/games" rel="noopener noreferrer"&gt;https://terminalroot.com.br/games&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;✅ Pacote Promocional C++: &lt;a href="https://terminalroot.com.br/promo" rel="noopener noreferrer"&gt;https://terminalroot.com.br/promo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;✅ Aprenda C++ e Qt: &lt;a href="https://terminalroot.com.br/cpp" rel="noopener noreferrer"&gt;https://terminalroot.com.br/cpp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;✅ Conheça nossos Cursos: &lt;a href="https://bit.ly/CursosTerminalRoot" rel="noopener noreferrer"&gt;https://bit.ly/CursosTerminalRoot&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🎁 Todos os Cursos na Udemy: &lt;a href="https://bit.ly/UdemyTerminalRoot" rel="noopener noreferrer"&gt;https://bit.ly/UdemyTerminalRoot&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cpp</category>
      <category>assembly</category>
      <category>softwaredevelopment</category>
      <category>kernel</category>
    </item>
    <item>
      <title>Pyrite64, a Modern Engine for Nintendo 64</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Mon, 13 Apr 2026 01:17:11 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/pyrite64-a-modern-engine-for-nintendo-64-18mo</link>
      <guid>https://dev.to/marcosplusplus/pyrite64-a-modern-engine-for-nintendo-64-18mo</guid>
      <description>&lt;p&gt;&lt;strong&gt;Pyrite64&lt;/strong&gt; is an open-source engine + visual editor for creating &lt;strong&gt;native 3D Nintendo 64 games&lt;/strong&gt; — not "N64-style", but games that actually run on original hardware or accurate emulators. For development (scripting) with &lt;a href="https://terminalroot.com/tags#cpp" rel="noopener noreferrer"&gt;C++&lt;/a&gt; or &lt;a href="https://terminalroot.com/tags#clanguage" rel="noopener noreferrer"&gt;C&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What's the idea?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Replace the old workflow (confusing SDKs + broken toolchains)&lt;/li&gt;
&lt;li&gt;Bring something closer to Unity/Godot, but focused on the N64&lt;/li&gt;
&lt;li&gt;Generate real ROMs compatible with the console&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual editor with scene management&lt;/li&gt;
&lt;li&gt;Model import (GLTF / Blender + Fast64)&lt;/li&gt;
&lt;li&gt;Node graph (basic visual scripting)&lt;/li&gt;
&lt;li&gt;Runtime engine (rendering, collision, audio, etc.)&lt;/li&gt;
&lt;li&gt;HDR + bloom adapted for N64&lt;/li&gt;
&lt;li&gt;Asset manager with automatic cleanup ([AlternativeTo][2])&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://terminalroot.com/tags#windows" rel="noopener noreferrer"&gt;Windows&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The project itself automates almost everything.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download the release (or clone the repo)&lt;/li&gt;
&lt;li&gt;Run the editor&lt;/li&gt;
&lt;li&gt;It automatically installs everything:&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://terminalroot.com/tags#gnulinux" rel="noopener noreferrer"&gt;GNU/Linux&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Dependencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://terminalroot.com/tags#gcc" rel="noopener noreferrer"&gt;GCC&lt;/a&gt;/&lt;a href="https://terminalroot.com/tags#llvm" rel="noopener noreferrer"&gt;Clang&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://terminalroot.com/tags#cmake" rel="noopener noreferrer"&gt;CMake&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Basic &lt;code&gt;build&lt;/code&gt; libs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;libdragon&lt;/code&gt; toolchain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then just clone, compile, and install&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/HailToDodongo/pyrite64
&lt;span class="nb"&gt;cd &lt;/span&gt;pyrite64
&lt;span class="nb"&gt;mkdir &lt;/span&gt;build &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;build
cmake ..
make
&lt;span class="nb"&gt;sudo &lt;/span&gt;make &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create a project&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Inside the editor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New Project&lt;/li&gt;
&lt;li&gt;Set name + folder&lt;/li&gt;
&lt;li&gt;It creates the structure with &lt;code&gt;project.p64proj&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Configure toolchain + emulator&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;File:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;project.p&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="err"&gt;proj&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Important fields:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"pathEmu"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ares"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"pathN64Inst"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/path/to/toolchain"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pathEmu&lt;/code&gt; → emulator command&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pathN64Inst&lt;/code&gt; → toolchain root ([Instagit][3])&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Import assets&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Typical workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model in Blender&lt;/li&gt;
&lt;li&gt;Export GLTF&lt;/li&gt;
&lt;li&gt;Import into the editor&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Build the scene&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Add objects&lt;/li&gt;
&lt;li&gt;Adjust transforms&lt;/li&gt;
&lt;li&gt;Define materials&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Game logic&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Two options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node graph (visual)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://terminalroot.com/tags#cpp" rel="noopener noreferrer"&gt;C++&lt;/a&gt; (more control)&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Build and run&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;“Run” button&lt;/li&gt;
&lt;li&gt;Generates ROM&lt;/li&gt;
&lt;li&gt;Opens automatically in the emulator&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;For more information, visit the &lt;a href="https://hailtododongo.github.io/pyrite64/docs/faq.html#do-i-need-to-know-programming" rel="noopener noreferrer"&gt;official website with FAQ&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>cpp</category>
      <category>c</category>
    </item>
    <item>
      <title>Pyrite64, engine moderna para Nintendo 64</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Mon, 13 Apr 2026 01:10:00 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/pyrite64-engine-moderna-para-nintendo-64-3m9l</link>
      <guid>https://dev.to/marcosplusplus/pyrite64-engine-moderna-para-nintendo-64-3m9l</guid>
      <description>&lt;p&gt;Apesar de ter Py de Python esse motor é para desenvolvimento(scripts) com C++ ou C.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Pyrite64&lt;/strong&gt; é uma engine + editor visual open source para criar jogos &lt;strong&gt;3D nativos de Nintendo 64&lt;/strong&gt; — não "estilo N64", mas que rodam de verdade no hardware original ou em emuladores precisos. Para desenvolvimento(scripts) com &lt;a href="https://terminalroot.com.br/cpp" rel="noopener noreferrer"&gt;C++&lt;/a&gt; ou &lt;a href="https://terminalroot.com.br/c" rel="noopener noreferrer"&gt;C&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Qual a ideia?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Substituir o workflow antigo (SDKs confusos + toolchains quebradas)&lt;/li&gt;
&lt;li&gt;Trazer algo mais próximo de Unity/Godot, mas focado no N64&lt;/li&gt;
&lt;li&gt;Gerar ROMs reais compatíveis com o console&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Com:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Editor visual com gerenciamento de cenas&lt;/li&gt;
&lt;li&gt;Import de modelos (GLTF / Blender + Fast64)&lt;/li&gt;
&lt;li&gt;Node graph (script visual básico)&lt;/li&gt;
&lt;li&gt;Engine runtime (render, colisão, áudio, etc.)&lt;/li&gt;
&lt;li&gt;HDR + bloom adaptado ao N64&lt;/li&gt;
&lt;li&gt;Asset manager com limpeza automática ([AlternativeTo][2])&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Instalação
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://terminalroot.com.br/tags#windows" rel="noopener noreferrer"&gt;Windows&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;O próprio projeto automatiza quase tudo.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Baixe o release (ou clone o repo)&lt;/li&gt;
&lt;li&gt;Execute o editor&lt;/li&gt;
&lt;li&gt;Ele instala automaticamente:&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://terminalroot.com.br/tags#gnulinux" rel="noopener noreferrer"&gt;GNU/Linux&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Dependências:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://terminalroot.com.br/tags#gcc" rel="noopener noreferrer"&gt;GCC&lt;/a&gt;/&lt;a href="https://terminalroot.com.br/tags#llvm" rel="noopener noreferrer"&gt;Clang&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://terminalroot.com.br/tags#cmake" rel="noopener noreferrer"&gt;CMake&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;libs&lt;/code&gt; básicas de &lt;code&gt;build&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;toolchain do &lt;code&gt;libdragon&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Depois é só clonar, compilar e instalar&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/HailToDodongo/pyrite64
&lt;span class="nb"&gt;cd &lt;/span&gt;pyrite64
&lt;span class="nb"&gt;mkdir &lt;/span&gt;build &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;build
cmake ..
make
&lt;span class="nb"&gt;sudo &lt;/span&gt;make &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Primeiros passos
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Criar projeto&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Dentro do editor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New Project&lt;/li&gt;
&lt;li&gt;Define nome + pasta&lt;/li&gt;
&lt;li&gt;Ele cria estrutura com &lt;code&gt;project.p64proj&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Configurar toolchain + emulador&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Arquivo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;project.p&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="err"&gt;proj&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Campos importantes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"pathEmu"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ares"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"pathN64Inst"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/caminho/toolchain"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pathEmu&lt;/code&gt; → comando do emulador&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pathN64Inst&lt;/code&gt; → raiz da toolchain ([Instagit][3])&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Importar assets&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Fluxo típico:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modela no Blender&lt;/li&gt;
&lt;li&gt;Exporta GLTF&lt;/li&gt;
&lt;li&gt;Importa no editor&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Montar cena&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Adiciona objetos&lt;/li&gt;
&lt;li&gt;Ajusta transform&lt;/li&gt;
&lt;li&gt;Define materiais&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Lógica do jogo&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Duas opções:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node graph (visual)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://terminalroot.com.br/promo" rel="noopener noreferrer"&gt;C++&lt;/a&gt; (mais controle)&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Build e rodar&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Botão “Run”&lt;/li&gt;
&lt;li&gt;Gera ROM&lt;/li&gt;
&lt;li&gt;Abre no emulador automaticamente&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Para mais informações acesse o &lt;a href="https://hailtododongo.github.io/pyrite64/docs/faq.html#do-i-need-to-know-programming" rel="noopener noreferrer"&gt;site oficial com FAQ&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Veja também:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://terminalroot.com.br/sfml/" rel="noopener noreferrer"&gt;Curso de Criação de Games com C++ e SFML para Windows e Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://terminalroot.com.br/cpp/" rel="noopener noreferrer"&gt;Curso Moderno de C++&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gamedev</category>
      <category>cpp</category>
      <category>c</category>
    </item>
    <item>
      <title>Install This Modern Network Scanner with TUI Mode</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Wed, 25 Mar 2026 13:47:05 +0000</pubDate>
      <link>https://dev.to/marcosplusplus/install-this-modern-network-scanner-with-tui-mode-4glf</link>
      <guid>https://dev.to/marcosplusplus/install-this-modern-network-scanner-with-tui-mode-4glf</guid>
      <description>&lt;p&gt;Built in Go, incredibly fast, and hassle-free.&lt;/p&gt;




&lt;p&gt;If you've used tools like &lt;a href="https://terminalroot.com.br/2018/07/escaneado-redes-com-nmap.html" rel="noopener noreferrer"&gt;nmap&lt;/a&gt; and found them heavy, verbose, or too slow for simple tasks, &lt;strong&gt;Nibble&lt;/strong&gt; solves exactly that problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nibble&lt;/strong&gt; is an open-source network scanner focused on simplicity, speed, and usability. It allows you to discover devices and services on your local network without needing to memorize complex commands or configure anything manually. It works on &lt;a href="https://terminalroot.com/tags#gnulinux" rel="noopener noreferrer"&gt;GNU/Linux&lt;/a&gt;, &lt;a href="https://terminalroot.com/tags#macos" rel="noopener noreferrer"&gt;macOS&lt;/a&gt;, and &lt;a href="https://terminalroot.com.br/tags#windows" rel="noopener noreferrer"&gt;Windows&lt;/a&gt; (x86 and ARM).&lt;/p&gt;




&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;brew install backendsystems/tap/nibble&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pipx install nibble-cli&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npm install -g @backendsystems/nibble&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;go install github.com/backendsystems/nibble@latest&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or run it directly with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @backendsystems/nibble
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;For more information, visit the &lt;a href="https://github.com/backendsystems/nibble" rel="noopener noreferrer"&gt;repository&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>go</category>
      <category>tui</category>
      <category>network</category>
    </item>
  </channel>
</rss>
