mirror of
https://github.com/dcarrillo/dotfiles.git
synced 2025-10-09 03:59:08 +00:00
[polybar] Improve polytasks
This commit is contained in:
@@ -29,19 +29,19 @@ function kill_polybar
|
|||||||
|
|
||||||
function compile_src
|
function compile_src
|
||||||
{
|
{
|
||||||
pushd $POLYBAR_PATH/scripts/src/polytasks || return
|
pushd $POLYBAR_PATH/scripts/src/polytasks > /dev/null || return
|
||||||
echo "Compiling polytasks..."
|
echo "Compiling polytasks..."
|
||||||
go build -buildvcs=false -ldflags="-s -w" -o $POLYBAR_PATH/scripts/polytasks .
|
go build -buildvcs=false -ldflags="-s -w" -o $POLYBAR_PATH/scripts/polytasks .
|
||||||
popd || return
|
popd > /dev/null || return
|
||||||
}
|
}
|
||||||
|
|
||||||
function launch_polybar
|
function launch_polybar
|
||||||
{
|
{
|
||||||
|
compile_src
|
||||||
for monitor in $(polybar --list-monitors | cut -d":" -f1); do
|
for monitor in $(polybar --list-monitors | cut -d":" -f1); do
|
||||||
export MONITOR=$monitor
|
export MONITOR=$monitor
|
||||||
polybar top -c $POLYBAR_PATH/bar.ini >/dev/null &
|
polybar top -c $POLYBAR_PATH/bar.ini >/dev/null &
|
||||||
done
|
done
|
||||||
compile_src
|
|
||||||
wait_for_polybar started
|
wait_for_polybar started
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -31,6 +31,7 @@ var iconMap = map[string]string{
|
|||||||
"org.gnome.evince": "",
|
"org.gnome.evince": "",
|
||||||
"org.gnome.fileroller": "",
|
"org.gnome.fileroller": "",
|
||||||
"org.gnome.nautilus": "",
|
"org.gnome.nautilus": "",
|
||||||
|
"org.gnome.papers": "",
|
||||||
"org.gnome.settings": "",
|
"org.gnome.settings": "",
|
||||||
"org.telegram.desktop": "",
|
"org.telegram.desktop": "",
|
||||||
"seahorse": "",
|
"seahorse": "",
|
||||||
@@ -107,7 +108,7 @@ func getWindowList(conn *dbus.Conn) ([]WindowInfo, error) {
|
|||||||
|
|
||||||
success, value, err := evalJS(conn, js)
|
success, value, err := evalJS(conn, js)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to get window list: %w", err)
|
return nil, fmt.Errorf("failed to eval for getting window list: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var allWindows []WindowInfo
|
var allWindows []WindowInfo
|
||||||
@@ -136,10 +137,10 @@ func getActiveWindow(conn *dbus.Conn) (int, error) {
|
|||||||
|
|
||||||
success, value, err := evalJS(conn, js)
|
success, value, err := evalJS(conn, js)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, fmt.Errorf("failed to get active window: %w", err)
|
return 0, fmt.Errorf("failed to eval for getting active window: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if success {
|
if success && value != "" {
|
||||||
var id int
|
var id int
|
||||||
if err := json.Unmarshal([]byte(value), &id); err != nil {
|
if err := json.Unmarshal([]byte(value), &id); err != nil {
|
||||||
return 0, fmt.Errorf("failed to parse active window ID: %w", err)
|
return 0, fmt.Errorf("failed to parse active window ID: %w", err)
|
||||||
@@ -199,21 +200,11 @@ func focusOrMinimize(conn *dbus.Conn, windowID int) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func polyPrintWindowList(conn *dbus.Conn) error {
|
func polyPrintWindowList(windows []WindowInfo, activeID int) {
|
||||||
windows, err := getWindowList(conn)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to get window list: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(windows) > 0 {
|
if len(windows) > 0 {
|
||||||
fmt.Print("%{T4}Tasks: %{T-}")
|
fmt.Print("%{T4}Tasks: %{T-}")
|
||||||
}
|
}
|
||||||
for _, win := range windows {
|
for _, win := range windows {
|
||||||
activeID, err := getActiveWindow(conn)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to get active window: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
icon := getIcon(win.Class)
|
icon := getIcon(win.Class)
|
||||||
if win.ID == activeID {
|
if win.ID == activeID {
|
||||||
icon = fmt.Sprintf("%s%s%s", activeLeft, icon, activeRight)
|
icon = fmt.Sprintf("%s%s%s", activeLeft, icon, activeRight)
|
||||||
@@ -223,8 +214,6 @@ func polyPrintWindowList(conn *dbus.Conn) error {
|
|||||||
fmt.Printf("%%{T6}%s%%{T-}%%{A}%%{A}", icon)
|
fmt.Printf("%%{T6}%s%%{T-}%%{A}%%{A}", icon)
|
||||||
}
|
}
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleCLICommands(conn *dbus.Conn, args []string) error {
|
func handleCLICommands(conn *dbus.Conn, args []string) error {
|
||||||
@@ -290,19 +279,20 @@ func main() {
|
|||||||
|
|
||||||
windows, err := getWindowList(conn)
|
windows, err := getWindowList(conn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
fmt.Println("Error getting window list:", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
activeID, err := getActiveWindow(conn)
|
activeID, err := getActiveWindow(conn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
fmt.Println("Error getting active window:", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(windows) != lastWindowCount || activeID != lastActiveWindow {
|
if len(windows) != lastWindowCount || activeID != lastActiveWindow {
|
||||||
if err := polyPrintWindowList(conn); err == nil {
|
polyPrintWindowList(windows, activeID)
|
||||||
lastWindowCount = len(windows)
|
lastWindowCount = len(windows)
|
||||||
lastActiveWindow = activeID
|
lastActiveWindow = activeID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user