<?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>Forem: Marcos Oliveira</title>
    <description>The latest articles on Forem by Marcos Oliveira (@marcosplusplus).</description>
    <link>https://forem.com/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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1516818%2F5fe49cd6-69f7-43f7-b3d9-e1168f95bcf1.jpg</url>
      <title>Forem: Marcos Oliveira</title>
      <link>https://forem.com/marcosplusplus</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/marcosplusplus"/>
    <language>en</language>
    <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://forem.com/marcosplusplus/quickshell-build-your-own-desktop-on-linux-20d2</link>
      <guid>https://forem.com/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://forem.com/marcosplusplus/quickshell-construa-seu-proprio-desktop-no-linux-2hj</link>
      <guid>https://forem.com/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://forem.com/marcosplusplus/quickshell-construa-seu-proprio-desktop-no-linux-3480</link>
      <guid>https://forem.com/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://forem.com/marcosplusplus/conheca-esse-docking-moderno-para-javafx-2ka7</link>
      <guid>https://forem.com/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://forem.com/marcosplusplus/adicionei-um-jogo-ao-sistema-operacional-que-eu-criei-2g97</link>
      <guid>https://forem.com/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://forem.com/marcosplusplus/pyrite64-a-modern-engine-for-nintendo-64-18mo</link>
      <guid>https://forem.com/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://forem.com/marcosplusplus/pyrite64-engine-moderna-para-nintendo-64-3m9l</link>
      <guid>https://forem.com/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://forem.com/marcosplusplus/install-this-modern-network-scanner-with-tui-mode-4glf</link>
      <guid>https://forem.com/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>
    <item>
      <title>Instale esse Scanner de Rede Moderno modo TUI</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Wed, 25 Mar 2026 13:42:25 +0000</pubDate>
      <link>https://forem.com/marcosplusplus/instale-esse-scanner-de-rede-moderno-modo-tui-53ie</link>
      <guid>https://forem.com/marcosplusplus/instale-esse-scanner-de-rede-moderno-modo-tui-53ie</guid>
      <description>&lt;p&gt;Feito em Go e muito rápido e sem dor de cabeça.&lt;/p&gt;




&lt;p&gt;Se você já usou ferramentas como &lt;a href="https://terminalroot.com.br/2018/07/escaneado-redes-com-nmap.html" rel="noopener noreferrer"&gt;nmap&lt;/a&gt; e achou pesado, verboso ou lento demais para tarefas simples, o &lt;strong&gt;Nibble&lt;/strong&gt; resolve exatamente esse problema.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nibble&lt;/strong&gt; é um scanner de rede open-source focado em simplicidade, velocidade e usabilidade. Ele permite descobrir dispositivos e serviços na sua rede local sem precisar decorar comandos complexos ou configurar nada manualmente.Funciona em &lt;a href="https://terminalroot.com.br/tags#gnulinux" rel="noopener noreferrer"&gt;GNU/Linux&lt;/a&gt;, &lt;a href="https://terminalroot.com.br/tags#macos" rel="noopener noreferrer"&gt;macOS&lt;/a&gt; e &lt;a href="https://terminalroot.com.br/tags#windows" rel="noopener noreferrer"&gt;Windows&lt;/a&gt; (x86 e ARM).&lt;/p&gt;




&lt;h2&gt;
  
  
  Instalação
&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;Ou rodar direto com:&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;Para mais informações acesse o &lt;a href="https://github.com/backendsystems/nibble" rel="noopener noreferrer"&gt;repositório&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tui</category>
      <category>cli</category>
      <category>network</category>
      <category>go</category>
    </item>
    <item>
      <title>Os 10 Melhores Monitores para Programadores</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Wed, 25 Mar 2026 13:41:04 +0000</pubDate>
      <link>https://forem.com/marcosplusplus/os-10-melhores-monitores-para-programadores-1p8a</link>
      <guid>https://forem.com/marcosplusplus/os-10-melhores-monitores-para-programadores-1p8a</guid>
      <description>&lt;p&gt;Esses monitores são ótimos para programadores, oferecendo desde &lt;strong&gt;alta resolução e precisão de cores&lt;/strong&gt; até &lt;strong&gt;design ergonômico&lt;/strong&gt; para longas sessões de codificação. O &lt;strong&gt;tamanho, a qualidade da tela e a ergonomia&lt;/strong&gt; são aspectos cruciais que podem melhorar significativamente a experiência de programação.  &lt;/p&gt;




