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,
Contribute to elcaminodigitalOK/mabox-panel-selector development by creating an account on GitHub.
PD: esta es mi primer participación en el foro, espero tengan paciencia, saludos
2 Likes
muzqs
March 15, 2025, 2:23pm
2
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