<?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: Isaac</title>
    <description>The latest articles on DEV Community by Isaac (@isaac_90).</description>
    <link>https://dev.to/isaac_90</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%2F3906094%2F01141803-e886-45d9-9337-83608b4c77ff.png</url>
      <title>DEV Community: Isaac</title>
      <link>https://dev.to/isaac_90</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/isaac_90"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Isaac</dc:creator>
      <pubDate>Thu, 30 Apr 2026 12:37:43 +0000</pubDate>
      <link>https://dev.to/isaac_90/-58el</link>
      <guid>https://dev.to/isaac_90/-58el</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/isaac_90/build-a-reusable-terminator-layout-with-pre-loaded-commands-per-pane-38j9" class="crayons-story__hidden-navigation-link"&gt;Build a reusable Terminator layout with pre-loaded commands per pane&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/isaac_90" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3906094%2F01141803-e886-45d9-9337-83608b4c77ff.png" alt="isaac_90 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/isaac_90" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Isaac
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Isaac
                
              
              &lt;div id="story-author-preview-content-3591780" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/isaac_90" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3906094%2F01141803-e886-45d9-9337-83608b4c77ff.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Isaac&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/isaac_90/build-a-reusable-terminator-layout-with-pre-loaded-commands-per-pane-38j9" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 30&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/isaac_90/build-a-reusable-terminator-layout-with-pre-loaded-commands-per-pane-38j9" id="article-link-3591780"&gt;
          Build a reusable Terminator layout with pre-loaded commands per pane
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/bash"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;bash&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/linux"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;linux&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/terminator"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;terminator&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/terminal"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;terminal&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/isaac_90/build-a-reusable-terminator-layout-with-pre-loaded-commands-per-pane-38j9" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/isaac_90/build-a-reusable-terminator-layout-with-pre-loaded-commands-per-pane-38j9#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Build a reusable Terminator layout with pre-loaded commands per pane</title>
      <dc:creator>Isaac</dc:creator>
      <pubDate>Thu, 30 Apr 2026 12:27:39 +0000</pubDate>
      <link>https://dev.to/isaac_90/build-a-reusable-terminator-layout-with-pre-loaded-commands-per-pane-38j9</link>
      <guid>https://dev.to/isaac_90/build-a-reusable-terminator-layout-with-pre-loaded-commands-per-pane-38j9</guid>
      <description>&lt;p&gt;If you regularly work across multiple servers, environments, or services, you probably know this dance: open a terminal, split it three ways, type the same SSH command in one pane, the same &lt;code&gt;tail -f&lt;/code&gt; in another, and a &lt;code&gt;ping&lt;/code&gt; in the third. Every time. For every host.&lt;/p&gt;

&lt;p&gt;This post walks through building a single shell script that opens&lt;br&gt;
&lt;a href="https://gnome-terminator.org/" rel="noopener noreferrer"&gt;Terminator&lt;/a&gt; with a custom layout — three panes, each with its own title and a list of commands pre-loaded into shell history, ready to fire with a single up arrow.&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="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# multi-pane.sh — Abre Terminator con un layout de 3 paneles personalizables,&lt;/span&gt;
&lt;span class="c"&gt;# cada uno con su propio título y comandos precargados en el historial&lt;/span&gt;
&lt;span class="c"&gt;# (listos para ejecutar con flecha arriba).&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Uso: ./multi-pane.sh &amp;lt;argumento&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# El argumento se sustituye en los títulos y comandos de cada panel.&lt;/span&gt;
&lt;span class="c"&gt;# Útil para flujos donde alternás entre múltiples hosts/entornos.&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;

&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-euo&lt;/span&gt; pipefail

&lt;span class="nv"&gt;ARG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;:?Uso:&lt;span class="p"&gt; &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;basename&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt; &amp;lt;argumento&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;

&lt;span class="nv"&gt;CONFIG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.config/terminator/config"&lt;/span&gt;
&lt;span class="nv"&gt;RC_LEFT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/multi-pane-rc-left
&lt;span class="nv"&gt;RC_TOP_RIGHT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/multi-pane-rc-top-right
&lt;span class="nv"&gt;RC_BOTTOM_RIGHT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/multi-pane-rc-bottom-right