&lt;h2&gt;
  
  
  01. &lt;a href="https://amzn.to/4bQuMoZ" rel="noopener noreferrer"&gt;Dell UltraSharp P2725H&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2Fmgvaxt9fzhf1ndd30pcp.jpg" class="article-body-image-wrapper"&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%2Fmgvaxt9fzhf1ndd30pcp.jpg" alt="01" width="640" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O &lt;strong&gt;P2725H&lt;/strong&gt; oferece uma tela &lt;strong&gt;4K de 27 polegadas&lt;/strong&gt;, com ótima precisão de cores, ideal para programadores que precisam de clareza em detalhes.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolução&lt;/strong&gt;: 3840 x 2160 (4K)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Características&lt;/strong&gt;: IPS, excelente cobertura de cores (95% DCI-P3), portas USB-C com carregamento.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ideal para&lt;/strong&gt;: programadores que trabalham com gráficos, design ou precisam de uma tela com resolução muito alta.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://amzn.to/4bQuMoZ" rel="noopener noreferrer"&gt;Clique aqui para adquirir esse Monitor&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  02. &lt;a href="https://amzn.to/4szcorX" rel="noopener noreferrer"&gt;LG 4wn80c-b ultrawide&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2Fwys0oiaruanhv73566af.jpg" class="article-body-image-wrapper"&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%2Fwys0oiaruanhv73566af.jpg" alt="02" width="640" height="381"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O &lt;strong&gt;4wn80c-b&lt;/strong&gt; é um monitor &lt;strong&gt;ultrawide&lt;/strong&gt; de 34 polegadas com resolução &lt;strong&gt;1440p&lt;/strong&gt; que oferece uma ótima experiência multitarefa.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolução&lt;/strong&gt;: 3440 x 1440 (UltraWide)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Características&lt;/strong&gt;: Painel IPS, design curvado, excelente para produtividade, ajuste de altura e inclinação.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ideal para&lt;/strong&gt;: programadores que fazem &lt;strong&gt;multitasking&lt;/strong&gt; e precisam de mais espaço na tela para abrir várias janelas ou códigos simultaneamente.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://amzn.to/4szcorX" rel="noopener noreferrer"&gt;Clique aqui para adquirir esse Monitor&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  03. &lt;a href="https://amzn.to/4t2fjco" rel="noopener noreferrer"&gt;ASUS ProArt PA278QV&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2F15sie05ojw1rv001tsbb.jpg" class="article-body-image-wrapper"&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%2F15sie05ojw1rv001tsbb.jpg" alt="03" width="640" height="561"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Focado em &lt;strong&gt;precisão de cores&lt;/strong&gt;, o &lt;strong&gt;PA278QV&lt;/strong&gt; é perfeito para programadores que também trabalham com design ou edição gráfica.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolução&lt;/strong&gt;: 2560 x 1440 (QHD)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Características&lt;/strong&gt;: Calibração de cores de fábrica, painel IPS, suporte ergonômico (ajuste de altura, inclinação, rotação).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ideal para&lt;/strong&gt;: programadores que precisam de um monitor preciso para edição de imagens ou desenvolvimento de interfaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://amzn.to/4t2fjco" rel="noopener noreferrer"&gt;Clique aqui para adquirir esse Monitor&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  04. &lt;a href="https://amzn.to/4bBImMI" rel="noopener noreferrer"&gt;BenQ PD2705U&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2Fwzykh5qtq4nzsdaseik8.jpg" class="article-body-image-wrapper"&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%2Fwzykh5qtq4nzsdaseik8.jpg" alt="04" width="640" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O &lt;strong&gt;PD2705U&lt;/strong&gt; é um monitor 4K de &lt;strong&gt;27 polegadas&lt;/strong&gt; com excelente performance para programadores que necessitam de uma tela grande e com excelente &lt;strong&gt;precisão de cores&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolução&lt;/strong&gt;: 3840 x 2160 (4K)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Características&lt;/strong&gt;: Painel IPS, design ergonômico, modos de exibição especializados para programadores (como o modo de leitura).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ideal para&lt;/strong&gt;: programadores que precisam de alta resolução para multitarefas e atividades de design.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://amzn.to/4bBImMI" rel="noopener noreferrer"&gt;Clique aqui para adquirir esse Monitor&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  05. &lt;a href="https://amzn.to/4uNZdES" rel="noopener noreferrer"&gt;Samsung Odyssey AI TV 55" OLED 4K S85F&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2F50yp7ilrdujybjpaljh9.jpg" class="article-body-image-wrapper"&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%2F50yp7ilrdujybjpaljh9.jpg" alt="05" width="640" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O &lt;strong&gt;Odyssey AI TV 55" OLED 4K S85F ** é um monitor **curvo&lt;/strong&gt; de 55 polegadas, ideal para programadores que preferem um monitor mais imersivo e com excelente taxa de atualização.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolução&lt;/strong&gt;: 3840 x 2160 (4K)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Características&lt;/strong&gt;: Curvatura de 1000R, taxa de atualização de 240Hz, tempo de resposta rápido, painel VA.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ideal para&lt;/strong&gt;: programadores que também são gamers ou preferem uma tela curva para uma melhor experiência de trabalho imersivo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://amzn.to/4uNZdES" rel="noopener noreferrer"&gt;Clique aqui para adquirir esse Monitor&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  06. &lt;a href="https://amzn.to/4dJBxeJ" rel="noopener noreferrer"&gt;Acer Predator X34&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2F3btgz0k5webo0en763do.jpg" class="article-body-image-wrapper"&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%2F3btgz0k5webo0en763do.jpg" alt="06" width="640" height="419"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O &lt;strong&gt;X34&lt;/strong&gt; é um monitor &lt;strong&gt;ultrawide curvo&lt;/strong&gt; de 34 polegadas, excelente para programadores que trabalham com múltiplos projetos ou janelas.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolução&lt;/strong&gt;: 3440 x 1440 (UltraWide)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Características&lt;/strong&gt;: Curvatura 1900R, taxa de atualização de 100Hz, painel IPS, suporte G-Sync.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ideal para&lt;/strong&gt;: programadores que buscam um monitor de alta qualidade com um campo de visão amplo para multitarefas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://amzn.to/4dJBxeJ" rel="noopener noreferrer"&gt;Clique aqui para adquirir esse Monitor&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  07. &lt;a href="https://amzn.to/487jviV" rel="noopener noreferrer"&gt;Dell P2719H&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2Fhnmps55esjdlznehr9jr.jpg" class="article-body-image-wrapper"&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%2Fhnmps55esjdlznehr9jr.jpg" alt="07" width="640" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O &lt;strong&gt;P2719H&lt;/strong&gt; é um monitor de &lt;strong&gt;27 polegadas&lt;/strong&gt; com uma ótima relação custo-benefício, ideal para programadores que buscam um display de qualidade sem gastar muito.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolução&lt;/strong&gt;: 1920 x 1080 (Full HD)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Características&lt;/strong&gt;: Painel IPS, borda fina, design ajustável em altura, rotação e inclinação.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ideal para&lt;/strong&gt;: programadores que precisam de um monitor confiável e confortável para trabalhar longas horas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://amzn.to/487jviV" rel="noopener noreferrer"&gt;Clique aqui para adquirir esse Monitor&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  08. &lt;a href="https://amzn.to/3PtJsmy" rel="noopener noreferrer"&gt;Philips 276E8VJSB&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2Fd57mk1ogshwg15f322k4.jpg" class="article-body-image-wrapper"&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%2Fd57mk1ogshwg15f322k4.jpg" alt="08" width="640" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Valor: &lt;strong&gt;R$ 750,00&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;O &lt;strong&gt;276E8VJSB&lt;/strong&gt; é um monitor &lt;strong&gt;4K de 27 polegadas&lt;/strong&gt; com uma ótima relação de custo-benefício, ideal para quem quer alta resolução sem gastar tanto.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolução&lt;/strong&gt;: 3840 x 2160 (4K)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Características&lt;/strong&gt;: Painel IPS, excelente desempenho em cores e contrastes.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ideal para&lt;/strong&gt;: programadores que querem um monitor com excelente resolução e boa qualidade de imagem para tarefas diárias e leitura de código.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://amzn.to/3PtJsmy" rel="noopener noreferrer"&gt;Clique aqui para adquirir esse Monitor&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  09. &lt;a href="https://amzn.to/4rYZWAH" rel="noopener noreferrer"&gt;LG UltraGear 27GN750-27&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2Fuiawrogmfht81vs42gwu.jpg" class="article-body-image-wrapper"&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%2Fuiawrogmfht81vs42gwu.jpg" alt="09" width="640" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O &lt;strong&gt;LG 27UK850-W&lt;/strong&gt; é um monitor 4K de 27 polegadas com ótima precisão de cores, sendo uma excelente escolha para programadores e profissionais criativos.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolução&lt;/strong&gt;: 3840 x 2160 (4K)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Características&lt;/strong&gt;: Conexões USB-C, painel IPS, suporte HDR10.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ideal para&lt;/strong&gt;: programadores que buscam um monitor com boa qualidade de imagem e conexão USB-C para facilitar a configuração.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://amzn.to/4rYZWAH" rel="noopener noreferrer"&gt;Clique aqui para adquirir esse Monitor&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  10. &lt;a href="https://amzn.to/4dsnaM3" rel="noopener noreferrer"&gt;VIVO Monitor Ultrawide + suporte para laptop&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2F1lv6tapl4gub5g73ldbc.jpg" class="article-body-image-wrapper"&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%2F1lv6tapl4gub5g73ldbc.jpg" alt="10" width="640" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O &lt;strong&gt;VIVO Monitor Ultrawide + suporte para laptop&lt;/strong&gt; é um monitor &lt;strong&gt;4K de 49 polegadas&lt;/strong&gt; que combina design minimalista com excelente precisão de cores, ideal para programadores e designers gráficos.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolução&lt;/strong&gt;: 3840 x 2160 (4K)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Características&lt;/strong&gt;: Painel IPS, ajustes ergonômicos (altura, rotação, inclinação), baixo consumo de energia.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ideal para&lt;/strong&gt;: programadores que buscam um monitor altamente preciso e ergonômico para trabalho prolongado.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://amzn.to/4dsnaM3" rel="noopener noreferrer"&gt;Clique aqui para adquirir esse Monitor&lt;/a&gt;&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://terminalroot.com.br/2023/09/conheca-10-teclados-mecanicos-sem-fio-e-ergonomicos-que-vale-a-pena-ter.html" rel="noopener noreferrer"&gt;Conheça 10 Teclados Mecânicos, Sem-fio e Ergonômicos que vale à pena ter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://terminalroot.com.br/2025/02/os-10-melhores-acessorios-de-informatica-para-um-desenvolvedor.html" rel="noopener noreferrer"&gt;Os 10 Melhores Acessórios de Informática para um Desenvolvedor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://terminalroot.com.br/2025/05/os-10-melhores-acessorios-de-informatica-para-um-desenvolvedor-parte-2.html" rel="noopener noreferrer"&gt;Os 10 Melhores Acessórios de Informática para um Desenvolvedor – Parte 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://terminalroot.com.br/2025/10/top-10-melhores-servidores-e-nas.html" rel="noopener noreferrer"&gt;Top 10 melhores Servidores e NAS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://terminalroot.com.br/2025/11/os-20-melhores-notebooks-para-programadores-em-2026.html" rel="noopener noreferrer"&gt;Os 20 Melhores Notebooks para Programadores em 2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>hardware</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Gere Arte com Python (HSV Spiral)</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Mon, 23 Mar 2026 15:13:51 +0000</pubDate>
      <link>https://forem.com/marcosplusplus/gere-arte-com-python-hsv-spiral-3g2h</link>
      <guid>https://forem.com/marcosplusplus/gere-arte-com-python-hsv-spiral-3g2h</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;A cada iteração, o ângulo muda e a cor avança no espectro HSV, criando esse efeito de espiral com gradiente arco-íris.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Usando &lt;code&gt;turtle&lt;/code&gt; e &lt;code&gt;colorsys&lt;/code&gt; para gerar um padrão geométrico colorido.&lt;/p&gt;




