mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-11-04 09:42:42 +01:00 
			
		
		
		
	Merge branch 'master' into add-river-layout
This commit is contained in:
		@@ -6,6 +6,7 @@
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
#include "ALabel.hpp"
 | 
			
		||||
#include "giomm/dbusproxy.h"
 | 
			
		||||
#include "util/json.hpp"
 | 
			
		||||
#include "util/sleeper_thread.hpp"
 | 
			
		||||
 | 
			
		||||
@@ -50,6 +51,8 @@ class Backlight : public ALabel {
 | 
			
		||||
  template <class ForwardIt, class Inserter>
 | 
			
		||||
  static void enumerate_devices(ForwardIt first, ForwardIt last, Inserter inserter, udev *udev);
 | 
			
		||||
 | 
			
		||||
  bool handleScroll(GdkEventScroll *e);
 | 
			
		||||
 | 
			
		||||
  const std::string preferred_device_;
 | 
			
		||||
  static constexpr int EPOLL_MAX_EVENTS = 16;
 | 
			
		||||
 | 
			
		||||
@@ -60,5 +63,7 @@ class Backlight : public ALabel {
 | 
			
		||||
  std::vector<BacklightDev> devices_;
 | 
			
		||||
  // thread must destruct before shared data
 | 
			
		||||
  util::SleeperThread udev_thread_;
 | 
			
		||||
 | 
			
		||||
  Glib::RefPtr<Gio::DBus::Proxy> login_proxy_;
 | 
			
		||||
};
 | 
			
		||||
}  // namespace waybar::modules
 | 
			
		||||
 
 | 
			
		||||
@@ -1,19 +1,22 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <date/tz.h>
 | 
			
		||||
 | 
			
		||||
#include "ALabel.hpp"
 | 
			
		||||
#include "util/date.hpp"
 | 
			
		||||
#include "util/sleeper_thread.hpp"
 | 
			
		||||
 | 
			
		||||
namespace waybar {
 | 
			
		||||
 | 
			
		||||
struct waybar_time;
 | 
			
		||||
 | 
			
		||||
namespace modules {
 | 
			
		||||
namespace waybar::modules {
 | 
			
		||||
 | 
			
		||||
const std::string kCalendarPlaceholder = "calendar";
 | 
			
		||||
const std::string KTimezonedTimeListPlaceholder = "timezoned_time_list";
 | 
			
		||||
 | 
			
		||||
enum class WeeksSide {
 | 
			
		||||
  LEFT,
 | 
			
		||||
  RIGHT,
 | 
			
		||||
  HIDDEN,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum class CldMode { MONTH, YEAR };
 | 
			
		||||
 | 
			
		||||
class Clock : public ALabel {
 | 
			
		||||
 public:
 | 
			
		||||
  Clock(const std::string&, const Json::Value&);
 | 
			
