backlight: improve keyboard brightness control

parent c4516857
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ximper-shell-notification-center 0.1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-19 00:04+0300\n"
"POT-Creation-Date: 2026-04-19 01:20+0300\n"
"PO-Revision-Date: 2026-03-24 00:00+0300\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
......@@ -67,6 +67,10 @@ msgstr "Блокировки"
msgid "Built-in Display"
msgstr "Встроенный дисплей"
#: src/controlCenter/widgets/backlight/backlight.vala:168
msgid "Keyboard"
msgstr "Клавиатура"
#: src/controlCenter/widgets/quickSettings/tiles/dndTile.vala:5
msgid "Do Not Disturb"
msgstr "Не беспокоить"
......@@ -182,7 +186,7 @@ msgstr "Очистить"
msgid "No Notifications"
msgstr "Нет уведомлений"
#: data/ui/widgets/backlight.blp:44
#: data/ui/widgets/backlight.blp:42
msgid "Brightness"
msgstr "Яркость"
......
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ximper-shell-notification-center\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-19 00:04+0300\n"
"POT-Creation-Date: 2026-04-19 01:20+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -64,6 +64,10 @@ msgstr ""
msgid "Built-in Display"
msgstr ""
#: src/controlCenter/widgets/backlight/backlight.vala:168
msgid "Keyboard"
msgstr ""
#: src/controlCenter/widgets/quickSettings/tiles/dndTile.vala:5
msgid "Do Not Disturb"
msgstr ""
......@@ -179,7 +183,7 @@ msgstr ""
msgid "No Notifications"
msgstr ""
#: data/ui/widgets/backlight.blp:44
#: data/ui/widgets/backlight.blp:42
msgid "Brightness"
msgstr ""
......
......@@ -163,6 +163,10 @@ namespace XimperShellNotificationCenter.Widgets {
if (src.is_internal) {
return _("Built-in Display");
}
if (src.icon_name
== "keyboard-brightness-symbolic") {
return _("Keyboard");
}
return prettify_source_name (src.tooltip);
}
......@@ -399,12 +403,43 @@ namespace XimperShellNotificationCenter.Widgets {
header.append (name_label);
outer.append (header);
unowned BrightnessSource src = all_sources[index];
bool is_kbd = src.icon_name
== "keyboard-brightness-symbolic";
int max = src.sysfs != null
? src.sysfs.get_max_value () : 100;
double step = is_kbd && max > 0 && max <= 20
? 100.0 / max : 1.0;
var scl = new Gtk.Scale.with_range (
Gtk.Orientation.HORIZONTAL,
min_brightness, 100, 1);
min_brightness, 100, step);
scl.set_draw_value (false);
scl.set_round_digits (0);
scl.set_hexpand (true);
if (is_kbd && max > 0 && max <= 20) {
for (int i = 0; i <= max; i++) {
scl.add_mark (
i * 100.0 / max,
Gtk.PositionType.BOTTOM, null);
}
int snap_max = max;
bool snapping = false;
scl.value_changed.connect (() => {
if (snapping) return;
double v = scl.get_value ();
double snapped =
Math.round (v * snap_max / 100.0)
* 100.0 / snap_max;
if (v != snapped) {
snapping = true;
scl.set_value (snapped);
snapping = false;
}
});
}
outer.append (scl);
connect_source_scale (index, scl);
......
......@@ -82,12 +82,8 @@ namespace XimperShellNotificationCenter.Widgets {
public async void set_brightness (float percent) {
this.close ();
if (subsystem == "backlight") {
int actual = calc_actual (percent);
login1.set_brightness.begin (subsystem, device, actual);
} else {
login1.set_brightness.begin (subsystem, device, (uint32) percent);
}
int actual = calc_actual (percent);
login1.set_brightness.begin (subsystem, device, actual);
connect_monitor ();
}
......@@ -96,12 +92,8 @@ namespace XimperShellNotificationCenter.Widgets {
try {
var dis = new DataInputStream (fd.read (null));
string data = dis.read_line (null);
if (subsystem == "backlight") {
int val = calc_percent (int.parse (data));
this.brightness_change (val);
} else {
this.brightness_change (int.parse (data));
}
int val = calc_percent (int.parse (data));
this.brightness_change (val);
} catch (Error e) {
critical ("Error %s\n", e.message);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment