diff options
-rw-r--r-- | HACKING | 17 | ||||
-rw-r--r-- | Makefile.am | 27 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | configure.ac | 22 | ||||
-rw-r--r-- | contrib/redshift.spec.in | 17 | ||||
-rw-r--r-- | data/systemd/redshift-gtk.service.in | 11 | ||||
-rw-r--r-- | data/systemd/redshift.service.in | 11 | ||||
-rw-r--r-- | po/de.po | 2 | ||||
-rw-r--r-- | po/fr.po | 2 | ||||
-rw-r--r-- | po/pt_BR.po | 2 | ||||
-rw-r--r-- | po/ru.po | 2 | ||||
-rw-r--r-- | redshift.1 | 4 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/redshift-gtk/statusicon.py | 3 | ||||
-rw-r--r-- | src/redshift-gtk/utils.py | 14 |
15 files changed, 116 insertions, 22 deletions
@@ -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 @@ -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 @@ -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" @@ -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" @@ -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" @@ -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 |