Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
fd2d4a6
new light widget
AKArien Dec 21, 2025
34b1880
added light to panel.cpp
AKArien Jan 24, 2026
a88eea4
icon selection
AKArien Dec 21, 2025
af94d04
squash me
AKArien Mar 4, 2026
0ca2a2e
fixed iteration, calling fs interractions
AKArien Jan 1, 2026
f5b8db6
initial filesystem interactions
AKArien Jan 1, 2026
233f7f1
ddcutil build
AKArien Mar 4, 2026
43a4142
fs slider working
AKArien Jan 4, 2026
ab097ca
fix permissions checking
AKArien Jan 4, 2026
56cdebc
add invert scroll toggle
AKArien Jan 4, 2026
e3aa771
config metadata
AKArien Jan 4, 2026
42a81b7
added icon
AKArien Jan 4, 2026
fab5806
light icon size config
AKArien Jan 4, 2026
9cc25c9
type fix
AKArien Jan 4, 2026
7af6d8b
rename filesystem to sysfs
AKArien Jan 5, 2026
8ec4f0d
singleton master design, basic inotify code
AKArien Jan 6, 2026
a975520
this had no buisness being here
AKArien Jan 21, 2026
6ca423e
let’s try that again oops
AKArien Jan 22, 2026
9bb7b3e
works better this way around
AKArien Jan 22, 2026
56b38a1
tweaks and fixes but not there yet
AKArien Jan 22, 2026
bf6f03e
actually grab the reference
AKArien Jan 23, 2026
fe3e76f
hi soreau the code is the worst mess rn but it works ty !
AKArien Jan 23, 2026
cb18067
basic layout, various cleanups
AKArien Jan 23, 2026
272000d
added inotify for creation and deletion
AKArien Jan 23, 2026
c4e1d11
just get monitor from the panel, magic !!
AKArien Jan 23, 2026
d09109b
get value from scale instead of always reading value
AKArien Jan 23, 2026
b28c35f
added config options
AKArien Jan 23, 2026
9f32bad
implemented some of the config options, switched to shared pointers, …
AKArien Jan 23, 2026
9ace31a
heavy round of commenting on sysfs
AKArien Jan 24, 2026
97ea50e
hanlding of in_attrib to recheck permissions
AKArien Jan 24, 2026
6d821af
oopsie
AKArien Jan 24, 2026
86e2746
use substring
AKArien Jan 24, 2026
bd208a1
don’t break on card > 9
AKArien Jan 24, 2026
03c236d
fix and align build after rebasing on master
AKArien Mar 4, 2026
2004d0a
some ddcutil squeleton
AKArien Jan 31, 2026
f3b61b3
fixed library name
AKArien Mar 4, 2026
5e3d52d
more abstraction
AKArien Jan 31, 2026
bb33b8e
more ddcutil core
AKArien Jan 31, 2026
78df3e0
add error output
AKArien Jan 31, 2026
5549739
update for new icon size after rebase
AKArien Jan 31, 2026
07b0909
can only have one handle, noted
AKArien Jan 31, 2026
34ea9b1
Dear diary : today, i made soreau crack up with a dumb commit message
AKArien Jan 31, 2026
a1c6fb0
fixed some icon updating
AKArien Jan 31, 2026
2a6802c
added popup on change
AKArien Jan 31, 2026
bfe8605
starting to delete
AKArien Feb 8, 2026
3b0956d
doesn’t work wooo
AKArien Feb 9, 2026
57dafdf
smooth ddcutil sliders
AKArien Mar 2, 2026
47e744a
ooh, so you have to start it ?
AKArien Mar 2, 2026
373cd40
seeing plugging in and out ! fix indentation
AKArien Mar 2, 2026
f2b74a6
get connector name for ddcutil displays
AKArien Mar 3, 2026
f0b59d5
polishing and deleting
AKArien Mar 3, 2026
1096915
made icon selection more better and hopefully somewhat acceptable
AKArien Mar 4, 2026
52055eb
lower logs, get scroll working, don’t redefine glib max/min
AKArien Mar 3, 2026
85b4ba8
fix slider sync on ddc changes
AKArien Mar 3, 2026
35df546
works well enough as is
AKArien Mar 4, 2026
82260a5
more better !!
AKArien Mar 4, 2026
f9e3e96
let’s try that again
AKArien Mar 4, 2026
1ad32fd
actually properly delete and clean up and stuff
AKArien Mar 4, 2026
b30bdd3
fix segfault and icon weirdess with sysfs
AKArien Mar 4, 2026
5bbaafa
uncrustify
AKArien Mar 4, 2026
e700088
add ci dependency, fix headers
AKArien Mar 4, 2026
6c8875f
well that’s much simpler
AKArien Mar 4, 2026
053d17d
metadata name + pos, adjust reload slider lenght
AKArien Mar 4, 2026
16215e6
fix popovers closing
AKArien Mar 4, 2026
3f09f14
changed name to backlight
AKArien Mar 4, 2026
42dc292
ajust styles
AKArien Mar 4, 2026
ca16567
check before scrolling
AKArien Mar 5, 2026
fa62bbe
add dbus systemd-logind fallback if the user doesn’t have the expecte…
AKArien Mar 5, 2026
7be2abd
uncrustify
AKArien Mar 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
steps:
- run: echo 'http://dl-cdn.alpinelinux.org/alpine/v3.22/community' > /etc/apk/repositories
- run: echo 'http://dl-cdn.alpinelinux.org/alpine/v3.22/main' >> /etc/apk/repositories
- run: apk --no-cache add git g++ binutils pkgconf meson ninja musl-dev gtkmm4-dev vala gobject-introspection gobject-introspection-dev pulseaudio-dev pipewire-dev wireplumber-dev libdbusmenu-glib-dev alsa-lib-dev yyjson-dev linux-pam-dev util-linux-login openssl-dev
- run: apk --no-cache add git g++ binutils pkgconf meson ninja musl-dev gtkmm4-dev vala gobject-introspection gobject-introspection-dev ddcutil pulseaudio-dev pipewire-dev wireplumber-dev libdbusmenu-glib-dev alsa-lib-dev yyjson-dev linux-pam-dev util-linux-login openssl-dev
- run: echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories
- run: echo 'http://dl-cdn.alpinelinux.org/alpine/edge/main' >> /etc/apk/repositories
- run: apk --no-cache add wayland-protocols wayfire-dev gtk4-layer-shell-dev gtk4-layer-shell
Expand Down
6 changes: 6 additions & 0 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ libpulse = dependency('libpulse', required: get_option('volume-widget'))
libgvc = subproject('gvc', default_options: ['static=true'], required: get_option('volume-widget'))
pipewire = dependency('libpipewire-0.3', required: get_option('wp-mixer-widget'))
wireplumber = dependency('wireplumber-0.5', required: get_option('wp-mixer-widget'))
ddcutil = dependency('libddcutil-5', required: get_option('ddcutil'))
ddcutil = dependency('ddcutil', required: get_option('ddcutil'))
dbusmenu_gtk = dependency('dbusmenu-glib-0.4')
xkbregistry = dependency('xkbregistry')
json = subproject('wf-json').get_variable('wfjson')
Expand All @@ -51,6 +53,10 @@ if wireplumber.found()
add_project_arguments('-DHAVE_WIREPLUMBER=1', language: 'cpp')
endif

