Skip to content

Commit

Permalink
Merge pull request #1074 from Anakael/feature/taskbar-ignore-list
Browse files Browse the repository at this point in the history
[wlr/taskbar] Add ignore-list param
  • Loading branch information
Alexays committed Apr 18, 2021
2 parents 5300461 + 5ad3b60 commit 70e67c5
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 2 deletions.
4 changes: 4 additions & 0 deletions include/modules/wlr/taskbar.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include <memory>
#include <string>
#include <vector>
#include <unordered_set>

#include <gdk/gdk.h>

Expand Down Expand Up @@ -61,6 +62,7 @@ class Task
Gtk::Label text_before_;
Gtk::Label text_after_;
bool button_visible_;
bool ignored_;

bool with_icon_;
std::string format_before_;
Expand Down Expand Up @@ -132,6 +134,7 @@ class Taskbar : public waybar::AModule
std::vector<TaskPtr> tasks_;

std::vector<Glib::RefPtr<Gtk::IconTheme>> icon_themes_;
std::unordered_set<std::string> ignore_list_;

struct zwlr_foreign_toplevel_manager_v1 *manager_;
struct wl_seat *seat_;
Expand All @@ -155,6 +158,7 @@ class Taskbar : public waybar::AModule
bool all_outputs() const;

std::vector<Glib::RefPtr<Gtk::IconTheme>> icon_themes() const;
const std::unordered_set<std::string>& ignore_list() const;
};

} /* namespace waybar::modules::wlr */
9 changes: 8 additions & 1 deletion man/waybar-wlr-taskbar.5.scd
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ Addressed by *wlr/taskbar*
typeof: string ++
Command to execute when the module is updated.

*ignore-list*: ++
typeof: array ++
List of app_id to be invisible.

# FORMAT REPLACEMENTS

*{icon}*: The icon of the application.
Expand Down Expand Up @@ -98,7 +102,10 @@ Addressed by *wlr/taskbar*
"icon-theme": "Numix-Circle",
"tooltip-format": "{title}",
"on-click": "activate",
"on-click-middle": "close"
"on-click-middle": "close",
"ignore-list": [
"Alacritty"
]
}
```

Expand Down
31 changes: 30 additions & 1 deletion src/modules/wlr/taskbar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ Task::Task(const waybar::Bar &bar, const Json::Value &config, Taskbar *tbar,
bar_{bar}, config_{config}, tbar_{tbar}, handle_{tl_handle}, seat_{seat},
id_{global_id++},
content_{bar.vertical ? Gtk::ORIENTATION_VERTICAL : Gtk::ORIENTATION_HORIZONTAL, 0},
button_visible_{false}
button_visible_{false}, ignored_{false}
{
zwlr_foreign_toplevel_handle_v1_add_listener(handle_, &toplevel_handle_impl, this);

Expand Down Expand Up @@ -383,6 +383,21 @@ void Task::handle_app_id(const char *app_id)
{
app_id_ = app_id;

if (tbar_->ignore_list().count(app_id)) {
ignored_ = true;
if (button_visible_) {
auto output = gdk_wayland_monitor_get_wl_output(bar_.output->monitor->gobj());
handle_output_leave(output);
}
} else {
bool is_was_ignored = ignored_;
ignored_ = false;
if (is_was_ignored) {
auto output = gdk_wayland_monitor_get_wl_output(bar_.output->monitor->gobj());
handle_output_enter(output);
}
}

if (!with_icon_)
return;

Expand All @@ -405,6 +420,11 @@ void Task::handle_output_enter(struct wl_output *output)
{
spdlog::debug("{} entered output {}", repr(), (void*)output);

if (ignored_) {
spdlog::debug("{} is ignored", repr());
return;
}

if (!button_visible_ && (tbar_->all_outputs() || tbar_->show_output(output))) {
/* The task entered the output of the current bar make the button visible */
tbar_->add_button(button_);
Expand Down Expand Up @@ -694,6 +714,14 @@ Taskbar::Taskbar(const std::string &id, const waybar::Bar &bar, const Json::Valu

icon_themes_.push_back(it);
}

// Load ignore-list
if (config_["ignore-list"].isArray()) {
for (auto& app_name : config_["ignore-list"]) {
ignore_list_.emplace(app_name.asString());
}
}

icon_themes_.push_back(Gtk::IconTheme::get_default());
}

Expand Down Expand Up @@ -829,5 +857,6 @@ std::vector<Glib::RefPtr<Gtk::IconTheme>> Taskbar::icon_themes() const
{
return icon_themes_;
}
const std::unordered_set<std::string> &Taskbar::ignore_list() const { return ignore_list_; }

} /* namespace waybar::modules::wlr */

0 comments on commit 70e67c5

Please sign in to comment.