File: gamemode.hpp

package info (click to toggle)
waybar 0.14.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,364 kB
  • sloc: cpp: 24,698; xml: 742; python: 146; ansic: 77; makefile: 26
file content (77 lines) | stat: -rw-r--r-- 2,561 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#pragma once

#include <iostream>
#include <map>
#include <string>

#include "ALabel.hpp"
#include "giomm/dbusconnection.h"
#include "giomm/dbusproxy.h"
#include "glibconfig.h"
#include "gtkmm/box.h"
#include "gtkmm/image.h"
#include "gtkmm/label.h"
#include "gtkmm/overlay.h"

namespace waybar::modules {

class Gamemode : public AModule {
 public:
  Gamemode(const std::string &, const Json::Value &);
  virtual ~Gamemode();
  auto update() -> void override;

 private:
  const std::string DEFAULT_ICON_NAME = "input-gaming-symbolic";
  const std::string DEFAULT_FORMAT = "{glyph}";
  const std::string DEFAULT_FORMAT_ALT = "{glyph} {count}";
  const std::string DEFAULT_TOOLTIP_FORMAT = "Games running: {count}";
  const std::string DEFAULT_GLYPH = "";

  void appear(const Glib::RefPtr<Gio::DBus::Connection> &connection, const Glib::ustring &name,
              const Glib::ustring &name_owner);
  void disappear(const Glib::RefPtr<Gio::DBus::Connection> &connection, const Glib::ustring &name);
  void prepareForSleep_cb(const Glib::RefPtr<Gio::DBus::Connection> &connection,
                          const Glib::ustring &sender_name, const Glib::ustring &object_path,
                          const Glib::ustring &interface_name, const Glib::ustring &signal_name,
                          const Glib::VariantContainerBase &parameters);
  void notify_cb(const Glib::ustring &sender_name, const Glib::ustring &signal_name,
                 const Glib::VariantContainerBase &arguments);

  void getData();
  bool handleToggle(GdkEventButton *const &) override;

  // Config
  std::string format = DEFAULT_FORMAT;
  std::string format_alt = DEFAULT_FORMAT_ALT;
  std::string tooltip_format = DEFAULT_TOOLTIP_FORMAT;
  std::string glyph = DEFAULT_GLYPH;
  bool tooltip = true;
  bool hideNotRunning = true;
  bool useIcon = true;
  uint iconSize = 20;
  uint iconSpacing = 4;
  std::string iconName = DEFAULT_ICON_NAME;

  Gtk::Box box_;
  Gtk::Image icon_;
  Gtk::Label label_;

  const std::string dbus_name = "com.feralinteractive.GameMode";
  const std::string dbus_obj_path = "/com/feralinteractive/GameMode";
  const std::string dbus_interface = "org.freedesktop.DBus.Properties";
  const std::string dbus_get_interface = "com.feralinteractive.GameMode";

  uint gameCount = 0;

  std::string lastStatus;
  bool showAltText = false;

  guint login1_id;
  Glib::RefPtr<Gio::DBus::Proxy> gamemode_proxy;
  Glib::RefPtr<Gio::DBus::Connection> system_connection;
  bool gamemodeRunning;
  guint gamemodeWatcher_id;
};

}  // namespace waybar::modules