improvements

This commit is contained in:
Mars 2024-06-07 04:23:11 -04:00
parent 41200459e5
commit 6868539069
Signed by: pupbrained
GPG key ID: 0FF5B8826803F895
16 changed files with 346 additions and 147 deletions

View file

@ -4,7 +4,6 @@
#include <fstream>
#include <iostream>
#include <sdbus-c++/sdbus-c++.h>
#include <string>
#include <vector>
#include "os.h"
@ -18,44 +17,41 @@ static const char *DBUS_INTERFACE = "org.freedesktop.DBus",
*PLAYER_OBJECT_PATH = "/org/mpris/MediaPlayer2",
*PLAYER_INTERFACE_NAME = "org.mpris.MediaPlayer2.Player";
uint64_t ParseLineAsNumber(const string& input) {
u64 ParseLineAsNumber(const string& input) {
// Find the first number
string::size_type start = 0;
// Skip leading non-numbers
while (!isdigit(input[++start]))
;
while (!isdigit(input[++start]));
// Start searching from the start of the number
string::size_type end = start;
// Increment to the end of the number
while (isdigit(input[++end]))
;
while (isdigit(input[++end]));
// Return the substring containing the number
return std::stoul(input.substr(start, end - start));
}
uint64_t MeminfoParse(std::ifstream input) {
u64 MeminfoParse(std::ifstream input) {
string line;
// Skip every line before the one that starts with "MemTotal"
while (std::getline(input, line) && !line.starts_with("MemTotal"))
;
while (std::getline(input, line) && !line.starts_with("MemTotal"));
// Parse the number from the line
const uint64_t num = ParseLineAsNumber(line);
const u64 num = ParseLineAsNumber(line);
return num;
}
uint64_t GetMemInfo() {
u64 GetMemInfo() {
return MeminfoParse(std::ifstream("/proc/meminfo")) * 1024;
}
std::vector<std::string> GetMprisPlayers(sdbus::IConnection& connection) {
auto dbusProxy =
std::unique_ptr<sdbus::IProxy> dbusProxy =
sdbus::createProxy(connection, DBUS_INTERFACE, DBUS_OBJECT_PATH);
std::vector<std::string> names;
@ -66,7 +62,7 @@ std::vector<std::string> GetMprisPlayers(sdbus::IConnection& connection) {
std::vector<std::string> mprisPlayers;
for (const auto& name : names)
for (const std::basic_string<char>& name : names)
if (name.find(MPRIS_INTERFACE_NAME) != std::string::npos)
mprisPlayers.push_back(name);
@ -82,8 +78,10 @@ std::string GetActivePlayer(const std::vector<std::string>& mprisPlayers) {
std::string GetNowPlaying() {
try {
auto connection = sdbus::createSessionBusConnection();
auto mprisPlayers = GetMprisPlayers(*connection);
std::unique_ptr<sdbus::IConnection> connection =
sdbus::createSessionBusConnection();
std::vector<std::string> mprisPlayers = GetMprisPlayers(*connection);
if (mprisPlayers.empty())
return "";
@ -93,7 +91,7 @@ std::string GetNowPlaying() {
if (activePlayer.empty())
return "";
auto playerProxy =
std::unique_ptr<sdbus::IProxy> playerProxy =
sdbus::createProxy(*connection, activePlayer, PLAYER_OBJECT_PATH);
std::map<std::string, sdbus::Variant> metadata =

View file

@ -6,7 +6,7 @@
#include "macos/NowPlayingBridge.h"
#include "os.h"
uint64_t GetMemInfo() {
u64 GetMemInfo() {
uint64_t mem = 0;
size_t size = sizeof(mem);

View file

@ -1,5 +1,6 @@
// NowPlayingBridge.h
#pragma once
#ifdef __APPLE__
#ifdef __OBJC__
#import <Foundation/Foundation.h>
@ -12,3 +13,4 @@ extern "C" {
const char* GetCurrentPlayingArtist();
}
#endif
#endif

View file

@ -1,4 +1,4 @@
// NowPlayingBridge.mm
#ifdef __APPLE__
#import "NowPlayingBridge.h"
#import <Foundation/Foundation.h>
@ -91,3 +91,5 @@ const char *GetCurrentPlayingArtist() {
return nullptr;
}
}
#endif

View file

@ -1,7 +1,8 @@
#pragma once
#include <cstdint>
#include <string>
uint64_t GetMemInfo();
#include "util/numtypes.h"
u64 GetMemInfo();
std::string GetNowPlaying();