aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--HACKING17
-rw-r--r--Makefile.am27
-rw-r--r--NEWS2
-rw-r--r--configure.ac22
-rw-r--r--contrib/redshift.spec.in17
-rw-r--r--data/systemd/redshift-gtk.service.in11
-rw-r--r--data/systemd/redshift.service.in11
-rw-r--r--po/de.po2
-rw-r--r--po/fr.po2
-rw-r--r--po/pt_BR.po2
-rw-r--r--po/ru.po2
-rw-r--r--redshift.14
-rw-r--r--src/Makefile.am2
-rw-r--r--src/redshift-gtk/statusicon.py3
-rw-r--r--src/redshift-gtk/utils.py14
15 files changed, 116 insertions, 22 deletions
diff --git a/HACKING b/HACKING
index 0037827..127cd29 100644
--- a/HACKING
+++ b/HACKING
@@ -8,9 +8,17 @@ The bootstrap script will use autotools to set up the build environment
and create the `configure` script.
Use `./configure --help' for options. Use `--prefix' to make an install in
-your home directory. This is necessary to test python scripts. Example:
+your home directory. This is necessary to test python scripts. The systemd
+user unit directory should be set to avoid writing to the system location.
- $ ./configure --prefix=$HOME/redshift/root
+Systemd will look for the unit files in `~/.config/systemd/user` so this
+directory can be used as a target if the unit files will be used. Otherwise
+the location can be set to `no` to disable the systemd files.
+
+Example:
+
+ $ ./configure --prefix=$HOME/redshift/root \
+ --with-systemduserunitdir=$HOME/.config/systemd/user
Now, build the files:
@@ -21,10 +29,9 @@ prefix directory run:
$ make install
-You can now run the python scripts. Example:
+You can now run the python script. Example:
- $ PYTHONHOME=$HOME/redshift/root/lib/python2.7/site-packages \
- $HOME/redshift/root/bin/redshift-gtk
+ $ $HOME/redshift/root/bin/redshift-gtk
Depenencies
diff --git a/Makefile.am b/Makefile.am
index f3109ed..675fda8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,6 +2,10 @@
SUBDIRS = src po
ACLOCAL_AMFLAGS = -I m4
+# Install systemd user unit files locally for distcheck
+DISTCHECK_CONFIGURE_FLAGS = \
+ --with-systemduserunitdir=$$dc_install_base/$(systemduserunitdir)
+
UPDATE_ICON_CACHE = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor || :
EXTRA_ROOTDOC_FILES = \
@@ -25,6 +29,10 @@ _UBUNTU_MONO_LIGHT_FILES = \
_DESKTOP_FILES = \
data/applications/redshift-gtk.desktop
+SYSTEMD_USER_UNIT_IN_FILES = \
+ data/systemd/redshift.service.in \
+ data/systemd/redshift-gtk.service.in
+
# Icons
if ENABLE_GUI
@@ -55,15 +63,32 @@ uninstall-hook:
$(UPDATE_ICON_CACHE);
endif
+
# man page
dist_man1_MANS = redshift.1
+
+# Systemd service files
+if ENABLE_SYSTEMD
+systemduserunit_DATA = $(SYSTEMD_USER_UNIT_IN_FILES:.service.in=.service)
+endif
+
+$(systemduserunit_DATA): $(SYSTEMD_USER_UNIT_IN_FILES) Makefile
+ $(AM_V_GEN)$(MKDIR_P) $(@D) && \
+ sed -e "s|\@bindir\@|$(bindir)|g" $< > $@
+
+
+
EXTRA_DIST = \
$(EXTRA_ROOTDOC_FILES) \
$(_HICOLOR_FILES) \
$(_UBUNTU_MONO_DARK_FILES) \
$(_UBUNTU_MONO_LIGHT_FILES) \
- $(_DESKTOP_FILES)
+ $(_DESKTOP_FILES) \
+ $(SYSTEMD_USER_UNIT_IN_FILES)
+
+CLEANFILES = $(systemduserunit_DATA)
+
# Update PO translations
.PHONY: update-po
diff --git a/NEWS b/NEWS
index 121afe7..64dded0 100644
--- a/NEWS
+++ b/NEWS
@@ -88,7 +88,7 @@ v0.4 (2010-01-07)
* Restore gamma ramps on program exit.
v0.3 (2009-12-28)
-* Continously adjust color temperature. One shot mode can be selected
+* Continuously adjust color temperature. One shot mode can be selected
with a command line switch.
* Allow selection of X screen to apply adjustments to.
diff --git a/configure.ac b/configure.ac
index 6679d70..8c6b079 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
-AC_INIT([redshift], [1.8], [https://bugs.launchpad.net/redshift])
+AC_INIT([redshift], [1.8], [https://github.com/jonls/redshift/issues])
AC_CONFIG_SRCDIR([src/redshift.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign subdir-objects dist-xz])
@@ -186,6 +186,25 @@ AS_IF([test "x$enable_ubuntu" != xno], [
])
AM_CONDITIONAL([ENABLE_UBUNTU], [test "x$enable_ubuntu" != xno])
+
+# Check for systemd
+PKG_PROG_PKG_CONFIG
+AC_MSG_CHECKING([Directory to install systemd user unit files])
+AC_ARG_WITH([systemduserunitdir],
+ [AS_HELP_STRING([--with-systemduserunitdir=<dir>],
+ [Directory for systemd user unit files])],
+ [], [with_systemduserunitdir=$($PKG_CONFIG --variable=systemduserunitdir systemd)])
+AS_IF([test -n "$with_systemduserunitdir" -a "x$with_systemduserunitdir" != xno], [
+ AC_SUBST([systemduserunitdir], [$with_systemduserunitdir])
+ AC_MSG_RESULT([$systemduserunitdir])
+ enable_systemd=yes
+], [
+ AC_MSG_RESULT([not enabled])
+ enable_systemd=no
+])
+AM_CONDITIONAL([ENABLE_SYSTEMD], [test "x$enable_systemd" != xno])
+
+
# Checks for header files.
AC_CHECK_HEADERS([locale.h stdint.h stdlib.h string.h unistd.h signal.h])
@@ -226,4 +245,5 @@ echo "
GUI: ${enable_gui}
Ubuntu icons: ${enable_ubuntu}
+ systemd units: ${enable_systemd} ${systemduserunitdir}
"
diff --git a/contrib/redshift.spec.in b/contrib/redshift.spec.in
index 0f4b896..3557d3e 100644
--- a/contrib/redshift.spec.in
+++ b/contrib/redshift.spec.in
@@ -7,9 +7,11 @@ License: GPLv3+
URL: http://jonls.dk/redshift/
Source0: http://launchpad.net/redshift/trunk/%{version}/+download/%{name}-%{version}.tar.bz2
BuildRequires: gettext-devel
-BuildRequires: libXrandr-devel
+BuildRequires: libX11-devel
BuildRequires: libXxf86vm-devel
+BuildRequires: libxcb-devel
BuildRequires: geoclue-devel
+BuildRequires: systemd
%description
Redshift adjusts the color temperature of your screen according to your
@@ -27,10 +29,10 @@ This package provides the base program.
%package -n %{name}-gtk
Summary: GTK integration for Redshift
Group: Applications/System
-BuildRequires: python2
+BuildRequires: python3-devel >= 3.3
BuildRequires: desktop-file-utils
-Requires: pygobject3-base
-Requires: pyxdg
+Requires: python3-gobject
+Requires: python3-pyxdg
Requires: %{name} = %{version}-%{release}
Obsoletes: gtk-redshift < %{version}-%{release}
@@ -42,7 +44,7 @@ temperature adjustment program.
%setup -q
%build
-%configure --enable-gui --enable-geoclue --enable-randr --enable-vidmode
+%configure --enable-gui --enable-geoclue --enable-randr --enable-vidmode --with-systemduserunitdir=%{_userunitdir}
make %{?_smp_mflags} V=1
%install
@@ -68,11 +70,12 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%doc COPYING NEWS README README-colorramp
%{_bindir}/redshift
%{_mandir}/man1/*
+%{_userunitdir}/*
%files -n %{name}-gtk
%defattr(-,root,root,-)
%{_bindir}/redshift-gtk
-%{python_sitelib}/*
+%{python3_sitelib}/redshift_gtk/
%{_datadir}/icons/hicolor/scalable/apps/redshift*.svg
%{_datadir}/applications/redshift-gtk.desktop
@@ -99,7 +102,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
- Change default geoclue provider from Ubuntu GeoIP to Hostip
- Remove manual Ubuntu icons uninstall
-* Sun Feb 28 2011 Milos Komarcevic <kmilos@gmail.com> - 1.6-3
+* Mon Feb 28 2011 Milos Komarcevic <kmilos@gmail.com> - 1.6-3
- Fix for clock applet detection (#661145)
- Require pyxdg explicitly (#675804)
diff --git a/data/systemd/redshift-gtk.service.in b/data/systemd/redshift-gtk.service.in
new file mode 100644
index 0000000..4675ccf
--- /dev/null
+++ b/data/systemd/redshift-gtk.service.in
@@ -0,0 +1,11 @@
+[Unit]
+Description=Redshift display colour temperature adjustment (GUI)
+Documentation=http://jonls.dk/redshift/
+After=display-manager.service
+
+[Service]
+ExecStart=@bindir@/redshift-gtk
+Restart=always
+
+[Install]
+WantedBy=default.target
diff --git a/data/systemd/redshift.service.in b/data/systemd/redshift.service.in
new file mode 100644
index 0000000..bc51514
--- /dev/null
+++ b/data/systemd/redshift.service.in
@@ -0,0 +1,11 @@
+[Unit]
+Description=Redshift display colour temperature adjustment
+Documentation=http://jonls.dk/redshift/
+After=display-manager.service
+
+[Service]
+ExecStart=@bindir@/redshift
+Restart=always
+
+[Install]
+WantedBy=default.target
diff --git a/po/de.po b/po/de.po
index 93f0589..7f0cc02 100644
--- a/po/de.po
+++ b/po/de.po
@@ -630,7 +630,7 @@ msgstr "Standort: %f, %f\n"
#~ " \t\t(Type `list' to see available providers)\n"
#~ " -m METHOD\tMethod to use to set color temperature\n"
#~ " \t\t(Type `list' to see available methods)\n"
-#~ " -o\t\tOne shot mode (do not continously adjust color temperature)\n"
+#~ " -o\t\tOne shot mode (do not continuously adjust color temperature)\n"
#~ " -x\t\tReset mode (remove adjustment from screen)\n"
#~ " -r\t\tDisable temperature transitions\n"
#~ " -t DAY:NIGHT\tColor temperature to set at daytime/night\n"
diff --git a/po/fr.po b/po/fr.po
index ee0b5e2..24a517f 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -641,7 +641,7 @@ msgstr "Localisation: %f, %f\n"
#~ " \t\t(Type `list' to see available providers)\n"
#~ " -m METHOD\tMethod to use to set color temperature\n"
#~ " \t\t(Type `list' to see available methods)\n"
-#~ " -o\t\tOne shot mode (do not continously adjust color temperature)\n"
+#~ " -o\t\tOne shot mode (do not continuously adjust color temperature)\n"
#~ " -x\t\tReset mode (remove adjustment from screen)\n"
#~ " -r\t\tDisable temperature transitions\n"
#~ " -t DAY:NIGHT\tColor temperature to set at daytime/night\n"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 60fbd9d..c42d2e3 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -637,7 +637,7 @@ msgstr "Localização: %fº, %fº\n"
#~ " \t\t(Type `list' to see available providers)\n"
#~ " -m METHOD\tMethod to use to set color temperature\n"
#~ " \t\t(Type `list' to see available methods)\n"
-#~ " -o\t\tOne shot mode (do not continously adjust color temperature)\n"
+#~ " -o\t\tOne shot mode (do not continuously adjust color temperature)\n"
#~ " -x\t\tReset mode (remove adjustment from screen)\n"
#~ " -r\t\tDisable temperature transitions\n"
#~ " -t DAY:NIGHT\tColor temperature to set at daytime/night\n"
diff --git a/po/ru.po b/po/ru.po
index b268910..2c18ee6 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -641,7 +641,7 @@ msgstr "Местоположение: %f°, %f°\n"
#~ " -g R:G:B\tAdditional gamma correction to apply\n"
#~ " -l LAT:LON\tYour current location\n"
#~ " -m METHOD\tMethod to use to set color temperature (randr or vidmode)\n"
-#~ " -o\t\tOne shot mode (do not continously adjust color temperature)\n"
+#~ " -o\t\tOne shot mode (do not continuously adjust color temperature)\n"
#~ " -r\t\tDisable initial temperature transition\n"
#~ " -s SCREEN\tX screen to apply adjustments to\n"
#~ " -t DAY:NIGHT\tColor temperature to set at daytime/night\n"
diff --git a/redshift.1 b/redshift.1
index f650d8d..fbf7bdf 100644
--- a/redshift.1
+++ b/redshift.1
@@ -55,7 +55,7 @@ Method to use to set color temperature
(Type `list' to see available methods)
.TP
\fB\-o\fR
-One shot mode (do not continously adjust color temperature)
+One shot mode (do not continuously adjust color temperature)
.TP
\fB\-O\fR TEMP
One shot manual mode (set color temperature)
@@ -129,7 +129,7 @@ command line:
temp\-day=5700
temp\-night=3600
gamma=0.8
-adjustment\-method=vidmode
+adjustment\-method=randr
location\-provider=manual
[\fBmanual\fR]
diff --git a/src/Makefile.am b/src/Makefile.am
index cbf454f..e83073b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -3,7 +3,7 @@ SUBDIRS = redshift-gtk
# I18n
localedir = $(datadir)/locale
-INCLUDES = -DLOCALEDIR=\"$(localedir)\"
+AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\"
# redshift Program
bin_PROGRAMS = redshift
diff --git a/src/redshift-gtk/statusicon.py b/src/redshift-gtk/statusicon.py
index 6174aec..6877eac 100644
--- a/src/redshift-gtk/statusicon.py
+++ b/src/redshift-gtk/statusicon.py
@@ -316,7 +316,10 @@ class RedshiftStatusIcon(object):
os.kill(self.process[0], signal.SIGINT)
os.waitpid(self.process[0], 0)
+
def run():
+ utils.setproctitle('redshift-gtk')
+
# Internationalisation
gettext.bindtextdomain('redshift', defs.LOCALEDIR)
gettext.textdomain('redshift')
diff --git a/src/redshift-gtk/utils.py b/src/redshift-gtk/utils.py
index 723d4d8..4d3b619 100644
--- a/src/redshift-gtk/utils.py
+++ b/src/redshift-gtk/utils.py
@@ -17,7 +17,9 @@
# Copyright (c) 2010 Francesco Marella <francesco.marella@gmail.com>
# Copyright (c) 2011 Jon Lund Steffensen <jonlst@gmail.com>
+import ctypes
import os
+import sys
from xdg import BaseDirectory as base
from xdg import DesktopEntry as desktop
@@ -62,3 +64,15 @@ def set_autostart(active):
for key, values in AUTOSTART_KEYS:
dfile.set(key, values[active])
dfile.write(filename=path)
+
+
+def setproctitle(title):
+ try:
+ libc = ctypes.cdll.LoadLibrary("libc.so.6")
+ except OSError:
+ return
+ buf = ctypes.create_string_buffer(title.encode(sys.getdefaultencoding()))
+ try:
+ libc.prctl(15, ctypes.byref(buf), 0, 0, 0)
+ except AttributeError:
+ return # Strange libc, just skip this