mabox-panel-selector

Estoy intentando desarrollar un selector de panel, en el cual se puede elegir entre Tint2 y Polybar … no soy experto en desarrollo de software, solo me anime a intentar crear algo para esta hermosa distro, dejare el link del repositorio del proyecto, y quien quiera ayudarme, bienvenido sea,

PD: esta es mi primer participación en el foro, espero tengan paciencia, saludos

2 Likes

Welcome, @NitroSk8, to the forum!

It’s always great to see personal projects come to life. Keep on doing that…

Testing the script: What i found so far…

  • Unable to close the Selector de Paneles window after choosing either Tint2 or Polybar.
  • Error when opening the Polybar Configuration window.

Comments about installation (GITHUB README).

To install mabox-panel-selector directly after building PKBUILD, use the following command:

makepkg -fi

Or…
Alternatively, add the following line to complete process:

sudo pacman -U mabox-panel-selector-0.1.0-1-any.pkg.tar.zst

Comments: I got inspired.

I’m considering using Polybar alongside Tint2.
Since I’m not very familiar with Python, I decided to experiment with your idea using a Bash TUI instead.

  • Tint2 uses session-file path.
  • Polybar uses [bar/main].
#!/bin/bash
# Start Stop Tint2 and Polybar for Mabox Linux.

# Clear terminal
clear

# Configuration file for Openbox autostart
autostart_file="$HOME/.config/openbox/autostart"

# Tint2 Mabox sessionfile
tint2rc=$(cat "$HOME/.config/tint2/tint2-sessionfile")
polybarini="$HOME/.config/polybar/config"

# Check ~/.config/polybar/config.ini [bar/mybar] for the right value. 
INI="main"

edittint2() {
    nano "$tint2rc"
    clear
}

editpolybar() {
    nano "$polybarini"
    clear
}

editautostart() {
    nano ~/.config/openbox/autostart
    clear
}

# Function to check if a program is installed
is_installed() {
    command -v "$1" >/dev/null 2>&1
}

# Function to update Openbox autostart file
enable_autostart() {
    grep -q "$1" "$autostart_file" || sed -i "1i $1 &" "$autostart_file"
}

disable_autostart() {
    sed -i "/$1/d" "$autostart_file"
}

# Function to start Tint2 panel in background
start_tint2_panel() {
    if is_installed tint2; then
        echo "Starting Tint2 panel..."
        pkill -f "tint2"
        nohup tint2 -c $tint2rc >/dev/null 2>&1 & disown
        enable_autostart "tint2 -c $tint2rc"
        clear
    else
        echo "Tint2 is not installed."
    fi
}

# Function to start Polybar panel in background
start_polybar_panel() {
    if is_installed polybar; then
        echo "Starting Polybar panel..."
        pkill -f "polybar"
        nohup polybar $INI >/dev/null 2>&1 & disown
        enable_autostart "polybar $INI"
        clear
    else
        echo "Polybar is not installed."
    fi
}

# Function to start both panels
start_both_panels() {
    start_tint2_panel
    start_polybar_panel
    enable_autostart "tint2 -c $tint2rc"
    enable_autostart "polybar $INI"
    clear
}

# Function to stop Tint2 panel if it's running
stop_tint2_panel() {
    echo "Stopping Tint2 panel..."
    pkill -f "tint2" && echo "Tint2 stopped." || echo "Tint2 was not running."
    disable_autostart "tint2"
    clear
}

# Function to stop Polybar panel if it's running
stop_polybar_panel() {
    echo "Stopping Polybar panel..."
    pkill -f "polybar" && echo "Polybar stopped." || echo "Polybar was not running."
    disable_autostart "polybar"
    clear
}

# Function to stop both panels
stop_both_panels() {
    stop_tint2_panel
    stop_polybar_panel
    disable_autostart "tint2"
    disable_autostart "polybar"
    clear
}

tint2-manager() {
    mb-tint2-manager 
    clear
}

GREEN='\033[0;32m'
ORANGE='\033[38;5;214m'  # Orange (256 color code)
RED='\033[0;31m'
BLUE='\033[0;36m'
YELLOW='\033[0;33m'
NC='\033[0m'  # No Color (reset)

case $LANG in
    es*)
        MENU="Menú:"
        START2="0. Iniciar Tint2"
        STARTP="1. Iniciar Polybar"
        STARTDUAL="2. Iniciar Ambos Paneles"
        STOPT2="3. Detener Tint2"
        STOPP="4. Detener Polybar"
        STOPBOTH="5. Detener Ambos Paneles"
        EDITNT2="6. Editar Tint2rc"
        EDITPBAR="7. Editar Polybar [main]"
        EDITAUTO="8. Editar autostart"
        SELECTNT2="9. Mabox Tint2 Manager"
        EXIT="e. Salir"
        ;;
    pl*)
        MENU="Menu:"
        START2="0. Uruchom Tint2"
        STARTP="1. Uruchom Polybar"
        STARTDUAL="2. Uruchom Oba Panele"
        STOPT2="3. Zatrzymaj Tint2"
        STOPP="4. Zatrzymaj Polybar"
        STOPBOTH="5. Zatrzymaj Oba Panele"
        EDITNT2="6. Edytuj Tint2rc"
        EDITPBAR="7. Edytuj Polybar [main]"
        EDITAUTO="8. Edytuj autostart"
        SELECTNT2="9. Mabox Tint2 Manager"
        EXIT="e. Wyjście"
        ;;
    *)
        MENU="Menu:"
        
        START2="0. Start Tint2"
        STARTP="1. Start Polybar"
        STARTDUAL="2. Start Both Panels"
        STOPT2="3. Stop Tint2"
        STOPP="4. Stop Polybar"
        STOPBOTH="5. Stop Both Panels"
        EDITNT2="6. Edit Tint2rc"
        EDITPBAR="7. Edit Polybar [main]"
        EDITAUTO="8. Edit autostart"
        SELECTNT2="9. Mabox Tint2 Manager"
        EXIT="e. Exit"
        ;;
esac

# Main menu loop
while true; do
    echo -e ""
    echo -e "${ORANGE}$START2${NC}"
    echo -e "${ORANGE}$STARTP${NC}"
    echo -e "${ORANGE}$STARTDUAL${NC}"
    echo -e "${GREEN}$STOPT2${NC}"
    echo -e "${GREEN}$STOPP${NC}"
    echo -e "${GREEN}$STOPBOTH${NC}"
    echo -e "${BLUE}$EDITNT2${NC}"
    echo -e "${BLUE}$EDITPBAR${NC}"
    echo -e "${BLUE}$EDITAUTO${NC}"
    echo -e "${YELLOW}$SELECTNT2${NC}"
    echo -e "${RED}$EXIT${NC}"

    read -rp "Choose an option: " chosen
    
    case $chosen in
        0) start_tint2_panel ;;
        1) start_polybar_panel ;;
        2) start_both_panels ;;
        3) stop_tint2_panel ;;
        4) stop_polybar_panel ;;
        5) stop_both_panels ;;
        6) edittint2 ;;
        7) editpolybar ;;
        8) editautostart ;;
        9) tint2-manager ;;
        E|e) echo "Exiting program..."; break ;;
        *) echo "Invalid option. Please try again." ; clear ;;
    esac
    echo
    # Cleanup old process files if any errors occurred
    for cmd in start_tint2_panel start_polybar_panel edit_tint2_config edit_polybar_config; do
        if [[ $? -ne 0 ]]; then
            (cd "$ tinteractDir"; pkill -f "${cmd}" >> "/dev/null") || true
        fi
    done

done


edit: add mb-tint2-manager

:bird: