From 07f564f956f92cb1b819c3511061717da93cb404 Mon Sep 17 00:00:00 2001 From: dcarrillo Date: Tue, 7 Apr 2020 18:24:25 +0200 Subject: [PATCH] [polybar] Create task_manager modules dynamically --- .config/polybar/launch.sh | 2 +- .config/polybar/modules.ini | 87 +--------------------------- .config/polybar/scripts/task_manager | 41 +++++++++++-- .gitignore | 2 +- 4 files changed, 41 insertions(+), 91 deletions(-) diff --git a/.config/polybar/launch.sh b/.config/polybar/launch.sh index 0a4a46d..a95b158 100755 --- a/.config/polybar/launch.sh +++ b/.config/polybar/launch.sh @@ -18,4 +18,4 @@ until pgrep -u "$(id -u)" -x polybar >/dev/null; do sleep 0.5 done -~/.config/polybar/scripts/task_manager --daemon & +~/.config/polybar/scripts/task_manager --daemon 10 & diff --git a/.config/polybar/modules.ini b/.config/polybar/modules.ini index f1bbd1d..f85013d 100644 --- a/.config/polybar/modules.ini +++ b/.config/polybar/modules.ini @@ -153,88 +153,5 @@ 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 +; task_manager module +include-file = ~/.config/polybar/task_manager.ini diff --git a/.config/polybar/scripts/task_manager b/.config/polybar/scripts/task_manager index 0620a0b..8c8a4af 100755 --- a/.config/polybar/scripts/task_manager +++ b/.config/polybar/scripts/task_manager @@ -2,7 +2,36 @@ STATUS_FILE=/dev/shm/polybar_task_manager REFRESH=2 -MAX_TASKS=10 + +create_module_tasklabel() +{ +cat < -1) print $3,$1}' \ | awk -F'.' '{ print $NF }' \ - | tail -$MAX_TASKS | sort > $STATUS_FILE.current + | tail -"$max_tasks" | sort > $STATUS_FILE.current diff -q $STATUS_FILE $STATUS_FILE.current > /dev/null 2>&1 if [ $? -ne 1 ]; then @@ -40,7 +70,7 @@ show_tasks() counter=1 num_windows=$(wc -l $STATUS_FILE | cut -f 1 -d " ") - while [ $counter -le "$MAX_TASKS" ]; do + while [ $counter -le "$max_tasks" ]; do if [ $counter -le "$num_windows" ]; then polybar-msg hook taskbar$counter 2 > /dev/null else @@ -76,6 +106,9 @@ get_task_id() daemon() { + create_module_tasklabel > ~/.config/polybar/task_manager.ini + create_module_sections "$1" >> ~/.config/polybar/task_manager.ini + while true; do show_tasks sleep $REFRESH @@ -85,7 +118,7 @@ daemon() case "$1" in --daemon) > /dev/shm/polybar_task_manager - daemon + daemon "$2" ;; --set-task) print_task_name "$2" diff --git a/.gitignore b/.gitignore index 1d74e21..d7bab27 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -.vscode/ +.config/polybar/task_manager.ini