&lt;h2&gt;
  
  
  Dependências
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No &lt;a href="https://terminalroot.com.br/tags#windows" rel="noopener noreferrer"&gt;Windows&lt;/a&gt; com &lt;a href="https://winstall.app/apps/CarlWenrich.PythonTkGuiBuilder" rel="noopener noreferrer"&gt;WinGet&lt;/a&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;winget &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nt"&gt;--id&lt;/span&gt; CarlWenrich.PythonTkGuiBuilder
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Em &lt;a href="https://terminalroot.com.br/tags#gnulinux" rel="noopener noreferrer"&gt;distros GNU/Linux com APT&lt;/a&gt;:
&lt;/li&gt;
&lt;/ul&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;python3-tk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Código Python
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;main.py&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;colorsys&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;turtle&lt;/span&gt;

&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;turtle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Turtle&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;turtle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Screen&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bgcolor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;black&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;speed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;36&lt;/span&gt;
&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;460&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;

    &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;colorsys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hsv_to_rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;left&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;145&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forward&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;left&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois basta rodar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python main.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

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

</description>
      <category>python</category>
    </item>
    <item>
      <title>Manage APT packages with a modern terminal interface</title>
      <dc:creator>Marcos Oliveira</dc:creator>
      <pubDate>Mon, 23 Mar 2026 14:15:37 +0000</pubDate>
      <link>https://forem.com/marcosplusplus/manage-apt-packages-with-a-modern-terminal-interface-318h</link>
      <guid>https://forem.com/marcosplusplus/manage-apt-packages-with-a-modern-terminal-interface-318h</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Built with Go, works as a frontend for APT.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;APTUI is a &lt;a href="https://terminalroot.com/tags#tui" rel="noopener noreferrer"&gt;TUI (Terminal User Interface)&lt;/a&gt; written in &lt;a href="https://terminalroot.com/tags#go" rel="noopener noreferrer"&gt;Go&lt;/a&gt; that acts as a frontend for APT.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The concept is simple: &lt;strong&gt;do everything you already do with APT, but without leaving the screen and without typing repetitive commands&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Main features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time filtering as you type&lt;/li&gt;
&lt;li&gt;Fuzzy search (no need for exact name)&lt;/li&gt;
&lt;li&gt;Fallback to &lt;code&gt;apt-cache search&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  Via Go
&lt;/h3&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/mexirica/aptui@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Or via APT (Debian/Ubuntu)
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;(custom repository available in the project)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then 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;aptui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

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