Skip to content

Commit

Permalink
General cleanup in hyprland/workspaces
Browse files Browse the repository at this point in the history
  • Loading branch information
zjeffer committed Oct 21, 2023
1 parent dbb887b commit ed65d9c
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 86 deletions.
2 changes: 1 addition & 1 deletion include/modules/hyprland/window.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace waybar::modules::hyprland {
class Window : public waybar::AAppIconLabel, public EventHandler {
public:
Window(const std::string&, const waybar::Bar&, const Json::Value&);
virtual ~Window();
~Window() override;

auto update() -> void override;

Expand Down
50 changes: 25 additions & 25 deletions include/modules/hyprland/workspaces.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,13 @@ namespace waybar::modules::hyprland {

class Workspaces;

class CreateWindow {
class WorkspaceWindow {
public:
CreateWindow(std::string workspace_name, WindowAddress window_address, std::string window_repr);
CreateWindow(std::string workspace_name, WindowAddress window_address, std::string window_class,
std::string window_title);
CreateWindow(Json::Value& client_data);
WorkspaceWindow(std::string workspace_name, WindowAddress window_address,
std::string window_repr);
WorkspaceWindow(std::string workspace_name, WindowAddress window_address,
std::string window_class, std::string window_title);
WorkspaceWindow(Json::Value const& client_data);

int increment_time_spent_uncreated();
bool is_empty(Workspaces& workspace_manager);
Expand All @@ -49,18 +50,18 @@ class CreateWindow {

using Repr = std::string;
using ClassAndTitle = std::pair<std::string, std::string>;

std::variant<Repr, ClassAndTitle> window_;

WindowAddress window_address_;
std::string workspace_name_;

int time_spent_uncreated_ = 0;
};

class Workspace {
public:
explicit Workspace(const Json::Value& workspace_data, Workspaces& workspace_manager,
const Json::Value& clients_json = Json::Value::nullRef);
const Json::Value& clients_data = Json::Value::nullRef);
std::string& select_icon(std::map<std::string, std::string>& icons_map);
Gtk::Button& button() { return button_; };

Expand All @@ -74,21 +75,20 @@ class Workspace {
bool is_empty() const { return windows_ == 0; };
bool is_urgent() const { return is_urgent_; };

auto handle_clicked(GdkEventButton* bt) -> bool;
bool handle_clicked(GdkEventButton* bt) const;
void set_active(bool value = true) { active_ = value; };
void set_persistent(bool value = true) { is_persistent_ = value; };
void set_urgent(bool value = true) { is_urgent_ = value; };
void set_visible(bool value = true) { is_visible_ = value; };
void set_windows(uint value) { windows_ = value; };
void set_name(std::string value) { name_ = value; };
bool contains_window(WindowAddress addr) const { return window_map_.contains(addr); }
void insert_window(CreateWindow create_window_paylod);
std::string remove_window(WindowAddress addr);
void set_name(std::string const& value) { name_ = value; };
bool contains_window(WindowAddress const& addr) const { return window_map_.contains(addr); }
void insert_window(WorkspaceWindow create_window_paylod);
std::string remove_window(WindowAddress const& addr);
void initialize_window_map(const Json::Value& clients_data);

bool on_window_opened(CreateWindow create_window_paylod);

std::optional<std::string> on_window_closed(WindowAddress& addr);
bool on_window_opened(WorkspaceWindow const& create_window_paylod);
std::optional<std::string> on_window_closed(WindowAddress const& addr);

void update(const std::string& format, const std::string& icon);

Expand Down Expand Up @@ -132,21 +132,21 @@ class Workspaces : public AModule, public EventHandler {
bool window_rewrite_config_uses_title() const { return any_window_rewrite_rule_uses_title_; }

private:
void onEvent(const std::string&) override;
void onEvent(const std::string& e) override;
void update_window_count();
void sort_workspaces();
void create_workspace(Json::Value& workspace_data,
const Json::Value& clients_data = Json::Value::nullRef);
void remove_workspace(std::string name);
void set_urgent_workspace(std::string windowaddress);
void create_workspace(Json::Value const& workspace_data,
Json::Value const& clients_data = Json::Value::nullRef);
void remove_workspace(std::string const& name);
void set_urgent_workspace(std::string const& windowaddress);
void parse_config(const Json::Value& config);
void register_ipc();

void on_window_opened(std::string payload);
void on_window_closed(std::string payload);
void on_window_moved(std::string payload);
void on_window_opened(std::string const& payload);
void on_window_closed(std::string const& payload);
void on_window_moved(std::string const& payload);

int window_rewrite_priority_function(std::string& window_rule);
int window_rewrite_priority_function(std::string const& window_rule);

bool all_outputs_ = false;
bool show_special_ = false;
Expand Down Expand Up @@ -178,7 +178,7 @@ class Workspaces : public AModule, public EventHandler {
std::vector<std::unique_ptr<Workspace>> workspaces_;
std::vector<Json::Value> workspaces_to_create_;
std::vector<std::string> workspaces_to_remove_;
std::vector<CreateWindow> windows_to_create_;
std::vector<WorkspaceWindow> windows_to_create_;

std::vector<std::regex> ignore_workspaces_;

Expand Down
Loading

0 comments on commit ed65d9c

Please sign in to comment.