		||||
@@ -22,26 +25,37 @@ class Clock : public ALabel {
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
  util::SleeperThread thread_;
 | 
			
		||||
  std::map<std::pair<uint, GdkEventType>, void (waybar::modules::Clock::*)()> eventMap_;
 | 
			
		||||
  std::locale locale_;
 | 
			
		||||
  std::vector<const date::time_zone*> time_zones_;
 | 
			
		||||
  int current_time_zone_idx_;
 | 
			
		||||
  date::year_month_day calendar_cached_ymd_{date::January / 1 / 0};
 | 
			
		||||
  date::months calendar_shift_{0}, calendar_shift_init_{0};
 | 
			
		||||
  std::string calendar_cached_text_;
 | 
			
		||||
  bool is_calendar_in_tooltip_;
 | 
			
		||||
  bool is_timezoned_list_in_tooltip_;
 | 
			
		||||
 | 
			
		||||
  bool handleScroll(GdkEventScroll* e);
 | 
			
		||||
  bool handleToggle(GdkEventButton* const& e);
 | 
			
		||||
 | 
			
		||||
  std::string fmt_str_weeks_;
 | 
			
		||||
  std::string fmt_str_calendar_;
 | 
			
		||||
  int fmt_weeks_left_pad_{0};
 | 
			
		||||
  auto calendar_text(const waybar_time& wtime) -> std::string;
 | 
			
		||||
  auto weekdays_header(const date::weekday& first_dow, std::ostream& os) -> void;
 | 
			
		||||
  auto first_day_of_week() -> date::weekday;
 | 
			
		||||
  const date::time_zone* current_timezone();
 | 
			
		||||
  bool is_timezone_fixed();
 | 
			
		||||
  auto timezones_text(std::chrono::system_clock::time_point* now) -> std::string;
 | 
			
		||||
 | 
			
		||||
  /*Calendar properties*/
 | 
			
		||||
  WeeksSide cldWPos_{WeeksSide::HIDDEN};
 | 
			
		||||
  std::map<int, std::string const> fmtMap_;
 | 
			
		||||
  CldMode cldMode_{CldMode::MONTH};
 | 
			
		||||
  uint cldMonCols_{3};    // Count of the month in the row
 | 
			
		||||
  int cldMonColLen_{20};  // Length of the month column
 | 
			
		||||
  int cldWnLen_{3};       // Length of the week number
 | 
			
		||||
  date::year_month_day cldYearShift_;
 | 
			
		||||
  date::year_month cldMonShift_;
 | 
			
		||||
  date::months cldCurrShift_{0};
 | 
			
		||||
  date::months cldShift_{0};
 | 
			
		||||
  std::string cldYearCached_{};
 | 
			
		||||
  std::string cldMonCached_{};
 | 
			
		||||
  /*Calendar functions*/
 | 
			
		||||
  auto get_calendar(const date::zoned_seconds& now, const date::zoned_seconds& wtime)
 | 
			
		||||
      -> std::string;
 | 
			
		||||
  void cldModeSwitch();
 | 
			
		||||
};
 | 
			
		||||
}  // namespace modules
 | 
			
		||||
}  // namespace waybar
 | 
			
		||||
}  // namespace waybar::modules
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
#include "ALabel.hpp"
 | 
			
		||||
#include "gtkmm/box.h"
 | 
			
		||||
#include "util/command.hpp"
 | 
			
		||||
#include "util/json.hpp"
 | 
			
		||||
#include "util/sleeper_thread.hpp"
 | 
			
