pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/wayland/waybar
Module Name: pkgsrc
Committed By: kikadf
Date: Mon Aug 24 14:25:32 UTC 2026
Added Files:
pkgsrc/wayland/waybar: DESCR Makefile PLIST distinfo
pkgsrc/wayland/waybar/patches: patch-include_modules_battery.hpp
patch-include_util_udev__deleter.hpp patch-meson.build
patch-src_factory.cpp patch-src_modules_battery.cpp
patch-src_modules_cpu__frequency_bsd.cpp
patch-src_modules_custom.cpp patch-src_modules_simpleclock.cpp
patch-src_modules_user.cpp patch-src_util_icon__loader.cpp
Log Message:
waybar: new package
Waybar is a highly customizable Wayland bar for Sway and
Wlroots based compositors.
To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 pkgsrc/wayland/waybar/DESCR \
pkgsrc/wayland/waybar/Makefile pkgsrc/wayland/waybar/PLIST \
pkgsrc/wayland/waybar/distinfo
cvs rdiff -u -r0 -r1.1 \
pkgsrc/wayland/waybar/patches/patch-include_modules_battery.hpp \
pkgsrc/wayland/waybar/patches/patch-include_util_udev__deleter.hpp \
pkgsrc/wayland/waybar/patches/patch-meson.build \
pkgsrc/wayland/waybar/patches/patch-src_factory.cpp \
pkgsrc/wayland/waybar/patches/patch-src_modules_battery.cpp \
pkgsrc/wayland/waybar/patches/patch-src_modules_cpu__frequency_bsd.cpp \
pkgsrc/wayland/waybar/patches/patch-src_modules_custom.cpp \
pkgsrc/wayland/waybar/patches/patch-src_modules_simpleclock.cpp \
pkgsrc/wayland/waybar/patches/patch-src_modules_user.cpp \
pkgsrc/wayland/waybar/patches/patch-src_util_icon__loader.cpp
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Added files:
Index: pkgsrc/wayland/waybar/DESCR
diff -u /dev/null pkgsrc/wayland/waybar/DESCR:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/DESCR Mon Aug 24 14:25:31 2026
@@ -0,0 +1,2 @@
+Highly customizable Wayland bar for Sway and
+Wlroots based compositors.
Index: pkgsrc/wayland/waybar/Makefile
diff -u /dev/null pkgsrc/wayland/waybar/Makefile:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/Makefile Mon Aug 24 14:25:31 2026
@@ -0,0 +1,65 @@
+# $NetBSD: Makefile,v 1.1 2026/08/24 14:25:31 kikadf Exp $
+
+DISTNAME= waybar-0.15.0
+CATEGORIES= wayland
+MASTER_SITES= ${MASTER_SITE_GITHUB:=Alexays/}
+GITHUB_PROJECT= Waybar
+GITHUB_TAG= ${PKGVERSION_NOREV}
+
+MAINTAINER= kikadf%NetBSD.org@localhost
+HOMEPAGE= https://github.com/Alexays/Waybar/
+COMMENT= Wayland bar for Wlroots based compositors
+LICENSE= mit
+
+USE_CXX_FEATURES+= filesystem
+USE_LANGUAGES= c c++
+
+USE_TOOLS+= pkg-config gdbus-codegen
+
+SUBST_CLASSES+= nogit
+SUBST_STAGE.nogit= pre-configure
+SUBST_MESSAGE.nogit= Set version
+SUBST_FILES.nogit+= meson.build
+SUBST_SED.nogit+= -e 's/git =/\#git =/g'
+SUBST_SED.nogit+= -e 's/git.found()/false/g'
+
+SUBST_CLASSES+= conf
+SUBST_STAGE.conf= pre-configure
+SUBST_MESSAGE.conf= Set SYSCONFDIR
+SUBST_FILES.conf+= src/config.cpp
+SUBST_SED.conf+= -e 's|SYSCONFDIR "|"${PKG_SYSCONFBASE}|g'
+
+EGDIR= ${PREFIX}/share/examples/waybar
+CONF_FILES= ${EGDIR}/config.jsonc ${PKG_SYSCONFDIR}/config.jsonc
+CONF_FILES+= ${EGDIR}/style.css ${PKG_SYSCONFDIR}/style.css
+CONF_FILES+= ${EGDIR}/power_menu.xml ${PKG_SYSCONFDIR}/power_menu.xml
+
+PKG_SYSCONFSUBDIR= xdg/waybar
+BUILD_DEFS+= PKG_SYSCONFBASE
+
+post-install:
+ ${INSTALL_DATA} ${WRKSRC}/resources/custom_modules/power_menu.xml \
+ ${DESTDIR}${EGDIR}
+
+# Linux uses udev for battery plugin
+.include "../../mk/bsd.fast.prefs.mk"
+.if ${OPSYS} == "Linux"
+.include "../../sysutils/libudev/buildlink3.mk"
+.endif
+
+.include "../../devel/meson/build.mk"
+.include "../../textproc/scdoc/tool.mk"
+.include "../../devel/chrono-date/buildlink3.mk"
+.include "../../devel/libdbusmenu-gtk3/buildlink3.mk"
+.include "../../devel/libinotify/buildlink3.mk"
+.include "../../devel/spdlog/buildlink3.mk"
+.include "../../devel/wayland/buildlink3.mk"
+.include "../../devel/wayland-protocols/buildlink3.mk"
+.include "../../geography/gpsd/buildlink3.mk"
+.include "../../textproc/fmtlib/buildlink3.mk"
+.include "../../textproc/jsoncpp/buildlink3.mk"
+.include "../../textproc/libxml2/buildlink3.mk"
+.include "../../wayland/gtk-layer-shell/buildlink3.mk"
+.include "../../x11/libxkbcommon/buildlink3.mk"
+.include "../../x11/gtkmm3/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
Index: pkgsrc/wayland/waybar/PLIST
diff -u /dev/null pkgsrc/wayland/waybar/PLIST:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/PLIST Mon Aug 24 14:25:31 2026
@@ -0,0 +1,43 @@
+@comment $NetBSD: PLIST,v 1.1 2026/08/24 14:25:31 kikadf Exp $
+bin/waybar
+man/man5/waybar-battery.5
+man/man5/waybar-cffi.5
+man/man5/waybar-clock.5
+man/man5/waybar-cpu.5
+man/man5/waybar-custom.5
+man/man5/waybar-disk.5
+man/man5/waybar-dwl-tags.5
+man/man5/waybar-dwl-window.5
+man/man5/waybar-ext-workspaces.5
+man/man5/waybar-gamemode.5
+man/man5/waybar-gps.5
+man/man5/waybar-hyprland-language.5
+man/man5/waybar-hyprland-submap.5
+man/man5/waybar-hyprland-window.5
+man/man5/waybar-hyprland-workspaces.5
+man/man5/waybar-idle-inhibitor.5
+man/man5/waybar-image.5
+man/man5/waybar-inhibitor.5
+man/man5/waybar-memory.5
+man/man5/waybar-menu.5
+man/man5/waybar-niri-language.5
+man/man5/waybar-niri-window.5
+man/man5/waybar-niri-workspaces.5
+man/man5/waybar-river-layout.5
+man/man5/waybar-river-mode.5
+man/man5/waybar-river-tags.5
+man/man5/waybar-river-window.5
+man/man5/waybar-states.5
+man/man5/waybar-styles.5
+man/man5/waybar-sway-language.5
+man/man5/waybar-sway-mode.5
+man/man5/waybar-sway-scratchpad.5
+man/man5/waybar-sway-window.5
+man/man5/waybar-sway-workspaces.5
+man/man5/waybar-temperature.5
+man/man5/waybar-tray.5
+man/man5/waybar-wlr-taskbar.5
+man/man5/waybar.5
+share/examples/waybar/config.jsonc
+share/examples/waybar/power_menu.xml
+share/examples/waybar/style.css
Index: pkgsrc/wayland/waybar/distinfo
diff -u /dev/null pkgsrc/wayland/waybar/distinfo:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/distinfo Mon Aug 24 14:25:31 2026
@@ -0,0 +1,15 @@
+$NetBSD: distinfo,v 1.1 2026/08/24 14:25:31 kikadf Exp $
+
+BLAKE2s (waybar-0.15.0.tar.gz) = 59b011bb71da6acc9b3ee333f6ab9bbb4ccbb22b1627112b53b13135db4baa22
+SHA512 (waybar-0.15.0.tar.gz) = f267c1ad2af1e4e74c3d8c966009a013c0b5c2849bfaf312b3b91e9d6f6856dc5466118f308208948118ea1de0cf70986cc3b592cc830f84d634b8518c5b8c9e
+Size (waybar-0.15.0.tar.gz) = 355671 bytes
+SHA1 (patch-include_modules_battery.hpp) = 3bebca10de357bc25a70d26d677a8f7717d3b495
+SHA1 (patch-include_util_udev__deleter.hpp) = 8f95df3fc76f9f7461fe4576994c6fdfacb3b91b
+SHA1 (patch-meson.build) = ffb2de1b1c11b79312ef166411ac93f3f4433cc7
+SHA1 (patch-src_factory.cpp) = de849a029ac8b51381bbe4b94ea59ab9c94c44ef
+SHA1 (patch-src_modules_battery.cpp) = 4ee104fb0ed46112c09d8559687d910e08ee93b0
+SHA1 (patch-src_modules_cpu__frequency_bsd.cpp) = 9ad194942940b2b38b0f01d6a96408cd23969269
+SHA1 (patch-src_modules_custom.cpp) = 644740e4862444b7ed33523affe5d97e5fcbdd32
+SHA1 (patch-src_modules_simpleclock.cpp) = 7ffa485e5cc9033e090d46133654243cbd1b3f8d
+SHA1 (patch-src_modules_user.cpp) = 7b9d5578a64d2b1fefbecd650549c5e9f8ea19ad
+SHA1 (patch-src_util_icon__loader.cpp) = 29b8f755333ab617263b6f80e20c993025300e9a
Index: pkgsrc/wayland/waybar/patches/patch-include_modules_battery.hpp
diff -u /dev/null pkgsrc/wayland/waybar/patches/patch-include_modules_battery.hpp:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/patches/patch-include_modules_battery.hpp Mon Aug 24 14:25:32 2026
@@ -0,0 +1,18 @@
+$NetBSD: patch-include_modules_battery.hpp,v 1.1 2026/08/24 14:25:32 kikadf Exp $
+
+* Use udev only for linux
+
+--- include/modules/battery.hpp.orig 2026-05-24 09:20:05.456525925 +0000
++++ include/modules/battery.hpp
+@@ -40,9 +40,11 @@ class Battery : public ALabel {
+ void processEvents(std::string& state, std::string& status, uint8_t capacity);
+
+ std::map<fs::path, int> batteries_;
++#ifdef HAVE_LIBUDEV
+ std::unique_ptr<udev, util::UdevDeleter> udev_;
+ std::array<pollfd, 1> poll_fds_;
+ std::unique_ptr<udev_monitor, util::UdevMonitorDeleter> mon_;
++#endif
+ fs::path adapter_;
+ int battery_watch_fd_;
+ std::mutex battery_list_mutex_;
Index: pkgsrc/wayland/waybar/patches/patch-include_util_udev__deleter.hpp
diff -u /dev/null pkgsrc/wayland/waybar/patches/patch-include_util_udev__deleter.hpp:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/patches/patch-include_util_udev__deleter.hpp Mon Aug 24 14:25:32 2026
@@ -0,0 +1,21 @@
+$NetBSD: patch-include_util_udev__deleter.hpp,v 1.1 2026/08/24 14:25:32 kikadf Exp $
+
+* Use udev only for linux
+
+--- include/util/udev_deleter.hpp.orig 2026-05-24 09:05:13.454406135 +0000
++++ include/util/udev_deleter.hpp
+@@ -1,5 +1,6 @@
+ #pragma once
+
++#ifdef HAVE_LIBUDEV
+ #include <libudev.h>
+
+ namespace waybar::util {
+@@ -18,4 +19,5 @@ struct UdevEnumerateDeleter {
+ struct UdevMonitorDeleter {
+ void operator()(udev_monitor* ptr) const { udev_monitor_unref(ptr); }
+ };
+-} // namespace waybar::util
+\ No newline at end of file
++} // namespace waybar::util
++#endif // HAVE_LIBUDEV
Index: pkgsrc/wayland/waybar/patches/patch-meson.build
diff -u /dev/null pkgsrc/wayland/waybar/patches/patch-meson.build:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/patches/patch-meson.build Mon Aug 24 14:25:32 2026
@@ -0,0 +1,49 @@
+$NetBSD: patch-meson.build,v 1.1 2026/08/24 14:25:32 kikadf Exp $
+
+* Build battery on NetBSD, link with -lprop
+* Config files to examples
+
+--- meson.build.orig 2026-02-06 20:15:03.000000000 +0000
++++ meson.build
+@@ -58,15 +58,19 @@ if compiler.links(code, name : 'nl_langi
+ add_project_arguments('-DHAVE_LANGINFO_1STDAY', language: 'cpp')
+ endif
+
+-add_global_arguments(cpp_args, language : 'cpp')
+-add_global_link_arguments(cpp_link_args, language : 'cpp')
+-
+ is_linux = host_machine.system() == 'linux'
+ is_dragonfly = host_machine.system() == 'dragonfly'
+ is_freebsd = host_machine.system() == 'freebsd'
+ is_netbsd = host_machine.system() == 'netbsd'
+ is_openbsd = host_machine.system() == 'openbsd'
+
++if is_netbsd
++ cpp_link_args += ['-lprop']
++endif
++
++add_global_arguments(cpp_args, language : 'cpp')
++add_global_link_arguments(cpp_link_args, language : 'cpp')
++
+ thread_dep = dependency('threads')
+ fmt = dependency('fmt', version : ['>=8.1.1'], fallback : ['fmt', 'fmt_dep'])
+ spdlog = dependency('spdlog', version : ['>=1.15.2'], fallback : ['spdlog', 'spdlog_dep'], default_options : ['std_format=disabled', 'tests=disabled'])
+@@ -245,7 +249,7 @@ elif is_dragonfly or is_freebsd or is_ne
+ 'man/waybar-cpu.5.scd',
+ 'man/waybar-memory.5.scd',
+ )
+- if is_freebsd
++ if is_freebsd or is_netbsd
+ src_files += files('src/modules/battery.cpp')
+ man_files += files('man/waybar-battery.5.scd')
+ endif
+@@ -572,7 +576,8 @@ executable(
+ install_data(
+ 'resources/config.jsonc',
+ 'resources/style.css',
+- install_dir: sysconfdir / 'xdg/waybar'
++ #install_dir: sysconfdir / 'xdg/waybar'
++ install_dir: prefix / 'share/examples/waybar'
+ )
+
+ scdoc = dependency('scdoc', version: '>=1.9.2', native: true, required: get_option('man-pages'))
Index: pkgsrc/wayland/waybar/patches/patch-src_factory.cpp
diff -u /dev/null pkgsrc/wayland/waybar/patches/patch-src_factory.cpp:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/patches/patch-src_factory.cpp Mon Aug 24 14:25:32 2026
@@ -0,0 +1,24 @@
+$NetBSD: patch-src_factory.cpp,v 1.1 2026/08/24 14:25:32 kikadf Exp $
+
+* Enable battery module on NetBSD
+
+--- src/factory.cpp.orig 2026-05-24 09:08:08.278804792 +0000
++++ src/factory.cpp
+@@ -46,7 +46,7 @@
+ #include "modules/wayfire/window.hpp"
+ #include "modules/wayfire/workspaces.hpp"
+ #endif
+-#if defined(__FreeBSD__) || defined(__linux__)
++#if defined(__FreeBSD__) || defined(__linux__) || defined(__NetBSD__)
+ #include "modules/battery.hpp"
+ #endif
+ #if defined(HAVE_CPU_LINUX) || defined(HAVE_CPU_BSD)
+@@ -129,7 +129,7 @@ waybar::AModule* waybar::Factory::makeMo
+ auto hash_pos = name.find('#');
+ auto ref = name.substr(0, hash_pos);
+ auto id = hash_pos != std::string::npos ? name.substr(hash_pos + 1) : "";
+-#if defined(__FreeBSD__) || defined(__linux__)
++#if defined(__FreeBSD__) || defined(__linux__) || defined(__NetBSD__)
+ if (ref == "battery") {
+ return new waybar::modules::Battery(id, bar_, config_[name]);
+ }
Index: pkgsrc/wayland/waybar/patches/patch-src_modules_battery.cpp
diff -u /dev/null pkgsrc/wayland/waybar/patches/patch-src_modules_battery.cpp:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/patches/patch-src_modules_battery.cpp Mon Aug 24 14:25:32 2026
@@ -0,0 +1,219 @@
+$NetBSD: patch-src_modules_battery.cpp,v 1.1 2026/08/24 14:25:32 kikadf Exp $
+
+* Add NetBSD support
+* Use udev only for linux
+
+--- src/modules/battery.cpp.orig 2026-02-06 20:15:03.000000000 +0000
++++ src/modules/battery.cpp
+@@ -2,15 +2,79 @@
+
+ #include <algorithm>
+ #include <cctype>
++#include <cstddef>
+
+ #include "util/command.hpp"
+ #if defined(__FreeBSD__)
+ #include <sys/sysctl.h>
+ #endif
++#ifdef HAVE_LIBUDEV
+ #include <libudev.h>
+ #include <poll.h>
+-#include <spdlog/spdlog.h>
+ #include <sys/signalfd.h>
++#endif
++#include <spdlog/spdlog.h>
++
++#if defined(__NetBSD__)
++#include <fcntl.h>
++#include <unistd.h>
++#include <prop/proplib.h>
++#include <sys/envsys.h>
++
++#define SYSMON "/dev/sysmon"
++
++static prop_array_t get_device(const char* name) {
++ prop_dictionary_t dict;
++ prop_object_t obj;
++ prop_array_t array;
++ int fd;
++
++ if (name == nullptr) { return nullptr; }
++ if ((fd = open(SYSMON, O_RDONLY)) < 0) { return nullptr; }
++ if (prop_dictionary_recv_ioctl(fd, ENVSYS_GETDICTIONARY, &dict) != 0) {
++ close(fd);
++ return nullptr;
++ }
++ close(fd);
++
++ if ((obj = prop_dictionary_get(dict, name)) == nullptr) {
++ prop_object_release(dict);
++ return nullptr;
++ }
++ if (prop_object_type(obj) != PROP_TYPE_ARRAY) {
++ prop_object_release(dict);
++ return nullptr;
++ }
++
++ array = (prop_array_t)obj;
++ prop_object_retain(array);
++ prop_object_release(dict);
++
++ return array;
++}
++
++static int64_t handle_stat(prop_dictionary_t stat, const char * key) {
++ prop_object_t obj;
++
++ if ((stat == nullptr || key == nullptr) ||
++ ((obj = prop_dictionary_get(stat, key)) == nullptr) ||
++ (prop_object_type(obj) != PROP_TYPE_NUMBER))
++ { return -1; }
++
++ return prop_number_signed_value((prop_number_t)obj);
++}
++
++static bool stat_is_valid(prop_dictionary_t stat) {
++ prop_object_t obj;
++
++ if ((stat == nullptr) ||
++ ((obj = prop_dictionary_get(stat, "state")) == nullptr) ||
++ (prop_object_type(obj) != PROP_TYPE_STRING))
++ { return false; }
++
++ return prop_string_equals_string((prop_string_t)obj, "valid");
++}
++#endif
+
+ waybar::modules::Battery::Battery(const std::string& id, const Bar& bar, const Json::Value& config)
+ : ALabel(config, "battery", id, "{capacity}%", 60), last_event_(""), bar_(bar) {
+@@ -56,7 +120,7 @@ waybar::modules::Battery::~Battery() {
+ }
+
+ void waybar::modules::Battery::worker() {
+-#if defined(__FreeBSD__)
++#if defined(__FreeBSD__) || defined(__NetBSD__)
+ thread_timer_ = [this] {
+ dp.emit();
+ thread_timer_.sleep_for(interval_);
+@@ -248,6 +312,82 @@ waybar::modules::Battery::getInfos() {
+ // spdlog::info("{} {} {} {}", capacity,time,status,rate);
+ return {capacity, time / 60.0, status, rate, 0, 0.0F};
+
++#elif defined(__NetBSD__)
++ //Need: [capacity, time_remaining, status, power, cycles, health]
++ // [uint8_t, float, std::string, float, uint16_t, float ]
++ prop_array_t bat;
++ prop_object_iterator_t iter;
++ prop_dictionary_t id;
++ prop_string_t desc;
++ int32_t cur_charge = 0;
++ int32_t max_charge = 0;
++ int32_t last_max_charge = 0;
++ int32_t charge_rate = 0;
++ int32_t discharge_rate = 0;
++ std::string status;
++ int32_t capacity;
++ float time_remaining;
++ float power;
++
++ if ((bat = get_device("acpibat0")) == nullptr) {
++ throw std::runtime_error("get acpibat0 device info failed");
++ }
++ if ((iter = prop_array_iterator(bat)) == nullptr) {
++ prop_object_release(bat);
++ throw std::runtime_error("prop_array_iterator failed");
++ }
++ while ((id = (prop_dictionary_t)prop_object_iterator_next(iter)) != nullptr) {
++ desc = (prop_string_t)prop_dictionary_get(id, "description");
++ if (desc == nullptr) continue;
++ if (prop_string_equals_string(desc, "charge")) {
++ cur_charge = handle_stat(id, "cur-value");
++ max_charge = handle_stat(id, "max-value");
++ } else if (prop_string_equals_string(desc, "last full cap")) {
++ if (stat_is_valid(id)) last_max_charge = handle_stat(id, "cur-value");
++ } else if (prop_string_equals_string(desc, "charge rate")) {
++ if (stat_is_valid(id)) charge_rate = handle_stat(id, "cur-value");
++ } else if (prop_string_equals_string(desc, "discharge rate")) {
++ if (stat_is_valid(id)) discharge_rate = handle_stat(id, "cur-value");
++ }
++ }
++ prop_object_iterator_release(iter);
++ prop_object_release(bat);
++
++ spdlog::info("{} {} {} {}", max_charge,cur_charge,charge_rate,discharge_rate);
++
++ if (max_charge <= 0) max_charge = last_max_charge;
++ if (charge_rate == 0 && (discharge_rate == 0 || discharge_rate == -1000)) {
++ time_remaining = 0.0;
++ power = 0.0;
++ } else {
++ if (charge_rate) {
++ time_remaining = -(float)(max_charge - cur_charge) / (float)charge_rate;
++ power = charge_rate;
++ } else {
++ time_remaining = -(float)cur_charge / (float)discharge_rate;
++ power = discharge_rate;
++ }
++ }
++
++ capacity = (cur_charge * 100) / max_charge;
++ // Handle full-at
++ if (config_["full-at"].isUInt()) {
++ auto full_at = config_["full-at"].asUInt();
++ if (full_at < 100) {
++ capacity = 100.f * capacity / full_at;
++ }
++ }
++ if (capacity > 100.f) {
++ // This can happen when the battery is calibrating and goes above 100%
++ // Handle it gracefully by clamping at 100%
++ capacity = 100.f;
++ }
++
++ status = getAdapterStatus(capacity);
++
++ spdlog::info("{} {} {} {}", capacity,time_remaining,status,power);
++ return {capacity, time_remaining, status, power, 0, 0.0F};
++
+ #elif defined(__linux__)
+ uint32_t total_power = 0; // μW
+ bool total_power_exists = false;
+@@ -639,6 +779,38 @@ const std::string waybar::modules::Batte
+ bool online = state == 2;
+ std::string status{"Unknown"}; // TODO: add status in FreeBSD
+ {
++#elif defined(__NetBSD__)
++ prop_array_t ac;
++ prop_object_iterator_t iter;
++ prop_dictionary_t id;
++ prop_string_t desc;
++ std::string status;
++ bool online = false;
++
++ if ((ac = get_device("acpiacad0")) == nullptr) {
++ status = "Unknown";
++ } else {
++ if ((iter = prop_array_iterator(ac)) == nullptr){
++ prop_object_release(ac);
++ throw std::runtime_error("prop_array_iterator failed");
++ }
++ while ((id = (prop_dictionary_t)prop_object_iterator_next(iter)) != nullptr) {
++ desc = (prop_string_t)prop_dictionary_get(id, "description");
++ if (desc == nullptr) continue;
++ if (!prop_string_equals_string(desc, "connected")) continue;
++ // Unknown > Full > Not charging > Discharging > Charging
++ if (handle_stat(id, "cur-value") != 0) {
++ status = "Charging";
++ online = true;
++ } else {
++ status = "Discharging";
++ }
++ break;
++ }
++ prop_object_iterator_release(iter);
++ prop_object_release(ac);
++ }
++ {
+ #else
+ if (!adapter_.empty()) {
+ bool online;
Index: pkgsrc/wayland/waybar/patches/patch-src_modules_cpu__frequency_bsd.cpp
diff -u /dev/null pkgsrc/wayland/waybar/patches/patch-src_modules_cpu__frequency_bsd.cpp:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/patches/patch-src_modules_cpu__frequency_bsd.cpp Mon Aug 24 14:25:32 2026
@@ -0,0 +1,28 @@
+$NetBSD: patch-src_modules_cpu__frequency_bsd.cpp,v 1.1 2026/08/24 14:25:32 kikadf Exp $
+
+* Add NetBSD support
+
+--- src/modules/cpu_frequency/bsd.cpp.orig 2026-05-25 08:52:26.638052357 +0000
++++ src/modules/cpu_frequency/bsd.cpp
+@@ -8,7 +8,7 @@ std::vector<float> waybar::modules::CpuF
+ size_t len;
+ int32_t freq;
+
+-#ifndef __OpenBSD__
++#if defined(__FreeBSD__)
+ char buffer[256];
+ uint32_t i = 0;
+ while (true) {
+@@ -18,7 +18,11 @@ std::vector<float> waybar::modules::CpuF
+ frequencies.push_back(freq);
+ ++i;
+ }
+-#else
++#elif defined(__NetBSD__)
++ if (sysctlbyname("machdep.cpu.frequency.current", &freq, &len, NULL, 0) == 0) {
++ frequencies.push_back((float)freq);
++ }
++#elif defined(__OpenBSD__)
+ int getMhz[] = {CTL_HW, HW_CPUSPEED};
+ len = sizeof(freq);
+ sysctl(getMhz, 2, &freq, &len, NULL, 0);
Index: pkgsrc/wayland/waybar/patches/patch-src_modules_custom.cpp
diff -u /dev/null pkgsrc/wayland/waybar/patches/patch-src_modules_custom.cpp:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/patches/patch-src_modules_custom.cpp Mon Aug 24 14:25:32 2026
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_modules_custom.cpp,v 1.1 2026/08/24 14:25:32 kikadf Exp $
+
+* Portable WEXITSTATUS usage
+
+--- src/modules/custom.cpp.orig 2025-12-18 09:25:10.973327997 +0000
++++ src/modules/custom.cpp
+@@ -81,7 +81,8 @@ void waybar::modules::Custom::continuous
+ if (getline(&buff, &len, fp_) == -1) {
+ int exit_code = 1;
+ if (fp_) {
+- exit_code = WEXITSTATUS(util::command::close(fp_, pid_));
++ int status = util::command::close(fp_, pid_);
++ exit_code = WEXITSTATUS(status);
+ fp_ = nullptr;
+ }
+ if (exit_code != 0) {
Index: pkgsrc/wayland/waybar/patches/patch-src_modules_simpleclock.cpp
diff -u /dev/null pkgsrc/wayland/waybar/patches/patch-src_modules_simpleclock.cpp:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/patches/patch-src_modules_simpleclock.cpp Mon Aug 24 14:25:32 2026
@@ -0,0 +1,17 @@
+$NetBSD: patch-src_modules_simpleclock.cpp,v 1.1 2026/08/24 14:25:32 kikadf Exp $
+
+* fmt::localtime was removed in fmtlib-12
+
+--- src/modules/simpleclock.cpp.orig 2025-12-18 09:42:22.535423519 +0000
++++ src/modules/simpleclock.cpp
+@@ -17,7 +17,9 @@ waybar::modules::Clock::Clock(const std:
+ auto waybar::modules::Clock::update() -> void {
+ tzset(); // Update timezone information
+ auto now = std::chrono::system_clock::now();
+- auto localtime = fmt::localtime(std::chrono::system_clock::to_time_t(now));
++ auto t = std::chrono::system_clock::to_time_t(now);
++ std::tm localtime{};
++ localtime_r(&t, &localtime);
+ auto text = fmt::format(fmt::runtime(format_), localtime);
+ label_.set_markup(text);
+
Index: pkgsrc/wayland/waybar/patches/patch-src_modules_user.cpp
diff -u /dev/null pkgsrc/wayland/waybar/patches/patch-src_modules_user.cpp:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/patches/patch-src_modules_user.cpp Mon Aug 24 14:25:32 2026
@@ -0,0 +1,21 @@
+$NetBSD: patch-src_modules_user.cpp,v 1.1 2026/08/24 14:25:32 kikadf Exp $
+
+* Portable uptime usage, fallback to CLOCK_MONOTONIC
+
+--- src/modules/user.cpp.orig 2025-12-18 09:12:40.964198952 +0000
++++ src/modules/user.cpp
+@@ -63,10 +63,12 @@ long User::uptime_as_seconds() {
+ #if HAVE_CPU_BSD
+ struct timespec s_info;
+ int flags = 0;
+-#ifndef __OpenBSD__
++#ifdef CLOCK_UPTIME_PRECISE
+ flags = CLOCK_UPTIME_PRECISE;
+-#else
++#elif defined(CLOCK_UPTIME)
+ flags = CLOCK_UPTIME;
++#else
++ flags = CLOCK_MONOTONIC;
+ #endif
+ if (0 == clock_gettime(flags, &s_info)) {
+ uptime = s_info.tv_sec;
Index: pkgsrc/wayland/waybar/patches/patch-src_util_icon__loader.cpp
diff -u /dev/null pkgsrc/wayland/waybar/patches/patch-src_util_icon__loader.cpp:1.1
--- /dev/null Mon Aug 24 14:25:32 2026
+++ pkgsrc/wayland/waybar/patches/patch-src_util_icon__loader.cpp Mon Aug 24 14:25:32 2026
@@ -0,0 +1,15 @@
+$NetBSD: patch-src_util_icon__loader.cpp,v 1.1 2026/08/24 14:25:32 kikadf Exp $
+
+* Fix ctype usage
+
+--- src/util/icon_loader.cpp.orig 2026-07-27 13:52:11.975754660 +0000
++++ src/util/icon_loader.cpp
+@@ -185,7 +185,7 @@ Glib::RefPtr<Gio::DesktopAppInfo> IconLo
+
+ auto lower_app_id = app_id;
+ std::ranges::transform(lower_app_id, lower_app_id.begin(),
+- [](char c) { return std::tolower(c); });
++ [](char c) { return static_cast<char>(std::tolower(static_cast<unsigned char>(c))); });
+ app_info_ = get_desktop_app_info(lower_app_id);
+ if (app_info_) {
+ return app_info_;
Home |
Main Index |
Thread Index |
Old Index