if ddcutil.found()
add_project_arguments('-DHAVE_DDCUTIL=1', language: 'cpp')
endif

needs_libinotify = ['freebsd', 'dragonfly'].contains(host_machine.system())
libinotify = dependency('libinotify', required: needs_libinotify)

Expand Down
6 changes: 6 additions & 0 deletions meson_options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ option(
value: 'auto',
description: 'Build wireplumber mixer widget',
)
option(
'ddcutil',
type: 'feature',
value: 'auto',
description: 'Build external monitor support for backlight widget'
)
option(
'wayland-logout',
type: 'boolean',
Expand Down
33 changes: 33 additions & 0 deletions metadata/panel.xml
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,39 @@
</option>
</group>
<group>
<group>
<_short>Backlight</_short>
<option name="light_popup_on_change" type="bool">
<_short>Popup on change</_short>
<default>true</default>
</option>
<option name="light_popup_timeout" type="double">
<_short>Popup timeout</_short>
<default>2.5</default>
<min>0</min>
</option>
<option name="light_slider_length" type="int">
<_short>Slider length</_short>
<default>300</default>
<min>1</min>
</option>
<option name="light_scroll_sensitivity" type="double">
<_short>Scroll sensitivity</_short>
<default>1</default>
</option>
<option name="light_invert_scroll" type="bool">
<_short>Invert scroll</_short>
<_long>
Inverts which scroll direction raises and lowers display brightness
</_long>
<default>false</default>
</option>
<option name="light_icon_size" type="int">
<_short>Light icon size</_short>
<default>0</default>
<min>0</min>
</option>
</group>
<_short>Notifications</_short>
<option name="notifications_autohide_timeout" type="double">
<_short>Notifications Display Timeout</_short>
Expand Down
11 changes: 9 additions & 2 deletions src/panel/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ widget_sources = [
'widgets/tray/host.cpp',
'widgets/tray/dbusmenu.cpp',
'widgets/workspace-switcher.cpp',
'widgets/backlight/backlight.cpp',
'widgets/backlight/sysfs.cpp',
]

deps = [
Expand All @@ -38,7 +40,6 @@ deps = [
if libpulse.found()
widget_sources += [
'widgets/volume.cpp',
'widgets/volume-level.cpp',
]
deps += [libpulse, libgvc]
else
Expand All @@ -50,7 +51,6 @@ if wireplumber.found()
'widgets/wp-mixer/wp-mixer.cpp',
'widgets/wp-mixer/wf-wp-control.cpp',
'widgets/wp-mixer/wp-common.cpp',
'widgets/volume-level.cpp',
]
deps += [pipewire, wireplumber]
else
Expand All @@ -65,6 +65,13 @@ else
message('Weather disabled, weather widgets and owf service not included.')
endif

if ddcutil.found()
widget_sources += 'widgets/backlight/ddcutil.cpp'
deps += ddcutil
else
message('Libddcutil not found, light widget will not support external monitors.')
endif

executable(
'wf-panel',
['panel.cpp'] + widget_sources,
Expand Down
13 changes: 12 additions & 1 deletion src/panel/panel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#ifdef HAVE_WIREPLUMBER
#include "widgets/wp-mixer/wp-mixer.hpp"
#endif
#include "widgets/backlight/backlight.hpp"
#include "widgets/window-list/window-list.hpp"
#include "widgets/notifications/notification-center.hpp"
#include "widgets/tray/tray.hpp"
Expand Down Expand Up @@ -188,6 +189,15 @@ class WayfirePanel::impl
#endif
}

if (name == "backlight")
{
return Widget(new WayfireBacklight(output));
#ifndef HAVE_DDCUTIL
std::cout << "Built without DDC/CI support, backlight widget "
" doesn’t support external monitors." << std::endl;
#endif
}

if (name == "window-list")
{
return Widget(new WayfireWindowList(output));
Expand Down Expand Up @@ -539,7 +549,8 @@ void WayfirePanelApp::on_activate()
{"panel/volume_icon_size", ".volume"},
{"panel/wp_icon_size", ".wireplumber"},
{"panel/notifications_icon_size", ".notification-center "},
{"panel/tray_icon_size", ".tray-button"}
{"panel/tray_icon_size", ".tray-button"},
{"panel/light_icon_size", ".light"}
};
for (auto pair : icon_sizes_args)
{
Expand Down
Loading