Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
pmaports
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
postmarketOS
pmaports
Commits
1c9e333d
Commit
1c9e333d
authored
4 years ago
by
Dylan Van Assche
Browse files
Options
Downloads
Patches
Plain Diff
temp/feedbackd: device-specific feedbackd themes
parent
15a07ac7
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
temp/feedbackd/0001-fbd-feedback-manager-Allow-device-specific-feedbackd.patch
+332
-0
332 additions, 0 deletions
...bd-feedback-manager-Allow-device-specific-feedbackd.patch
temp/feedbackd/APKBUILD
+37
-0
37 additions, 0 deletions
temp/feedbackd/APKBUILD
with
369 additions
and
0 deletions
temp/feedbackd/0001-fbd-feedback-manager-Allow-device-specific-feedbackd.patch
0 → 100644
+
332
−
0
View file @
1c9e333d
From 32f64705654442221bd0c1f6eaf4d473ca892c79 Mon Sep 17 00:00:00 2001
From: Dylan Van Assche <me@dylanvanassche.be>
Date: Sat, 28 Nov 2020 16:58:32 +0100
Subject: [PATCH] fbd-feedback-manager: Allow device-specific feedbackd themes
---
data/meson.build | 11 ++-
data/pine64,pinephone-1.0.json | 1 +
data/pine64,pinephone-1.1.json | 1 +
data/pine64,pinephone-1.2.json | 175 +++++++++++++++++++++++++++++++++
src/fbd-feedback-manager.c | 54 +++++++++-
5 files changed, 234 insertions(+), 8 deletions(-)
create mode 120000 data/pine64,pinephone-1.0.json
create mode 120000 data/pine64,pinephone-1.1.json
create mode 100644 data/pine64,pinephone-1.2.json
diff --git a/data/meson.build b/data/meson.build
index d90230e..19ae64a 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -44,20 +44,21 @@
configure_file(
install_dir: servicedir,
)
-theme_json = ['default.json']
+themes_json = ['default.json', 'pine64,pinephone-1.0.json',
+ 'pine64,pinephone-1.1.json', 'pine64,pinephone-1.2.json']
install_data(
- theme_json,
+ themes_json,
install_dir: feedbackd_theme_dir,
)
if json_glib_validate.found()
jsons = []
- foreach theme : theme_json
- jsons += (join_paths(meson.current_source_dir(), theme_json))
+ foreach theme : themes_json
+ jsons += (join_paths(meson.current_source_dir(), theme))
endforeach
custom_target('validate-json',
build_by_default: true,
- input: theme_json,
+ input: theme,
output: 'json_validate_stamp',
command: [json_glib_validate.path()] + jsons)
endif
diff --git a/data/pine64,pinephone-1.0.json b/data/pine64,pinephone-1.0.json
new file mode 120000
index 0000000..4de3923
--- /dev/null
+++ b/data/pine64,pinephone-1.0.json
@@ -0,0 +1 @@
+pine64,pinephone-1.2.json
\ No newline at end of file
diff --git a/data/pine64,pinephone-1.1.json b/data/pine64,pinephone-1.1.json
new file mode 120000
index 0000000..4de3923
--- /dev/null
+++ b/data/pine64,pinephone-1.1.json
@@ -0,0 +1 @@
+pine64,pinephone-1.2.json
\ No newline at end of file
diff --git a/data/pine64,pinephone-1.2.json b/data/pine64,pinephone-1.2.json
new file mode 100644
index 0000000..2b62845
--- /dev/null
+++ b/data/pine64,pinephone-1.2.json
@@ -0,0 +1,175 @@
+{
+ "name" : "default",
+ "profiles" : [
+ {
+ "name" : "full",
+ "feedbacks" : [
+ {
+ "event-name" : "alarm-clock-elapsed",
+ "type" : "Sound",
+ "effect" : "alarm-clock-elapsed"
+ },
+ {
+ "event-name" : "button-pressed",
+ "type" : "Sound",
+ "effect" : "button-pressed"
+ },
+ {
+ "event-name" : "button-released",
+ "type" : "Sound",
+ "effect" : "button-released"
+ },
+ {
+ "event-name" : "message-new-email",
+ "type" : "Sound",
+ "effect" : "message-new-email"
+ },
+ {
+ "event-name" : "message-new-instant",
+ "type" : "Sound",
+ "effect" : "message-new-instant"
+ },
+ {
+ "event-name" : "message-new-sms",
+ "type" : "Sound",
+ "effect" : "message-new-instant"
+ },
+ {
+ "event-name" : "phone-incoming-call",
+ "type" : "Sound",
+ "effect" : "phone-incoming-call"
+ },
+ {
+ "event-name" : "timeout-completed",
+ "type" : "Sound",
+ "effect" : "complete"
+ },
+ {
+ "event-name" : "theme-demo",
+ "type" : "Sound",
+ "effect" : "theme-demo"
+ },
+ {
+ "event-name" : "window-close",
+ "type" : "Sound",
+ "effect" : "theme-demo"
+ }
+ ]
+ },
+ {
+ "name" : "quiet",
+ "feedbacks" : [
+ {
+ "event-name" : "alarm-clock-elapsed",
+ "type" : "VibraPeriodic",
+ "magnitude" : 32767,
+ "duration" : 10000,
+ "fade-in-time" : 10000,
+ "fade-in-level": 4096
+ },
+ {
+ "event-name" : "bell-terminal",
+ "type" : "VibraRumble",
+ "duration" : 100
+ },
+ {
+ "event-name" : "button-pressed",
+ "type" : "VibraRumble",
+ "duration" : 80
+ },
+ {
+ "event-name" : "button-released",
+ "type" : "VibraRumble",
+ "duration" : 40
+ },
+ {
+ "event-name" : "message-new-email",
+ "type" : "VibraRumble",
+ "duration" : 750,
+ "count" : 3,
+ "pause" : 100
+ },
+ {
+ "event-name" : "message-new-instant",
+ "type" : "VibraRumble",
+ "duration" : 750
+ },
+ {
+ "event-name" : "message-new-sms",
+ "type" : "VibraRumble",
+ "duration" : 1250,
+ "count" : 2,
+ "pause" : 250
+ },
+ {
+ "event-name" : "message-sent-instant",
+ "type" : "VibraRumble",
+ "duration" : 250
+ },
+ {
+ "event-name" : "phone-incoming-call",
+ "type" : "VibraPeriodic",
+ "duration" : 10000
+ },
+ {
+ "event-name" : "timeout-completed",
+ "type" : "VibraRumble",
+ "duration" : 500
+ },
+ {
+ "event-name" : "theme-demo",
+ "type" : "VibraPeriodic",
+ "magnitude" : 32767,
+ "duration" : 5000
+ },
+ {
+ "event-name" : "window-close",
+ "type" : "VibraRumble",
+ "duration" : 75
+ }
+ ]
+ },
+ {
+ "name" : "silent",
+ "feedbacks" : [
+ {
+ "event-name" : "battery-caution",
+ "type" : "Led",
+ "color" : "red",
+ "frequency" : 5000
+ },
+ {
+ "event-name" : "phone-missed-call",
+ "type" : "Led",
+ "color" : "blue",
+ "frequency" : 3000
+ },
+ {
+ "event-name" : "message-missed-email",
+ "type" : "Led",
+ "color" : "blue",
+ "frequency" : 2000
+ },
+ {
+ "event-name" : "message-missed-instant",
+ "type" : "Led",
+ "color" : "blue",
+ "frequency" : 1000
+ },
+ {
+ "event-name" : "message-missed-notification",
+ "type" : "Led",
+ "color" : "blue",
+ "frequency" : 500
+ },
+ {
+ "event-name" : "message-missed-sms",
+ "type" : "Led",
+ "color" : "blue",
+ "frequency" : 2000
+ }
+ ]
+ }
+ ]
+}
+
diff --git a/src/fbd-feedback-manager.c b/src/fbd-feedback-manager.c
index ef508c7..a5c07ef 100644
--- a/src/fbd-feedback-manager.c
+++ b/src/fbd-feedback-manager.c
@@ -21,10 +21,13 @@
#define FEEDBACKD_SCHEMA_ID "org.sigxcpu.feedbackd"
#define FEEDBACKD_KEY_PROFILE "profile"
+#define FEEDBACKD_THEME_VAR "FEEDBACK_THEME"
#define APP_SCHEMA FEEDBACKD_SCHEMA_ID ".application"
#define APP_PREFIX "/org/sigxcpu/feedbackd/application/"
+#define DEVICE_TREE_PATH "/proc/device-tree/compatible"
+
/**
* SECTION:fbd-feedback-manager
@@ -352,18 +355,63 @@
fbd_feedback_manager_handle_end_feedback (LfbGdbusFeedback *object,
return TRUE;
}
+static gboolean
+find_config (gchar **themefile) {
+ gboolean success = FALSE;
+ g_autofree gchar *device_name = NULL;
+ g_autofree gchar *config_path = NULL;
+
+ // Try to read the device name
+ if (g_file_test(DEVICE_TREE_PATH, (G_FILE_TEST_EXISTS))) {
+ g_debug("Found device tree device name path");
+
+ // Check if feedbackd has a proper config available this device
+ if (g_file_get_contents (DEVICE_TREE_PATH, &device_name, NULL, NULL)) {
+ g_debug("Read device name: %s", device_name);
+ config_path = g_strconcat(FEEDBACKD_THEME_DIR, "/", device_name, ".json", NULL);
+ g_info("Searching for device specific themefile in %s", config_path);
+
+ // Check if theme exist
+ if (g_file_test(config_path, (G_FILE_TEST_EXISTS))) {
+ g_info("Found themefile for this device!");
+ *themefile = g_strdup(config_path);
+ success = TRUE;
+ }
+ else {
+ g_info("No feedbackd theme available for '%s', falling back to default", device_name);
+ }
+ }
+ else {
+ g_info("Unable to read device name from device tree");
+ }
+ }
+ else {
+ g_info("Device tree path does not exist: %s", DEVICE_TREE_PATH);
+ }
+
+ return success;
+}
+
static void
fbd_feedback_manager_constructed (GObject *object)
{
g_autoptr (GError) err = NULL;
FbdFeedbackManager *self = FBD_FEEDBACK_MANAGER (object);
- const gchar *themefile;
+ gchar *themefile = NULL;
G_OBJECT_CLASS (fbd_feedback_manager_parent_class)->constructed (object);
- themefile = g_getenv ("FEEDBACK_THEME");
+ // Search for device-specific configuration
+ find_config (&themefile);
+
+ // Overide themefile with environment variable if requested
+ if (g_getenv(FEEDBACKD_THEME_VAR))
+ themefile = g_strdup (g_getenv (FEEDBACKD_THEME_VAR));
+
+ // Fallback to default configuration if needed
if (!themefile)
- themefile = FEEDBACKD_THEME_DIR "/default.json";
+ themefile = g_strconcat(FEEDBACKD_THEME_DIR, "/default.json", NULL);
+ g_info("Using themefile: %s", themefile);
self->theme = fbd_feedback_theme_new_from_file (themefile, &err);
if (!self->theme) {
--
2.25.1
This diff is collapsed.
Click to expand it.
temp/feedbackd/APKBUILD
0 → 100644
+
37
−
0
View file @
1c9e333d
# Forked from Alpine to provide a newer version
pkgname
=
feedbackd
pkgver
=
0_git20200726
pkgrel
=
0
pkgdesc
=
"A daemon to provide haptic (and later more) feedback on events"
url
=
"https://source.puri.sm/Librem5/feedbackd"
arch
=
"all"
license
=
"GPL-3.0-or-later"
depends
=
"dbus"
makedepends
=
"meson glib-dev gsound-dev libgudev-dev json-glib-dev gtk-doc
vala gobject-introspection-dev"
subpackages
=
"
$pkgname
-dev"
source
=
"https://source.puri.sm/Librem5/feedbackd/-/archive/v0.0.0+
${
pkgver
#0_
}
/feedbackd-v0.0.0+
${
pkgver
#0_
}
.tar.gz
0001-fbd-feedback-manager-Allow-device-specific-feedbackd.patch"
builddir
=
"
$srcdir
/
$pkgname
-v0.0.0+
${
pkgver
#0_
}
"
options
=
"!check"
# Tests fail in QEMU
build
()
{
abuild-meson
\
-Dgtk_doc
=
false
\
.
output
meson compile
${
JOBS
:+-j
${
JOBS
}}
-C
output
}
check
()
{
meson
test
--no-rebuild
-v
-C
output
}
package
()
{
DESTDIR
=
"
$pkgdir
"
meson
install
--no-rebuild
-C
output
install
-Dm644
"
$builddir
"
/debian/feedbackd.udev
\
"
$pkgdir
"
/usr/lib/udev/rules.d/90-feedbackd.rules
}
sha512sums
=
"2a3e443c5f565dce7cdc25ade73934b5ab29c9efc6ceaa2d404111bfcd67fbc9b02893fc34559c8071aaba218686f2ba8109b2fd92a74e9f16955406ed6af6f6 feedbackd-v0.0.0+git20200726.tar.gz
3bb88ef76e4b42feebaf65c09a4a9ae28bcee3ed895940f464ab2e87352978c01d30a4138914d14cd7d92acc64ffce986f8df588a2a2acf731be910656c1ab02 0001-fbd-feedback-manager-Allow-device-specific-feedbackd.patch"
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment