mabox-pipemenus/usr/bin/jgmenusettings-pipe

428 lines
18 KiB
Bash
Executable File

#!/bin/bash
. $HOME/.config/mabox/mabox.conf
case $LANG in
pl*)
TITLE="Ustawienia Menu i Paneli"
MENU_ITEMS="Konfiguruj Elementy Menu"
OWN_COMMANDS="własne komendy"
FAVORITES="Ulubione"
MAINMENU="Menu główne"
APPS="Programy"
APPS_POS="Pokaż programy w..."
APPS_MAIN="...menu głównym"
APPS_SUB="...submenu"
LEFTPANEL="Lewy panel"
RIGHTPANEL="Prawy panel"
EXITMENU="Dialog wylogowania"
JGBROWSER="Przeglądarka plików/katalogów"
SHOW_HIDDEN="Wyświetlanie ukrytych plików"
EDIT="Edytuj"
FULLHEIGHT="Pełna wysokość"
TOP="Góra"
CENTER="Na środku"
BOTTOM="Dół"
MODULES="Moduły"
RESET="Przywróć domyślne ustawienia"
QUICK_NAV="Szybka nawigacja"
BOOKMARKS="Zakładki GTK"
VBOXES="Maszyny Wirtualne"
PIPEMENUS="Dynamiczne <i>(pipe)</i> menu"
DESKMNGR="Desktop Session Manager"
DESKTOPS="Pulpity i okna"
DESKGRID="DeskGrid"
POPINSTALL="Instaluj popularne programy"
SYSINFO="Informacje o systemie"
SHORTCUTS="Skróty klawiszowe"
MENUPANELS="Ustawienia Menu/Paneli bocznych"
WALLCHANGER="Tapeta i Blokada Ekranu"
TINT2="Ustawienia panelu Tint2"
CONKY="Ustawienia Conky"
SSH_CONN="Połączenia SSH"
LOOKANDFEEL="Wygląd"
BORDER="Obramowanie"
PADDING="Margines wewnętrzny"
RADIUS="Zaokrąglone rogi"
SIDEPANELS_HPOS="Panele boczne pozycja/wysokość"
TOPMARGIN="Margines Paneli Góra/Dół"
SUBSPACING="Odstęp submenu"
ICONS="Ikony"
CIRCLE="Okrągłe ikony (Numix)"
SQUARE="Kwadratowe ikony (Numix)"
SHOW_ICONS="Pokaż ikony"
HIDE_ICONS="Ukryj ikony"
INSTALL="Instaluj"
SIZE="Rozmiar i czcionka"
FONT_FAMILY="Czcionka"
FONT_SIZE="Rozmiar czcionki"
COLOR_SCHEME="Schemat kolorystyczny"
GRADIENT="Kierunek Gradientu"
EDIT_CURRENT="Edytuj aktywny"
FOLLOW_OB="Zgodny z motywem OpenBox"
CHOOSE="Wybierz..."
RANDTHEME="Losowy"
REMOVE="Usuń to menu z panelu"
;;
es*)
TITLE="Menu/Panel lateral"
MENU_ITEMS="Menu Items"
OWN_COMMANDS="Custom Commands"
FAVORITES="Favoritos"
MAINMENU="Main Menu"
APPS="Applicationes"
APPS_POS="Show Applications in..."
APPS_MAIN="...mainmenu"
APPS_SUB="...submenu"
LEFTPANEL="Left panel"
RIGHTPANEL="Right panel"
EXITMENU="Logout Dialog"
JGBROWSER="File/Directory Browser"
SHOW_HIDDEN="Show hidden files"
EDIT="Editar"
FULLHEIGHT="Full Height"
TOP="TOP"
CENTER="Center"
BOTTOM="BOTTOM"
MODULES="Modules"
RESET="Reset to default"
QUICK_NAV="Navegación rápida"
BOOKMARKS="GTK Marcadores"
VBOXES="Virtual Machines"
PIPEMENUS="Menu con extras"
DESKMNGR="Desktop Session Manager"
DESKTOPS="Desktops and Windows"
DESKGRID="Desktop Grid"
POPINSTALL="Instalar Programas populares"
SYSINFO="System information"
SHORTCUTS="Atajos del teclado"
MENUPANELS="Menu/Paneles laterales"
WALLCHANGER="Wallpaper and ScreenLocker"
TINT2="Tint2 panel settings"
CONKY="Conky settings"
SSH_CONN="SSH Connections"
LOOKANDFEEL="Apariencia"
BORDER="Menu Border"
PADDING="Padding"
RADIUS="Rounded Corners"
SIDEPANELS_HPOS="Panels Height/Position"
TOPMARGIN="Panels Top/Bottom Margin"
SUBSPACING="Submenu Spacing"
ICONS="Iconos"
CIRCLE="Circilo iconos (Numix)"
SQUARE="Cuadrado iconos (Numix)"
SHOW_ICONS="Mostrar iconos"
HIDE_ICONS="Ocultar iconos"
INSTALL="Instalar"
SIZE="Tamaño de Menu/Panel lateral"
FONT_FAMILY="Familia tipográfica"
FONT_SIZE="Tamaño de fuente"
COLOR_SCHEME="Esquema de colores"
GRADIENT="Gradient"
EDIT_CURRENT="Editar el actual"
FOLLOW_OB="Similiar al de Openbox"
CHOOSE="Elegir..."
RANDTHEME="Random"
REMOVE="Eliminar este menú del panel"
;;
*)
TITLE="Menu/Panels settings"
MENU_ITEMS="Configure Menu Items"
OWN_COMMANDS="Custom Commands"
FAVORITES="Favorites"
MAINMENU="Main Menu"
APPS="Applications"
APPS_POS="Show Applications in..."
APPS_MAIN="...mainmenu"
APPS_SUB="...submenu"
LEFTPANEL="Left Panel "
RIGHTPANEL="Right Panel"
EXITMENU="Logout Dialog"
JGBROWSER="File/Directory Browser"
SHOW_HIDDEN="Show hidden files"
EDIT="Edit"
FULLHEIGHT="Full Height"
TOP="Top"
CENTER="Center"
BOTTOM="Bottom"
MODULES="Modules"
RESET="Reset to default"
QUICK_NAV="Quick Navigation"
BOOKMARKS="GTK Bookmarks"
VBOXES="Virtual Machines"
PIPEMENUS="Pipe (dynamic) menus"
DESKMNGR="Desktop Session Manager"
DESKTOPS="Desktops and Windows"
DESKGRID="Desktop Grid"
POPINSTALL="Install popular apps"
SYSINFO="System information"
SHORTCUTS="Keyboard shortcuts"
MENUPANELS="Menu/Sidepanels settings"
WALLCHANGER="Wallpaper and ScreenLocker"
TINT2="Tint2 panel settings"
CONKY="Conky settings"
SSH_CONN="SSH Connections"
LOOKANDFEEL="Look and Feel"
BORDER="Menu Border"
PADDING="Padding"
RADIUS="Rounded Corners"
SIDEPANELS_HPOS="Panels Height/Position"
TOPMARGIN="Panels Top/Bottom Margin"
SUBSPACING="Submenu Spacing"
ICONS="Icons"
CIRCLE="Circle icons (Numix)"
SQUARE="Square icons (Numix)"
SHOW_ICONS="Show icons"
HIDE_ICONS="Hide icons"
INSTALL="Install"
SIZE="Menu/Sidepanels Size and Font"
FONT_FAMILY="Font Family"
FONT_SIZE="Font Size"
COLOR_SCHEME="Color Scheme"
GRADIENT="Gradient direction"
EDIT_CURRENT="Edit current"
FOLLOW_OB="Same as OpenBox theme"
CHOOSE="Choose..."
RANDTHEME="Random"
REMOVE="Remove this menu from panel"
;;
esac
#me="mb-jgtools $jgtools_last"
me="jgmenusettings-pipe -s"
L="mb-jgtools places"
R="mb-jgtools right"
out+=("^sep($MENU_ITEMS)")
out+=("$MAINMENU,^checkout(mainmenu_edit)")
out+=("$LEFTPANEL,^checkout(left_edit)")
out+=("$RIGHTPANEL,^checkout(right_edit)")
out+=("$EXITMENU,^checkout(exit_edit)")
out+=("^sep($JGBROWSER)")
[[ $jgbrowser_show_hidden = false ]] && out+=("<i><s>$SHOW_HIDDEN</s></i>,mb-setvar jgbrowser_show_hidden=true;$me") || out+=("$SHOW_HIDDEN,mb-setvar jgbrowser_show_hidden=false;$me")
out2+=("^tag(mainmenu_edit)")
out2+=("^sep($MAINMENU)")
out2+=("$EDIT $FAVORITES, geany $HOME/.config/mabox/favorites.csv, geany")
out2+=("^sep($APPS_POS)")
out2+=("$APPS_MAIN,mb-setvar apps_in_submenu=false;mb-jgtools main ipc")
out2+=("$APPS_SUB,mb-setvar apps_in_submenu=true;mb-jgtools main ipc")
out2+=("^sep(Reset)")
out2+=("$RESET,mb-reset mainmenu")
out2+=("^tag(left_edit)")
out2+=("^sep($LEFTPANEL)")
out2+=("$EDIT $OWN_COMMANDS ($TOP), geany $HOME/.config/mabox/places-prepend.csv, geany")
#out2+=("^sep()")
out2+=("^sep($MODULES)")
[[ $places_quicknav == false ]] && out2+=("<i><s>$QUICK_NAV</s></i>,mb-setvar places_quicknav=true;$L") || out2+=("$QUICK_NAV,mb-setvar places_quicknav=false;$L")
[[ $places_bookmarks == false ]] && out2+=("<i><s>$BOOKMARKS</s></i>,mb-setvar places_bookmarks=true;$L") || out2+=("$BOOKMARKS,mb-setvar places_bookmarks=false;$L")
[[ $places_vboxes == false ]] && out2+=("<i><s>$VBOXES</s></i>,mb-setvar places_vboxes=true;$L") || out2+=("$VBOXES,mb-setvar places_vboxes=false;$L")
out2+=("^sep($PIPEMENUS)")
[[ $places_menusettingspipe = false ]] && out2+=("<i><s>$MENUPANELS</s></i>,mb-setvar places_menusettingspipe=true;$L") || out2+=("$MENUPANELS,mb-setvar places_menusettingspipe=false;$L")
[[ $places_jgwallpaperchanger = false ]] && out2+=("<i><s>$WALLCHANGER</s></i>,mb-setvar places_jgwallpaperchanger=true;$L") || out2+=("$WALLCHANGER,mb-setvar places_jgwallpaperchanger=false;$L")
[[ $places_jgdesktops = false ]] && out2+=("<i><s>$DESKTOPS</s></i>,mb-setvar places_jgdesktops=true;$L") || out2+=("$DESKTOPS,mb-setvar places_jgdesktops=false;$L")
[[ $places_jgdeskmngr = false ]] && out2+=("<i><s>$DESKMNGR</s></i>,mb-setvar places_jgdeskmngr=true;$L") || out2+=("$DESKMNGR,mb-setvar places_jgdeskmngr=false;$L")
[[ $places_jgdeskgrid = false ]] && out2+=("<i><s>$DESKGRID</s></i>,mb-setvar places_jgdeskgrid=true;$L") || out2+=("$DESKGRID,mb-setvar places_jgdeskgrid=false;$L")
[[ $places_sysinfopipe = false ]] && out2+=("<i><s>$SYSINFO</s></i>,mb-setvar places_sysinfopipe=true;$L") || out2+=("$SYSINFO,mb-setvar places_sysinfopipe=false;$L")
[[ $places_keyspipe = false ]] && out2+=("<i><s>$SHORTCUTS</s></i>,mb-setvar places_keyspipe=true;$L") || out2+=("$SHORTCUTS,mb-setvar places_keyspipe=false;$L")
[[ $places_sshpipe = false ]] && out2+=("<i><s>$SSH_CONN</s></i>,mb-setvar places_sshpipe=true;$L") || out2+=("$SSH_CONN,mb-setvar places_sshpipe=false;$L")
[[ $places_softwarepipe = false ]] && out2+=("<i><s>$POPINSTALL</s></i>,mb-setvar places_softwarepipe=true;$L") || out2+=("$POPINSTALL,mb-setvar places_softwarepipe=false;$L")
[[ $places_tint2pipe = false ]] && out2+=("<i><s>$TINT2</s></i>,mb-setvar places_tint2pipe=true;$L") || out2+=("$TINT2,mb-setvar places_tint2pipe=false;$L")
[[ $places_conkypipe = false ]] && out2+=("<i><s>$CONKY</s></i>,mb-setvar places_conkypipe=true;$L") || out2+=("$CONKY,mb-setvar places_conkypipe=false;$L")
out2+=("^sep()")
out2+=("$EDIT $OWN_COMMANDS ($BOTTOM), geany $HOME/.config/mabox/places-append.csv, geany")
out2+=("^sep(Reset)")
out2+=("$RESET,mb-reset leftpanel")
out2+=("^tag(right_edit)")
out2+=("^sep($RIGHTPANEL)")
out2+=("$EDIT $OWN_COMMANDS ($TOP), geany $HOME/.config/mabox/right-prepend.csv, geany")
out2+=("$EDIT $OWN_COMMANDS ($BOTTOM), geany $HOME/.config/mabox/right-append.csv, geany")
out2+=("^sep(Reset)")
out2+=("$RESET,mb-reset rightpanel")
out2+=("^tag(exit_edit)")
out2+=("^sep($EXITMENU)")
out2+=("$EDIT $EXITMENU, geany $HOME/.config/mabox/exit.csv, geany")
out2+=("^sep(Reset)")
out2+=("$RESET,mb-reset logout")
##
out+=("^sep($LOOKANDFEEL)")
out+=("$BORDER [ <b>${jgtools_border:-0}</b> ],^checkout(mborder)")
out+=("$PADDING [ <b>${jgtools_padding:-0}</b> ],^checkout(mpadding)")
out+=("$RADIUS [ <b>${jgtools_radius:-0}</b> ],^checkout(mradius)")
out+=("$SUBSPACING [ <b>${submenu_spacing:-0}</b> ],^checkout(subspacing)")
out+=("^sep()")
out+=("$SIDEPANELS_HPOS [ <b>${panels_heightpos:-center}</b> ],^checkout(sidepanelpos)")
out2+=("^tag(mborder)")
#for i in 0 1 2 3 4; do out2+=("${i},mb-setvar jgtools_border=${i};$me");done
for i in 0 1 2 3 4 5 6 8 10 12; do out2+=("$(printf "<tt>%3s</tt>,%s" "$i" "mb-setvar jgtools_border=${i};$me")");done
out2+=("^tag(mpadding)")
#for i in 0 1 2 3 4; do out2+=("${i},mb-setvar jgtools_border=${i};$me");done
for i in 0 2 4 6 8 10 12 14 16 18 20 22 24 28 32 40; do out2+=("$(printf "<tt>%3s</tt>,%s" "$i" "mb-setvar jgtools_padding=${i};$me")");done
out2+=("^tag(mradius)")
for i in 0 1 2 3 4 6 8 12 14 16 18 20 40; do out2+=("$(printf "<tt>%3s</tt>,%s" "$i" "mb-setvar jgtools_radius=${i};$me")");done
out2+=("^tag(topmargin)")
for i in 0 20 30 40 50 60 80 100 120 160 200; do out2+=("$(printf "<tt>%4s</tt>,%s" "$i" "mb-setvar panels_topmargin=${i};$me")");done
#for i in 0 20 30 40 50 60 80 100; do out2+=("${i},mb-setvar panels_topmargin=${i};$me");done
out2+=("^tag(subspacing)")
for i in -20 -8 -6 -4 -2 0 1 2 4 6 8 10 12 14 16 18 20; do out2+=("$(printf "<tt>%4s</tt>,%s" "$i" "mb-setvar submenu_spacing=${i};$me")");done
#for i in -8 -6 -4 -2 0 1 2 3 4 5 6; do out2+=("${i},mb-setvar submenu_spacing=${i};$me");done
out2+=("^tag(sidepanelpos)")
out2+=("^sep($SIDEPANELS_HPOS)")
out2+=("$FULLHEIGHT,mb-setvar panels_heightpos=full;$me")
out2+=("^sep()")
out2+=("$TOP,mb-setvar panels_heightpos=top;$me")
out2+=("$CENTER,mb-setvar panels_heightpos=center;$me")
out2+=("$BOTTOM,mb-setvar panels_heightpos=bottom;$me")
out2+=("^sep()")
out2+=("$TOPMARGIN [ <b>${panels_topmargin:-0}</b> ],^checkout(topmargin)")
out2+=("^tag(fontsize)")
for i in 7 8 9 10 11 12 14 16 18 20; do out2+=("$(printf "<tt>%4s</tt>,%s" "$i" "mb-setvar menu_font_size=${i};mb-setvar jgmenu_item_height=$((i*2));mb-setvar jgmenu_icon_size=$((i*2-2));$me")");done
out+=("^sep(<i>$SIZE</i>)")
out+=("$FONT_SIZE [ <b>${menu_font_size:-0}</b> ],^checkout(fontsize)")
out+=("$FONT_FAMILY[ <b>${menu_font_family:-0}</b> ],^checkout(fonty)")
case $menu_font_family in
"Noto Sans Light") nol="";;
"Noto Sans Medium") nom="";;
Jet*) je="";;
Aut*) au="";;
Deja*) de="";;
Robo*) ro="";;
Inco*) in="";;
*);;
esac
out2+=("^tag(fonty)")
out2+=("^sep($FONT_FAMILY)")
out2+=("<span size=\"x-large\" font_family=\"Noto Sans Light\">$nol Noto Sans Light</span>,mb-setvar \"menu_font_family='Noto Sans Light'\";$me")
out2+=("<span size=\"x-large\" font_family=\"Noto Sans Medium\">$nom Noto Sans Medium</span>,mb-setvar \"menu_font_family='Noto Sans Medium'\";$me")
out2+=("<span size=\"x-large\" font_family=\"JetBrains Mono Regular\">$je JetBrains Mono Regular</span>,mb-setvar \"menu_font_family='JetBrains Mono Regular'\";$me")
out2+=("<span size=\"x-large\" font_family=\"Autour One\">$au Autour One</span>,mb-setvar \"menu_font_family='Autour One'\";$me")
out2+=("<span size=\"x-large\" font_family=\"DejaVu Serif\">$de DejaVu Serif</span>,mb-setvar \"menu_font_family='DejaVu Serif'\";$me")
out2+=("<span size=\"x-large\" font_family=\"Roboto Light\">$ro Roboto Light</span>,mb-setvar \"menu_font_family='Roboto Light'\";$me")
out2+=("<span size=\"x-large\" font_family=\"Inconsolata\">$in Inconsolata</span>,mb-setvar menu_font_family=Inconsolata;$me")
########## THEMES
out+=("^sep(<i>$COLOR_SCHEME</i>)")
ob_file=$HOME/.config/openbox/rc.xml
[[ -f $ob_file ]] && wm_theme=$(awk '/<theme>/ {while (getline n) {if (match(n, /<name>/)){l=n; exit}}} END {split(l, a, "[<>]"); print a[3]}' "$ob_file")
if [ $jgmenu_theme != obtheme ]; then #INNY NIŻ OB THEME
. $HOME/.config/mabox/jgobthemes/${jgmenu_theme}.colorrc > /dev/null 2>&1 &
out+=("$CHOOSE [<b>$jgmenu_theme</b>],^checkout(motywy)")
out+=("$EDIT_CURRENT: (<b>$jgmenu_theme</b>),geany $HOME/.config/mabox/jgobthemes/$jgmenu_theme.colorrc,geany")
out+=("$RANDTHEME,mb-setvar jgmenu_theme=$(basename -s .colorrc $(ls ~/.config/mabox/jgobthemes/*.colorrc | shuf -n 1));$me")
out+=("<s>$FOLLOW_OB</s>,mb-setvar jgmenu_theme=obtheme;$me
^sep()")
out+=("$GRADIENT [ <b>${menu_gradient_pos:-none}</b> ],^checkout(gradient)")
out2+=("^tag(gradient)")
for i in none top right bottom left top_left top_right bottom_left bottom_right; do out2+=("$(printf "<tt>%14s</tt>,%s" "$i" "mb-setvar menu_gradient_pos=${i} $HOME/.config/mabox/jgobthemes/$jgmenu_theme.colorrc;$me")");done
out2+=("^tag(motywy)")
else
. $HOME/.config/mabox/jgobthemes/${wm_theme// /_}.colorrc > /dev/null 2>&1 &
#out+=("#${menu_gradient_pos}\n")
out+=("$CHOOSE [<b>${wm_theme// /_}</b>],^checkout(motywy)")
out+=("$EDIT_CURRENT: (<b>${wm_theme// /_}</b>),geany $HOME/.config/mabox/jgobthemes/${wm_theme// /_}.colorrc,geany")
out+=("$RANDOM,mb-setvar jgmenu_theme=$(basename -s .colorrc $(ls ~/.config/mabox/jgobthemes/*.colorrc | shuf -n 1));$me")
out+=("$FOLLOW_OB,mb-setvar jgmenu_theme=obtheme;$me
^sep()")
out+=("$GRADIENT [ <b>${menu_gradient_pos:-none}</b> ],^checkout(gradient)")
out2+=("^tag(gradient)")
for i in none top right bottom left top_left top_right bottom_left bottom_right; do out2+=("$(printf "<tt>%14s</tt>,%s" "$i" "mb-setvar menu_gradient_pos=${i} $HOME/.config/mabox/jgobthemes/${wm_theme// /_}.colorrc;$me")");done
out2+=("^tag(motywy)")
fi
for item in "$HOME"/.config/mabox/jgobthemes/*colorrc; do
theme="${item##*/}"
out2+=("${theme%.*},mb-setvar jgmenu_theme=${theme%.*};$me")
done
########## ICONS
out+=("^sep(<i>$ICONS</i>)")
if [ $jgmenu_use_icons == true ]; then
out+=("$HIDE_ICONS [ <b>${jgmenu_icon_theme}</b> ],mb-setvar jgmenu_use_icons=false;$me")
else
out+=("$SHOW_ICONS [ <b>${jgmenu_icon_theme}</b> ],mb-setvar jgmenu_use_icons=true;$me")
fi
out+=("^sep()")
out+=("$SQUARE,mb-setvar jgmenu_icon_theme=Numix-Square;mb-setvar jgmenu_use_icons=true;$me")
out+=("$CIRCLE,mb-setvar jgmenu_icon_theme=Numix-Circle;mb-setvar jgmenu_use_icons=true;$me")
if [ -d /usr/share/icons/BeautyLine ];then
out+=("BeautyLine,mb-setvar jgmenu_icon_theme=BeautyLine;mb-setvar jgmenu_use_icons=true;$me")
else
out+=("$INSTALL BeautyLine icons, pamac-installer beautyline")
fi
if [ -d /usr/share/icons/Sardi-Arc ];then
out+=("^sep()")
out+=("Sardi,^checkout(sardi)")
out2+=("^tag(sardi)")
out2+=("Sardi,mb-setvar jgmenu_icon_theme=Sardi;mb-setvar jgmenu_use_icons=true;$me")
out2+=("Sardi-Orb-Colora,mb-setvar jgmenu_icon_theme=Sardi-Orb-Colora;mb-setvar jgmenu_use_icons=true;$me")
out2+=("Sardi-Flat,mb-setvar jgmenu_icon_theme=Sardi-Flat;mb-setvar jgmenu_use_icons=true;$me")
out2+=("Sardi-Flexible,mb-setvar jgmenu_icon_theme=Sardi-Flexible;mb-setvar jgmenu_use_icons=true;$me")
out2+=("Sardi-Mono,mb-setvar jgmenu_icon_theme=Sardi-Mono;mb-setvar jgmenu_use_icons=true;$me")
else
out+=("^sep()")
out+=("$INSTALL Sardi icons, pamac-installer sardi-icons")
fi
### RUN
if [[ $1 == "-s" ]]; then
. /usr/bin/pipemenu-standalone.cfg
MENU_PADDING_TOP=0
MENU_HALIGN="left"
MENU_VALIGN="center"
jgmenu_icon_size=0
JGWIDTH=40
menu_margin_x=${submenu_spacing:-0}
[ $(pidof picom) ] && MENU_RADIUS=$jgtools_radius
mkconfigfile
cat <<EOF > ${MENU_ITEMS}
$(printf '%s\n' "${out[@]}")
$(printf '%s\n' "${out2[@]}")
$(printf '%s\n' "${out3[@]}")
EOF
jgmenu --config-file=${CONFIG_FILE} --csv-file=${MENU_ITEMS} 2>/dev/null
exit 0
fi
printf '%s\n' "${out[@]}"
if [ $1 == "-r" ]; then
printf '%s\n' "^sep()"
printf '%s\n' "<i>$REMOVE</i>,mb-setvar places_menusettingspipe=false;mb-jgtools places"
fi
printf '%s\n' "${out2[@]}"
printf '%s\n' "${out3[@]}"