&lt;span class="c"&gt;# ---------------------------------------------------------------------------&lt;/span&gt;
&lt;span class="c"&gt;# gen_rc: genera un rcfile temporal que será cargado por bash con --rcfile.&lt;/span&gt;
&lt;span class="c"&gt;# Hace dos cosas:&lt;/span&gt;
&lt;span class="c"&gt;#   1) Sourcea ~/.bashrc para mantener el entorno habitual del usuario.&lt;/span&gt;
&lt;span class="c"&gt;#   2) Inyecta cada comando recibido como argumento en el historial mediante&lt;/span&gt;
&lt;span class="c"&gt;#      `history -s`, sin ejecutarlo. El último argumento queda más cerca del&lt;/span&gt;
&lt;span class="c"&gt;#      prompt (1 sola flecha arriba para acceder).&lt;/span&gt;
&lt;span class="c"&gt;# ---------------------------------------------------------------------------&lt;/span&gt;
gen_rc&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;rcfile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
    &lt;span class="nb"&gt;shift&lt;/span&gt;
    &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'[ -f "$HOME/.bashrc" ] &amp;amp;&amp;amp; source "$HOME/.bashrc"'&lt;/span&gt;
        &lt;span class="k"&gt;for &lt;/span&gt;cmd &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
            &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"history -s &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="nv"&gt;$cmd&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
        &lt;span class="k"&gt;done&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$rcfile&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Comandos por panel — personalizá según tu flujo.&lt;/span&gt;
&lt;span class="c"&gt;# El último argumento es el primero al que accedés con flecha arriba.&lt;/span&gt;
gen_rc &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RC_LEFT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="s2"&gt;"echo 'segundo comando'"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="s2"&gt;"echo 'primer comando (flecha arriba lo trae)'"&lt;/span&gt;

gen_rc &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RC_TOP_RIGHT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="s2"&gt;"ls -la"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="s2"&gt;"pwd"&lt;/span&gt;

gen_rc &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RC_BOTTOM_RIGHT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="s2"&gt;"date"&lt;/span&gt;

&lt;span class="c"&gt;# ---------------------------------------------------------------------------&lt;/span&gt;
&lt;span class="c"&gt;# Inyección del layout en el config de Terminator.&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Se inserta directamente en ~/.config/terminator/config en lugar de usar&lt;/span&gt;
&lt;span class="c"&gt;# un archivo separado con `-g`. ¿Por qué? Porque `-g` reemplaza la config&lt;/span&gt;
&lt;span class="c"&gt;# completa, perdiendo fuente, colores y atajos personales del usuario.&lt;/span&gt;
&lt;span class="c"&gt;# Inyectando en el config real, todo se hereda automáticamente.&lt;/span&gt;
&lt;span class="c"&gt;# ---------------------------------------------------------------------------&lt;/span&gt;

