diff --git a/.config/polybar/bar.ini b/.config/polybar/bar.ini index 2b8c2ea..7e6c7df 100644 --- a/.config/polybar/bar.ini +++ b/.config/polybar/bar.ini @@ -66,7 +66,7 @@ font-2 = "Material Icons:size=16;1" font-3 = NotoSans-Regular:size=18:weight=bold;2 font-4 = NotoSans-Regular:size=18:weight=bold;-7 -modules-left = taskbar1 taskbar2 taskbar3 taskbar4 taskbar5 taskbar6 taskbar7 taskbar8 taskbar9 taskbar10 spotify +modules-left = taskslabel taskbar1 taskbar2 taskbar3 taskbar4 taskbar5 taskbar6 taskbar7 taskbar8 taskbar9 taskbar10 spotify modules-center = custom_date modules-right = updates cpu_bar memory_bar vpn network_usage alsa_bar diff --git a/.config/polybar/modules.ini b/.config/polybar/modules.ini index 7701e95..f1bbd1d 100644 --- a/.config/polybar/modules.ini +++ b/.config/polybar/modules.ini @@ -18,7 +18,6 @@ label-song-maxlen = 30 label-song-ellipsis = true [module/cpu_bar] - type = custom/script exec = ~/.config/polybar/scripts/cpu_usage.py format-prefix = "%{A1:$TERMINAL_CMD 'top -o %CPU' &:}CPU %{A-}" @@ -154,44 +153,88 @@ tail = true interval = 5 click-left = $TERMINAL_CMD "yay -Suy" & +[module/taskslabel] +type = custom/text +content = "%{T4}Tasks:%{T-}" +click-left = rofi -modi window -show window -theme orange -show-icons -location 1 -yoffset +45 -xoffset +20 [module/taskbar1] type = custom/ipc -hook-0 = ~/.config/polybar/scripts/task_manager --window 1 -hook-1 = echo "" +hook-0 = echo "" +hook-1 = ~/.config/polybar/scripts/task_manager --set-task 1 +hook-2 = ~/.config/polybar/scripts/task_manager --show-window 1 +hook-3 = ~/.config/polybar/scripts/task_manager --close-window 1 +click-left = polybar-msg -p %pid% hook taskbar1 3 +click-middle = polybar-msg -p %pid% hook taskbar1 4 [module/taskbar2] type = custom/ipc -hook-0 = ~/.config/polybar/scripts/task_manager --window 2 -hook-1 = echo "" +hook-0 = echo "" +hook-1 = ~/.config/polybar/scripts/task_manager --set-task 2 +hook-2 = ~/.config/polybar/scripts/task_manager --show-window 2 +hook-3 = ~/.config/polybar/scripts/task_manager --close-window 2 +click-left = polybar-msg -p %pid% hook taskbar2 3 +click-middle = polybar-msg -p %pid% hook taskbar2 4 [module/taskbar3] type = custom/ipc -hook-0 = ~/.config/polybar/scripts/task_manager --window 3 -hook-1 = echo "" +hook-0 = echo "" +hook-1 = ~/.config/polybar/scripts/task_manager --set-task 3 +hook-2 = ~/.config/polybar/scripts/task_manager --show-window 3 +hook-3 = ~/.config/polybar/scripts/task_manager --close-window 3 +click-left = polybar-msg -p %pid% hook taskbar3 3 +click-middle = polybar-msg -p %pid% hook taskbar3 4 [module/taskbar4] type = custom/ipc -hook-0 = ~/.config/polybar/scripts/task_manager --window 4 -hook-1 = echo "" +hook-0 = echo "" +hook-1 = ~/.config/polybar/scripts/task_manager --set-task 4 +hook-2 = ~/.config/polybar/scripts/task_manager --show-window 4 +hook-3 = ~/.config/polybar/scripts/task_manager --close-window 4 +click-left = polybar-msg -p %pid% hook taskbar4 3 +click-middle = polybar-msg -p %pid% hook taskbar4 4 [module/taskbar5] type = custom/ipc -hook-0 = ~/.config/polybar/scripts/task_manager --window 5 -hook-1 = echo "" +hook-0 = echo "" +hook-1 = ~/.config/polybar/scripts/task_manager --set-task 5 +hook-2 = ~/.config/polybar/scripts/task_manager --show-window 5 +hook-3 = ~/.config/polybar/scripts/task_manager --close-window 5 +click-left = polybar-msg -p %pid% hook taskbar5 3 +click-middle = polybar-msg -p %pid% hook taskbar5 4 [module/taskbar6] type = custom/ipc -hook-0 = ~/.config/polybar/scripts/task_manager --window 6 -hook-1 = echo "" +hook-0 = echo "" +hook-1 = ~/.config/polybar/scripts/task_manager --set-task 6 +hook-2 = ~/.config/polybar/scripts/task_manager --show-window 6 +hook-3 = ~/.config/polybar/scripts/task_manager --close-window 6 +click-left = polybar-msg -p %pid% hook taskbar6 3 +click-middle = polybar-msg -p %pid% hook taskbar6 4 [module/taskbar7] type = custom/ipc -hook-0 = ~/.config/polybar/scripts/task_manager --window 7 -hook-1 = echo "" +hook-0 = echo "" +hook-1 = ~/.config/polybar/scripts/task_manager --set-task 7 +hook-2 = ~/.config/polybar/scripts/task_manager --show-window 7 +hook-3 = ~/.config/polybar/scripts/task_manager --close-window 7 +click-left = polybar-msg -p %pid% hook taskbar7 3 +click-middle = polybar-msg -p %pid% hook taskbar7 4 [module/taskbar8] type = custom/ipc -hook-0 = ~/.config/polybar/scripts/task_manager --window 8 -hook-1 = echo "" +hook-0 = echo "" +hook-1 = ~/.config/polybar/scripts/task_manager --set-task 8 +hook-2 = ~/.config/polybar/scripts/task_manager --show-window 8 +hook-3 = ~/.config/polybar/scripts/task_manager --close-window 8 +click-left = polybar-msg -p %pid% hook taskbar8 3 +click-middle = polybar-msg -p %pid% hook taskbar8 4 [module/taskbar9] type = custom/ipc -hook-0 = ~/.config/polybar/scripts/task_manager --window 9 -hook-1 = echo "" +hook-0 = echo "" +hook-1 = ~/.config/polybar/scripts/task_manager --set-task 9 +hook-2 = ~/.config/polybar/scripts/task_manager --show-window 9 +hook-3 = ~/.config/polybar/scripts/task_manager --close-window 9 +click-left = polybar-msg -p %pid% hook taskbar9 3 +click-middle = polybar-msg -p %pid% hook taskbar9 4 [module/taskbar10] type = custom/ipc -hook-0 = ~/.config/polybar/scripts/task_manager --window 10 -hook-1 = echo "" +hook-0 = echo "" +hook-1 = ~/.config/polybar/scripts/task_manager --set-task 10 +hook-2 = ~/.config/polybar/scripts/task_manager --sshow-window10 +hook-3 = ~/.config/polybar/scripts/task_manager --sclosetwindow10 +click-left = polybar-msg -p %pid% hook taskbar10 3 +click-middle = polybar-msg -p %pid% hook taskbar10 4 diff --git a/.config/polybar/scripts/task_manager b/.config/polybar/scripts/task_manager index acd28ea..fccdabc 100755 --- a/.config/polybar/scripts/task_manager +++ b/.config/polybar/scripts/task_manager @@ -4,14 +4,32 @@ STATUS_FILE=/dev/shm/polybar_task_manager REFRESH=2 MAX_TASKS=10 +get_icon_by_name() +{ + name=$(echo "$1" | tr '[:upper:]' '[:lower:]') + declare -A ICON_MAP=( + [firefox]= + [code]= + [tilix]= + [nautilus]= + [gnome-calculator]= + [gnome-calendar]= + ) + + if [ ${ICON_MAP[$name]+_} ]; then + echo "${ICON_MAP[$name]}" + fi +} + show_tasks() { - wmctrl -lx | awk '{if ($2 > -1) print $3}' \ + wmctrl -lx | awk '{if ($2 > -1) print $3,$1}' \ | awk -F'.' '{ print $NF }' \ | tail -$MAX_TASKS | sort > $STATUS_FILE.current diff -q $STATUS_FILE $STATUS_FILE.current > /dev/null 2>&1 if [ $? -ne 1 ]; then + rm -rf $STATUS_FILE.current return 0 fi @@ -21,9 +39,9 @@ show_tasks() num_windows=$(wc -l $STATUS_FILE | cut -f 1 -d " ") while [ $counter -le "$MAX_TASKS" ]; do if [ $counter -le "$num_windows" ]; then - polybar-msg hook taskbar$counter 1 > /dev/null + polybar-msg hook taskbar$counter 2 > /dev/null else - polybar-msg hook taskbar"$counter" 2 > /dev/null + polybar-msg hook taskbar"$counter" 1 > /dev/null fi sleep 0.1 @@ -31,6 +49,23 @@ show_tasks() done } +print_task_name() +{ + name=$(sed "${1}q;d" $STATUS_FILE | cut -f 1 -d " ") + icon=$(get_icon_by_name "$name") + + if [ -n "$icon" ]; then + name="$name " + fi + + printf "%s%s" "$name" "$icon" +} + +get_task_id() +{ + sed "${1}q;d" $STATUS_FILE | cut -f 2 -d " " +} + daemon() { while true; do @@ -39,13 +74,23 @@ daemon() done } -if [ "$1" = "--daemon" ]; then - > /dev/shm/polybar_task_manager - daemon -fi +case "$1" in + --daemon) + > /dev/shm/polybar_task_manager + daemon + ;; + --set-task) + print_task_name "$2" + ;; + --show-window) + id=$(get_task_id "$2") + wmctrl -ia "$id" + print_task_name "$2" + ;; + --close-window) + id=$(get_task_id "$2") + wmctrl -ic "$id" + ;; +esac -if [ "$1" = "--window" ]; then - sed "${2}q;d" $STATUS_FILE -fi - -exit 1 +exit 0