		||||
@@ -15,7 +16,7 @@ namespace waybar::modules {
 | 
			
		||||
 | 
			
		||||
class Image : public AModule {
 | 
			
		||||
 public:
 | 
			
		||||
  Image(const std::string&, const std::string&, const Json::Value&);
 | 
			
		||||
  Image(const std::string&, const Json::Value&);
 | 
			
		||||
  auto update() -> void;
 | 
			
		||||
  void refresh(int /*signal*/);
 | 
			
		||||
 | 
			
		||||
@@ -23,6 +24,7 @@ class Image : public AModule {
 | 
			
		||||
  void delayWorker();
 | 
			
		||||
  void handleEvent();
 | 
			
		||||
 | 
			
		||||
  Gtk::Box box_;
 | 
			
		||||
  Gtk::Image image_;
 | 
			
		||||
  std::string path_;
 | 
			
		||||
  int size_;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,7 @@
 | 
			
		||||
#include <cstring>
 | 
			
		||||
#include <memory>
 | 
			
		||||
#include <mutex>
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
#include "ipc.hpp"
 | 
			
		||||
#include "util/sleeper_thread.hpp"
 | 
			
		||||
 
 | 
			
		||||
@@ -19,10 +19,11 @@ class Window : public AIconLabel, public sigc::trackable {
 | 
			
		||||
  auto update() -> void;
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
  void setClass(std::string classname, bool enable);
 | 
			
		||||
  void onEvent(const struct Ipc::ipc_response&);
 | 
			
		||||
  void onCmd(const struct Ipc::ipc_response&);
 | 
			
		||||
  std::tuple<std::size_t, int, std::string, std::string, std::string, std::string> getFocusedNode(
 | 
			
		||||
      const Json::Value& nodes, std::string& output);
 | 
			
		||||
  std::tuple<std::size_t, int, int, std::string, std::string, std::string, std::string, std::string>
 | 
			
		||||
  getFocusedNode(const Json::Value& nodes, std::string& output);
 | 
			
		||||
  void getTree();
 | 
			
		||||
  void updateAppIconName();
 | 
			
		||||
  void updateAppIcon();
 | 
			
		||||
@@ -32,12 +33,14 @@ class Window : public AIconLabel, public sigc::trackable {
 | 
			
		||||
  int windowId_;
 | 
			
		||||
  std::string app_id_;
 | 
			
		||||
  std::string app_class_;
 | 
			
		||||
  std::string layout_;
 | 
			
		||||
  std::string old_app_id_;
 | 
			
		||||
  std::size_t app_nb_;
 | 
			
		||||
  std::string shell_;
 | 
			
		||||
  unsigned app_icon_size_{24};
 | 
			
		||||
  bool update_app_icon_{true};
 | 
			
		||||
  std::string app_icon_name_;
 | 
			
		||||
  int floating_count_;
 | 
			
		||||
  util::JsonParser parser_;
 | 
			
		||||
  std::mutex mutex_;
 | 
			
		||||
  Ipc ipc_;
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@
 | 
			
		||||
#include <gtkmm/button.h>
 | 
			
		||||
#include <gtkmm/label.h>
 | 
			
		||||
 | 
			
		||||
#include <string_view>
 | 
			
		||||
#include <unordered_map>
 | 
			
		||||
 | 
			
		||||
#include "AModule.hpp"
 | 
			
		||||
@@ -21,7 +22,9 @@ class Workspaces : public AModule, public sigc::trackable {
 | 
			
		||||
  auto update() -> void;
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
  static inline const std::string workspace_switch_cmd_ = "workspace {} \"{}\"";
 | 
			
		||||
  static constexpr std::string_view workspace_switch_cmd_ = "workspace {} \"{}\"";
 | 
			
		||||
  static constexpr std::string_view persistent_workspace_switch_cmd_ =
 | 
			
		||||
      R"(workspace {} "{}"; move workspace to output "{}"; workspace {} "{}")";
 | 
			
		||||
 | 
			
		||||
  static int convertWorkspaceNameToNum(std::string name);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -20,15 +20,19 @@ class Wireplumber : public ALabel {
 | 
			
		||||
  void loadRequiredApiModules();
 | 
			
		||||
  void prepare();
 | 
			
		||||
  void activatePlugins();
 | 
			
		||||
  static void updateVolume(waybar::modules::Wireplumber* self);
 | 
			
		||||
  static void updateNodeName(waybar::modules::Wireplumber* self);
 | 
			
		||||
  static uint32_t getDefaultNodeId(waybar::modules::Wireplumber* self);
 | 
			
		||||
  static void updateVolume(waybar::modules::Wireplumber* self, uint32_t id);
 | 
			
		||||
  static void updateNodeName(waybar::modules::Wireplumber* self, uint32_t id);
 | 
			
		||||
  static void onPluginActivated(WpObject* p, GAsyncResult* res, waybar::modules::Wireplumber* self);
 | 
			
		||||
  static void onObjectManagerInstalled(waybar::modules::Wireplumber* self);
 | 
			
		||||
  static void onMixerChanged(waybar::modules::Wireplumber* self, uint32_t id);
 | 
			
		||||
  static void onDefaultNodesApiChanged(waybar::modules::Wireplumber* self);
 | 
			
		||||
 | 
			
		||||
  WpCore* wp_core_;
 | 
			
		||||
  GPtrArray* apis_;
 | 
			
		||||
  WpObjectManager* om_;
 | 
			
		||||
  WpPlugin* mixer_api_;
 | 
			
		||||
  WpPlugin* def_nodes_api_;
 | 
			
		||||
  gchar* default_node_name_;
 | 
			
		||||
  uint32_t pending_plugins_;
 | 
			
		||||
  bool muted_;
 | 
			
		||||
  double volume_;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user