From: Antono Vasiljev <self@antono.info>
To: "Antono Vasiljev" <self@antono.info>
Cc: bug-gnu-emacs@gnu.org, emacs-devel@gnu.org
Subject: [PATCH]: lisp function for gtk-application-prefer-dark-theme
Date: Wed, 30 May 2012 17:14:54 +0300 [thread overview]
Message-ID: <87k3ztoiw1.fsf@antono.info> (raw)
In-Reply-To: <87d35r9ek5.fsf@antono.info>
[-- Attachment #1: Type: text/plain, Size: 455 bytes --]
Antono Vasiljev <self@antono.info> writes:
> Hello,
>
> I would like to be able setup emacs to use dark GTK theme variant[0].
>
> GTK apps usually provide such possibliity via GSettings property
> gtk-application-prefer-dark-theme[1]. I wonder how can it be binded to
> elisp function (best file for such function).
Replying to myself with initial patch implementing
application-prefer-dark-theme ARG
See it in action: https://vimeo.com/43078091
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: application-prefer-dark-theme implementation --]
[-- Type: text/x-diff, Size: 2886 bytes --]
From 7679c96fb785bc682b086f08482411311d12f84a Mon Sep 17 00:00:00 2001
From: Antono Vasiljev <self@antono.info>
Date: Wed, 30 May 2012 16:56:42 +0300
Subject: [PATCH] Implemented lisp function application-prefer-dark-theme
* src/xsettings.c: GtkSetting and function definition
* src/xsettings.h: EXFUN macro for application-prefer-dark-theme
---
src/xsettings.c | 32 ++++++++++++++++++++++++++++++++
src/xsettings.h | 1 +
2 files changed, 33 insertions(+)
diff --git a/src/xsettings.c b/src/xsettings.c
index 69ef22f..d8c01c7 100644
--- a/src/xsettings.c
+++ b/src/xsettings.c
@@ -201,6 +201,7 @@ struct xsettings
/* The single GSettings instance, or NULL if not connected to GSettings. */
static GSettings *gsettings_client;
+static GtkSettings *gtk_settings;
/* Callback called when something changed in GSettings. */
@@ -824,6 +825,8 @@ init_gsettings (void)
g_signal_connect (G_OBJECT (gsettings_client), "changed",
G_CALLBACK (something_changed_gsettingsCB), NULL);
+ gtk_settings = gtk_settings_get_default ();
+
val = g_settings_get_value (gsettings_client, GSETTINGS_TOOL_BAR_STYLE);
if (val)
{
@@ -1004,6 +1007,30 @@ known style. Otherwise return image. */)
return Qimage;
}
+DEFUN ("application-prefer-dark-theme",
+ Fapplication_prefer_dark_theme,
+ Sapplication_prefer_dark_theme,
+ 0, 1, 0,
+ doc: /* Set dark theme variant for application if supported by
+GUI toolkit and ARG is not nil. */)
+ (Lisp_Object arg)
+{
+ gboolean result = FALSE;
+
+#ifdef HAVE_GSETTINGS
+ if (NILP (arg) || (NUMBERP(arg) && (XINT(arg) < 0))) {
+ result = FALSE;
+ } else {
+ result = TRUE;
+ }
+
+ g_object_set (G_OBJECT (gtk_settings),
+ "gtk-application-prefer-dark-theme", result, NULL);
+#endif
+
+ return result ? Fmake_symbol (build_string ("t")) : Qnil;
+}
+
void
syms_of_xsettings (void)
{
@@ -1012,6 +1039,7 @@ syms_of_xsettings (void)
first_dpyinfo = NULL;
#ifdef HAVE_GSETTINGS
gsettings_client = NULL;
+ gtk_settings = NULL;
#endif
#ifdef HAVE_GCONF
gconf_client = NULL;
@@ -1041,6 +1069,10 @@ If this variable is nil, Emacs ignores system font changes. */);
#endif
#endif
+#ifdef HAVE_GSETTINGS
+ defsubr (&Sapplication_prefer_dark_theme);
+#endif
+
current_tool_bar_style = Qnil;
DEFSYM (Qtool_bar_style, "tool-bar-style");
defsubr (&Stool_bar_get_system_style);
diff --git a/src/xsettings.h b/src/xsettings.h
index d6b0c09..83b5cfc 100644
--- a/src/xsettings.h
+++ b/src/xsettings.h
@@ -21,6 +21,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define XSETTINGS_H
EXFUN (Ftool_bar_get_system_style, 0);
+EXFUN (Fapplication_prefer_dark_theme, 1);
extern void xsettings_initialize (struct x_display_info *dpyinfo);
extern void xft_settings_event (struct x_display_info *dpyinfo,
--
1.7.9.5
[-- Attachment #3: Type: text/plain, Size: 62 bytes --]
--
http://shelr.tv - plain text screencasts for unix ninjas
next parent reply other threads:[~2012-05-30 14:14 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87d35r9ek5.fsf@antono.info>
2012-05-30 14:14 ` Antono Vasiljev [this message]
2019-06-27 15:22 ` bug#11590: [PATCH]: lisp function for gtk-application-prefer-dark-theme Lars Ingebrigtsen
2019-11-23 14:39 ` Lars Ingebrigtsen
2020-10-15 15:03 ` Lars Ingebrigtsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87k3ztoiw1.fsf@antono.info \
--to=self@antono.info \
--cc=bug-gnu-emacs@gnu.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).