&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;dirname&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$CONFIG&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;touch&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$CONFIG&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Borrar layout previo con el mismo nombre (idempotencia: el script se puede&lt;/span&gt;
&lt;span class="c"&gt;# ejecutar múltiples veces sin acumular layouts duplicados).&lt;/span&gt;
python3 - &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$CONFIG&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;PYEOF&lt;/span&gt;&lt;span class="sh"&gt;'
import sys, re
path = sys.argv[1]
with open(path) as f:
    content = f.read()
pattern = re.compile(
    r'(^  &lt;/span&gt;&lt;span class="se"&gt;\[\[&lt;/span&gt;&lt;span class="sh"&gt;multi_pane&lt;/span&gt;&lt;span class="se"&gt;\]\]&lt;/span&gt;&lt;span class="sh"&gt;.*?)(?=^  &lt;/span&gt;&lt;span class="se"&gt;\[\[&lt;/span&gt;&lt;span class="sh"&gt;|^&lt;/span&gt;&lt;span class="se"&gt;\[&lt;/span&gt;&lt;span class="sh"&gt;|&lt;/span&gt;&lt;span class="se"&gt;\Z&lt;/span&gt;&lt;span class="sh"&gt;)',
    re.MULTILINE | re.DOTALL
)
content = pattern.sub('', content)
with open(path, 'w') as f:
    f.write(content)
&lt;/span&gt;&lt;span class="no"&gt;PYEOF

&lt;/span&gt;&lt;span class="c"&gt;# Asegurar que exista la sección [layouts]&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s1"&gt;'^\[layouts\]'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$CONFIG&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;[layouts]"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$CONFIG&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Insertar el layout nuevo justo después de [layouts].&lt;/span&gt;
&lt;span class="c"&gt;# El layout define una división horizontal (HPaned) al 50%, y el lado&lt;/span&gt;
&lt;span class="c"&gt;# derecho se divide verticalmente (VPaned) en dos paneles.&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;#   ┌─────────────┬─────────────┐&lt;/span&gt;
&lt;span class="c"&gt;#   │             │  TOP-RIGHT  │&lt;/span&gt;
&lt;span class="c"&gt;#   │    LEFT     ├─────────────┤&lt;/span&gt;
&lt;span class="c"&gt;#   │             │BOTTOM-RIGHT │&lt;/span&gt;
&lt;span class="c"&gt;#   └─────────────┴─────────────┘&lt;/span&gt;
python3 - &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$CONFIG&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$ARG&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RC_LEFT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RC_TOP_RIGHT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RC_BOTTOM_RIGHT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;PYEOF&lt;/span&gt;&lt;span class="sh"&gt;'
import sys
path, arg, rc_l, rc_tr, rc_br = sys.argv[1:]
layout = f"""  [[multi_pane]]
    [[[window0]]]
      type = Window
      parent = ""
      title = Multi-pane {arg}
    [[[child1]]]
      type = HPaned
      parent = window0
      ratio = 0.5
    [[[left]]]
      type = Terminal
      parent = child1
      order = 0
      profile = default
      title = LEFT - {arg}
      command = bash --rcfile {rc_l}
    [[[child2]]]
      type = VPaned
      parent = child1
      order = 1
      ratio = 0.5
    [[[top_right]]]
      type = Terminal
      parent = child2
      order = 0
      profile = default
      title = TOP RIGHT - {arg}
      command = bash --rcfile {rc_tr}
    [[[bottom_right]]]
      type = Terminal
      parent = child2
      order = 1
      profile = default
      title = BOTTOM RIGHT - {arg}
      command = bash --rcfile {rc_br}
"""
with open(path) as f:
    content = f.read()
content = content.replace('[layouts]&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;', '[layouts]&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;' + layout, 1)
with open(path, 'w') as f:
    f.write(content)
&lt;/span&gt;&lt;span class="no"&gt;PYEOF

&lt;/span&gt;&lt;span class="c"&gt;# Lanzar Terminator desconectado de la shell padre:&lt;/span&gt;
&lt;span class="c"&gt;#   --no-dbus    : evita que una instancia existente capture la invocación&lt;/span&gt;
&lt;span class="c"&gt;#   --maximise   : abre la ventana maximizada&lt;/span&gt;
&lt;span class="c"&gt;#   nohup + &amp;amp;    : sobrevive al cierre de la shell padre&lt;/span&gt;
&lt;span class="c"&gt;#   disown       : libera la shell para que pueda cerrarse sin advertencias&lt;/span&gt;
&lt;span class="nb"&gt;nohup &lt;/span&gt;terminator &lt;span class="nt"&gt;--no-dbus&lt;/span&gt; &lt;span class="nt"&gt;--maximise&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; multi_pane &amp;lt;/dev/null &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;
&lt;span class="nb"&gt;disown&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You invoke it as &lt;code&gt;./multi-pane.sh prod&lt;/code&gt; and the argument propagates into&lt;br&gt;
every pane title and command. The same script works for &lt;code&gt;staging&lt;/code&gt;, &lt;code&gt;dev&lt;/code&gt;, or&lt;br&gt;
any environment label you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Terminator and not tmux?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;tmux&lt;/code&gt; is more powerful, scriptable, and works over SSH. But &lt;code&gt;tmux&lt;/code&gt; has a&lt;br&gt;
learning curve, lives inside one terminal window, and isn't something most&lt;br&gt;
people want to launch from a desktop shortcut.&lt;/p&gt;

&lt;p&gt;Terminator is a GUI terminal emulator that supports persistent layouts via a&lt;br&gt;
config file. It's perfect when you want a desktop launcher that opens a&lt;br&gt;
specific multi-pane setup with one command — and you want the result to feel&lt;br&gt;
like a normal application window, not an embedded multiplexer.&lt;/p&gt;

</description>
      <category>bash</category>
      <category>linux</category>
      <category>terminator</category>
      <category>terminal</category>
    </item>
  </channel>
</rss>
