]> git.donarmstrong.com Git - deb_pkgs/autorandr.git/log
deb_pkgs/autorandr.git
8 years agoRun scripts from $XDG_CONFIG_DIRS as well (See pull request #43)
Phillip Berndt [Thu, 7 Jan 2016 14:02:51 +0000 (15:02 +0100)]
Run scripts from $XDG_CONFIG_DIRS as well (See pull request #43)

8 years agoPass meta-information to block scripts
Phillip Berndt [Sun, 3 Jan 2016 11:27:59 +0000 (12:27 +0100)]
Pass meta-information to block scripts

Currently, $AUTORANDR_CURRENT_PROFILES and $AUTORANDR_CURRENT_PROFILE
are supported, containing a colon-separated list (or the first,
respectively) of active profiles. If no profile was detected as
active/current, both variables will be empty.

This fixes #42

8 years agopm-utils script: Check for xinit as a fallback
Phillip Berndt [Mon, 7 Dec 2015 08:49:57 +0000 (09:49 +0100)]
pm-utils script: Check for xinit as a fallback

8 years agoRemove autorandr_monitor, closes bug #41
Phillip Berndt [Sat, 5 Dec 2015 16:04:35 +0000 (17:04 +0100)]
Remove autorandr_monitor, closes bug #41

8 years agopm-utils script: Potential fixes for bugs #30 and #39
Phillip Berndt [Fri, 4 Dec 2015 11:53:17 +0000 (12:53 +0100)]
pm-utils script: Potential fixes for bugs #30 and #39

8 years agoMerge pull request #40 from blueyed/executable-pm-script
Phillip Berndt [Thu, 3 Dec 2015 08:17:57 +0000 (09:17 +0100)]
Merge pull request #40 from blueyed/executable-pm-script

The 40autorandr script needs to be executable for udev

8 years agoThe 40autorandr script needs to be executable for udev
Daniel Hahler [Wed, 2 Dec 2015 11:43:19 +0000 (12:43 +0100)]
The 40autorandr script needs to be executable for udev

Otherwise it will not be executed:
… systemd-udevd[32358]: failed to execute '/etc/pm/sleep.d/40autorandr' '/etc/pm/sleep.d/40autorandr thaw': Permission denied
… systemd-udevd[32355]: Process '/etc/pm/sleep.d/40autorandr thaw' failed with exit code 2.

8 years agoOnly use name of executable in systemd detection (See #38)
Phillip Berndt [Tue, 24 Nov 2015 18:10:24 +0000 (19:10 +0100)]
Only use name of executable in systemd detection (See #38)

8 years agoImproved systemd detection (See bug #38, thanks to @blueyed)
Phillip Berndt [Tue, 24 Nov 2015 18:05:46 +0000 (19:05 +0100)]
Improved systemd detection (See bug #38, thanks to @blueyed)

8 years agoSkip --transform unless necessary (See #37)
Phillip Berndt [Tue, 17 Nov 2015 09:27:43 +0000 (10:27 +0100)]
Skip --transform unless necessary (See #37)

8 years agoReorganized import statements
Phillip Berndt [Wed, 11 Nov 2015 14:24:54 +0000 (15:24 +0100)]
Reorganized import statements

8 years agoMoved contributed scripts/files to the contrib/ folder and updated the Makefile to...
Phillip Berndt [Wed, 11 Nov 2015 10:21:23 +0000 (11:21 +0100)]
Moved contributed scripts/files to the contrib/ folder and updated the Makefile to autodetect the system

systemd service file contributed by github user @blueyed. see #29.

8 years agoPrint configuration differences for failed actions if --debug is set
Phillip Berndt [Mon, 8 Jun 2015 10:35:44 +0000 (12:35 +0200)]
Print configuration differences for failed actions if --debug is set

8 years agoMerge pull request #36 from kepi/feature-nitrogen
Phillip Berndt [Sat, 1 Aug 2015 08:30:26 +0000 (10:30 +0200)]
Merge pull request #36 from kepi/feature-nitrogen

Contrib: script for changing wallpapers on change

8 years agoContrib: script for changing wallpapers on change
Kepi [Fri, 31 Jul 2015 23:53:32 +0000 (01:53 +0200)]
Contrib: script for changing wallpapers on change

Simple script which allows you to save nitrogen's wallpaper setup
for current profile and restore it when profile is loaded.

Useful in case you are moving between different monitor setups and
orientations.

8 years agoOnly use connected displays in virtual profiles
Phillip Berndt [Sat, 30 May 2015 17:16:21 +0000 (19:16 +0200)]
Only use connected displays in virtual profiles

8 years agoAdd --debug for verbose output
Phillip Berndt [Sat, 16 May 2015 19:22:16 +0000 (21:22 +0200)]
Add --debug for verbose output

This currently prints differences between detected/to-be-loaded and
current configurations.

See bug #27

8 years agoShow (current) after the current profile in the default output
Phillip Berndt [Tue, 19 May 2015 11:37:33 +0000 (13:37 +0200)]
Show (current) after the current profile in the default output

8 years agoAdded --skip-options to ignore certain xrandr options
Phillip Berndt [Sun, 17 May 2015 09:27:36 +0000 (11:27 +0200)]
Added --skip-options to ignore certain xrandr options

See issue #26. This feature is required if tools like redshift interfere
with autorandr: Redshift e.g. continuously adjusts the --gamma values
such that autorandr never recognizes its configurations. This option
allows users to tell autorandr to ignore, and not fiddle with, --gamma.

8 years agoMerge pull request #31 from blueyed/improve-usage-error
Phillip Berndt [Sun, 17 May 2015 16:47:37 +0000 (18:47 +0200)]
Merge pull request #31 from blueyed/improve-usage-error

Improve usage information with GetoptError

8 years agoMerge pull request #32 from blueyed/py3
Phillip Berndt [Sun, 17 May 2015 16:46:25 +0000 (18:46 +0200)]
Merge pull request #32 from blueyed/py3

py3: import reduce from functools

8 years agopy3: import reduce from functools
Daniel Hahler [Sun, 17 May 2015 15:55:26 +0000 (17:55 +0200)]
py3: import reduce from functools

This works for Python 2, too (tested on 2.6 and 2.7).

8 years agoImprove usage information with GetoptError
Daniel Hahler [Sun, 17 May 2015 15:47:59 +0000 (17:47 +0200)]
Improve usage information with GetoptError

 - print to stderr
 - do not display help automatically

8 years agoFixed --gamma value handling
Phillip Berndt [Sun, 17 May 2015 15:44:52 +0000 (17:44 +0200)]
Fixed --gamma value handling

8 years agoAdded @blueyed to the contributors list
Phillip Berndt [Sun, 17 May 2015 08:12:07 +0000 (10:12 +0200)]
Added @blueyed to the contributors list

8 years agoReformated main exception handler (Breaks PEP 8; I'm not a fan of the 80 cols rule)
Phillip Berndt [Sun, 17 May 2015 08:09:41 +0000 (10:09 +0200)]
Reformated main exception handler (Breaks PEP 8; I'm not a fan of the 80 cols rule)

8 years agoImprove main exception handling: display traceback, handle BdbQuit
Daniel Hahler [Sat, 16 May 2015 23:43:19 +0000 (01:43 +0200)]
Improve main exception handling: display traceback, handle BdbQuit

It handles "empty" exceptions (e.g. from BdbQuit (via ipdb.set_trace))
better and just makes Python display any uncaught exceptions (with
traceback) by raising them.

This removes the additional newlines, too.

9 years agoFixed exception handler
Phillip Berndt [Tue, 14 Apr 2015 07:23:00 +0000 (09:23 +0200)]
Fixed exception handler

9 years agoMode names need not be of the form <width>x<height>, but can be arbitrary
Phillip Berndt [Tue, 14 Apr 2015 07:15:39 +0000 (09:15 +0200)]
Mode names need not be of the form <width>x<height>, but can be arbitrary

In the hope for _some_ sanity, the code still asumes that there is no
whitespace in mode names. This fixes #25.

9 years agoMore useful error messages
Phillip Berndt [Fri, 10 Apr 2015 09:36:48 +0000 (11:36 +0200)]
More useful error messages

9 years agoFixed output parsing error messages
Phillip Berndt [Wed, 8 Apr 2015 08:14:55 +0000 (10:14 +0200)]
Fixed output parsing error messages

9 years agoDetect modes that have *current at the end of the mode line
Phillip Berndt [Wed, 8 Apr 2015 08:14:39 +0000 (10:14 +0200)]
Detect modes that have *current at the end of the mode line

9 years agoDetect tracking/border information for --panning
Phillip Berndt [Wed, 8 Apr 2015 08:14:19 +0000 (10:14 +0200)]
Detect tracking/border information for --panning

9 years agoDetect negative positions
Phillip Berndt [Wed, 8 Apr 2015 08:13:36 +0000 (10:13 +0200)]
Detect negative positions

9 years agoSupport for RandR 1.3 --panning
Phillip Berndt [Mon, 6 Apr 2015 15:51:09 +0000 (17:51 +0200)]
Support for RandR 1.3 --panning

9 years agoA screen can be disabled yet primary
Phillip Berndt [Sun, 5 Apr 2015 23:26:32 +0000 (01:26 +0200)]
A screen can be disabled yet primary

9 years agoTemporarily undo transformations when applying configurations
Phillip Berndt [Mon, 30 Mar 2015 06:05:42 +0000 (08:05 +0200)]
Temporarily undo transformations when applying configurations

Haswell chips have problems if this is not done, they report:

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  7 (RRSetScreenSize)
  Serial number of failed request:  41
  Current serial number in output stream:  43

This commit circumvents this problem.

9 years agoScreens can be connected but unused, but also disconnected and still in use
Phillip Berndt [Fri, 27 Mar 2015 16:33:08 +0000 (17:33 +0100)]
Screens can be connected but unused, but also disconnected and still in use

Detect that.

9 years agoUpdated README with missing contributors
Phillip Berndt [Thu, 26 Mar 2015 15:13:54 +0000 (16:13 +0100)]
Updated README with missing contributors

9 years agoUse a dummy EDID if an EDID is unavailable for an output
Phillip Berndt [Thu, 26 Mar 2015 08:28:59 +0000 (09:28 +0100)]
Use a dummy EDID if an EDID is unavailable for an output

9 years agoMerge pull request #22 from victorhaggqvist/patch-1
Phillip Berndt [Tue, 24 Mar 2015 10:41:32 +0000 (11:41 +0100)]
Merge pull request #22 from victorhaggqvist/patch-1

Fix `block` script filename in Python version

9 years agofix: make block script name correspond to docs
Victor Häggqvist [Mon, 23 Mar 2015 21:01:59 +0000 (22:01 +0100)]
fix: make block script name correspond to docs

9 years agotypo
Phillip Berndt [Sun, 8 Mar 2015 17:16:53 +0000 (18:16 +0100)]
typo

9 years agoPrevent, in apply_configuration, a xrandr call that disables all screens
Phillip Berndt [Sun, 8 Mar 2015 17:14:06 +0000 (18:14 +0100)]
Prevent, in apply_configuration, a xrandr call that disables all screens

See pull request #20

9 years agoLeave one monitor active when applying configurations
Phillip Berndt [Sat, 7 Mar 2015 17:44:25 +0000 (18:44 +0100)]
Leave one monitor active when applying configurations

See https://github.com/phillipberndt/autorandr/pull/20

9 years agoAccept empty lines in setup files
Phillip Berndt [Sat, 7 Mar 2015 17:45:20 +0000 (18:45 +0100)]
Accept empty lines in setup files

9 years agoExplain why we enable outputs in pairs of two
Phillip Berndt [Fri, 6 Mar 2015 08:45:55 +0000 (09:45 +0100)]
Explain why we enable outputs in pairs of two

See issue #21

9 years agoDetect if xrandr fails completely
Phillip Berndt [Mon, 23 Feb 2015 10:20:43 +0000 (11:20 +0100)]
Detect if xrandr fails completely

Xrandr 1.0.2 didn't output --verbose like output at all. This change
detects that and outputs an error, instead of producing an empty
configuration.

9 years agoEnforce stable output order
Phillip Berndt [Mon, 23 Feb 2015 10:20:26 +0000 (11:20 +0100)]
Enforce stable output order

This is useful for automated testing

9 years agoRemember the last choice for competing configurations (with equal setups)
Phillip Berndt [Mon, 23 Feb 2015 09:42:54 +0000 (10:42 +0100)]
Remember the last choice for competing configurations (with equal setups)

fixes #16

9 years agoIf disabling outputs failed, try to disable them together with the second xrandr...
Phillip Berndt [Wed, 18 Feb 2015 07:02:18 +0000 (08:02 +0100)]
If disabling outputs failed, try to disable them together with the second xrandr call

My notbook complains when I remove it from its docking station that
RRSetScreenSize failed if I disable a screen. Issuing the whole xrandr
command in one single call works fine.

This is related to f4cce4dc3928ba3f917208c31693abc807b1ff3c

9 years agoFix "transform" parsing
Phillip Berndt [Tue, 17 Feb 2015 10:07:24 +0000 (11:07 +0100)]
Fix "transform" parsing

See related commit 376005b

9 years agoFix parsing of EDID
Phillip Berndt [Tue, 17 Feb 2015 09:51:45 +0000 (10:51 +0100)]
Fix parsing of EDID

See bug #19.

9 years agoTransformation matrices can contain negative indices
Phillip Berndt [Wed, 11 Feb 2015 09:54:16 +0000 (10:54 +0100)]
Transformation matrices can contain negative indices

9 years agoFollow XDG completely: Also load configurations from the system-wide directories
Phillip Berndt [Mon, 9 Feb 2015 07:24:25 +0000 (08:24 +0100)]
Follow XDG completely: Also load configurations from the system-wide directories

I doubt this will be used widely, but there clearly is a use-case for
multi-user or centrally administrated systems. Per-user profiles always
override system-wide profiles.

9 years agoUpdated help texts with XDG directory
Phillip Berndt [Mon, 9 Feb 2015 07:24:10 +0000 (08:24 +0100)]
Updated help texts with XDG directory

9 years agoFixed bash-completion (Lacked an `else')
Phillip Berndt [Mon, 9 Feb 2015 07:15:13 +0000 (08:15 +0100)]
Fixed bash-completion (Lacked an `else')

9 years agoUse XDG Base Directory Specification for config files
Benjamin Cremer [Fri, 6 Feb 2015 19:47:44 +0000 (20:47 +0100)]
Use XDG Base Directory Specification for config files

9 years agoPython 3 issue in XRANDR_DEFAULTS
Phillip Berndt [Tue, 27 Jan 2015 07:30:30 +0000 (08:30 +0100)]
Python 3 issue in XRANDR_DEFAULTS

9 years agoRemoved legacy autorandr (see the legacy branch)
Phillip Berndt [Tue, 27 Jan 2015 07:25:04 +0000 (08:25 +0100)]
Removed legacy autorandr (see the legacy branch)

9 years agoLog to stderr (Required to allow users to redirect --dry-run output)
Phillip Berndt [Mon, 26 Jan 2015 06:48:06 +0000 (07:48 +0100)]
Log to stderr (Required to allow users to redirect --dry-run output)

9 years agoRun xrandr disabling connected, but inactive outputs before any other xrandr commands
Phillip Berndt [Mon, 26 Jan 2015 06:46:45 +0000 (07:46 +0100)]
Run xrandr disabling connected, but inactive outputs before any other xrandr commands

Related to bug #13

9 years agoPython version: Fix detection of already loaded old setups with md5sum'ed EDID
Phillip Berndt [Mon, 26 Jan 2015 06:45:48 +0000 (07:45 +0100)]
Python version: Fix detection of already loaded old setups with md5sum'ed EDID

9 years agoPython version: Remove default values from existing configurations
Phillip Berndt [Mon, 26 Jan 2015 06:45:28 +0000 (07:45 +0100)]
Python version: Remove default values from existing configurations

9 years agoPython version: xrandr < 1.3.1 does not report it's version even with -v
Phillip Berndt [Fri, 23 Jan 2015 12:06:07 +0000 (13:06 +0100)]
Python version: xrandr < 1.3.1 does not report it's version even with -v

9 years agoPython version: xrandr 1.2.0 didn't output a *current modeline, ignore the missing...
Phillip Berndt [Fri, 23 Jan 2015 10:14:21 +0000 (11:14 +0100)]
Python version: xrandr 1.2.0 didn't output a *current modeline, ignore the missing information

9 years agoDo not fail if no profile directory exists yet
Phillip Berndt [Fri, 23 Jan 2015 06:54:04 +0000 (07:54 +0100)]
Do not fail if no profile directory exists yet

9 years agoallow legacy autorandr to be off while connected
Rasmus Wriedt Larsen [Thu, 22 Jan 2015 20:50:05 +0000 (21:50 +0100)]
allow legacy autorandr to be off while connected

9 years agoKeep outputs with edid when loading profiles
Rasmus Wriedt Larsen [Thu, 22 Jan 2015 14:29:08 +0000 (15:29 +0100)]
Keep outputs with edid when loading profiles

fixes #13

9 years agoAdd @RasmusWL as a contributor
Phillip Berndt [Thu, 22 Jan 2015 13:28:27 +0000 (14:28 +0100)]
Add @RasmusWL as a contributor

9 years agoCorrectly handle connected, but unused screens.
Phillip Berndt [Thu, 22 Jan 2015 13:27:29 +0000 (14:27 +0100)]
Correctly handle connected, but unused screens.

bugs #13

9 years agoMerge pull request #14 from RasmusWL/fix-debug_regexp
Phillip Berndt [Thu, 22 Jan 2015 13:18:48 +0000 (14:18 +0100)]
Merge pull request #14 from RasmusWL/fix-debug_regexp

fix infinite loop in debug_regexp

9 years agofix infinite loop in debug_regexp
Rasmus Wriedt Larsen [Thu, 22 Jan 2015 12:29:54 +0000 (13:29 +0100)]
fix infinite loop in debug_regexp

9 years agoPython version: Correctly determine the mode of transformed outputs
Phillip Berndt [Thu, 22 Jan 2015 10:41:48 +0000 (11:41 +0100)]
Python version: Correctly determine the mode of transformed outputs

9 years agoExplained why there are two versions of autorandr here
Phillip Berndt [Fri, 16 Jan 2015 07:51:01 +0000 (08:51 +0100)]
Explained why there are two versions of autorandr here

This is a temporary solution.

9 years agoMerge branch 'rate' into license
Phillip Berndt [Fri, 16 Jan 2015 07:32:25 +0000 (08:32 +0100)]
Merge branch 'rate' into license

9 years agoPrefer xrandr edid probing over sysfs
Phillip Berndt [Fri, 16 Jan 2015 07:26:41 +0000 (08:26 +0100)]
Prefer xrandr edid probing over sysfs

To normalize the fingerprints, we have to fiddle a lot with the sysfs
variant. The awk code is much simpler. In the long run I'd like to
remove the sysfs code altogether.

9 years agoAdjusted license information
Phillip Berndt [Fri, 16 Jan 2015 07:24:04 +0000 (08:24 +0100)]
Adjusted license information

See https://github.com/phillipberndt/autorandr/issues/7
and https://github.com/wertarbyte/autorandr/issues/24, where the
original author wrote:

> After a while, I finally got around to this - licence should be GPLv3,
> so feel free to package :-)

9 years agoxxd replacement for systems without xxd
Phillip Berndt [Fri, 16 Jan 2015 07:22:11 +0000 (08:22 +0100)]
xxd replacement for systems without xxd

9 years agoRevert "Removed non-trivial code by Stefan Tomanek"
Phillip Berndt [Fri, 16 Jan 2015 06:51:53 +0000 (07:51 +0100)]
Revert "Removed non-trivial code by Stefan Tomanek"

This reverts commit bbe8f8b547256542ad332bfee1614cf7137f9e5d.
See https://github.com/wertarbyte/autorandr/issues/24

Conflicts:
autorandr

9 years agoPython: Python 3 compatibility restored
Phillip Berndt [Wed, 14 Jan 2015 07:56:03 +0000 (08:56 +0100)]
Python: Python 3 compatibility restored

9 years agoPython version: Better error message for missing profiles
Phillip Berndt [Mon, 12 Jan 2015 09:39:28 +0000 (10:39 +0100)]
Python version: Better error message for missing profiles

9 years agoPython version: Add unused outputs' --off parameter upon loading, and ignore stored...
Phillip Berndt [Mon, 12 Jan 2015 09:36:15 +0000 (10:36 +0100)]
Python version: Add unused outputs' --off parameter upon loading, and ignore stored --off parameters

9 years agoPython version: Add unused options on the fly when loading, rather than when storing...
Phillip Berndt [Mon, 12 Jan 2015 09:35:21 +0000 (10:35 +0100)]
Python version: Add unused options on the fly when loading, rather than when storing, configurations

9 years agoPython version: Bugfix, --dry-run shouldn't always be used
Phillip Berndt [Thu, 8 Jan 2015 09:54:57 +0000 (10:54 +0100)]
Python version: Bugfix, --dry-run shouldn't always be used

9 years agoPython version: Option handling for unrecognized options
Phillip Berndt [Thu, 8 Jan 2015 08:55:36 +0000 (09:55 +0100)]
Python version: Option handling for unrecognized options

9 years agoPython version: Python3 compatible error handling
Phillip Berndt [Thu, 8 Jan 2015 08:54:05 +0000 (09:54 +0100)]
Python version: Python3 compatible error handling

9 years agoPython version: Added error messages
Phillip Berndt [Thu, 8 Jan 2015 08:51:01 +0000 (09:51 +0100)]
Python version: Added error messages

9 years agoMerge pull request #10 from tachylatus/license
Phillip Berndt [Wed, 7 Jan 2015 18:09:00 +0000 (19:09 +0100)]
Merge pull request #10 from tachylatus/license

Fix for python3 TypeError for 'dict_keys'

9 years agoFix for python3 TypeError for 'dict_keys'
tachylatus [Wed, 7 Jan 2015 11:42:48 +0000 (12:42 +0100)]
Fix for python3 TypeError for 'dict_keys'

TypeError: 'dict_keys' object does not support indexing

Explanation:
In python2x, edid_map.keys() returned a list.
With python3.x, it returns a dict_keys object, which behaves more like a set instead of list.

Inspired from:
http://stackoverflow.com/questions/17322668/xi-xj-xj-xi-typeerror-dict-keys-object-does-not-support-indexing

I tested this change with python2, and it seems to work.

9 years agoPython version: Virtual profile support (common, horizontal, vertical)
Phillip Berndt [Wed, 7 Jan 2015 11:56:28 +0000 (12:56 +0100)]
Python version: Virtual profile support (common, horizontal, vertical)

9 years agoPython version: Support reflections, parse output modes (for virtual profiles)
Phillip Berndt [Wed, 7 Jan 2015 10:25:20 +0000 (11:25 +0100)]
Python version: Support reflections, parse output modes (for virtual profiles)

9 years agoSort fingerprint file in python version (for legacy compatibility)
Phillip Berndt [Wed, 7 Jan 2015 08:58:18 +0000 (09:58 +0100)]
Sort fingerprint file in python version (for legacy compatibility)

9 years agoxrandr parsing regex updated
Phillip Berndt [Tue, 6 Jan 2015 20:36:03 +0000 (21:36 +0100)]
xrandr parsing regex updated

9 years agoExperimental Python implementation of autorandr
Phillip Berndt [Tue, 6 Jan 2015 20:13:13 +0000 (21:13 +0100)]
Experimental Python implementation of autorandr

Still incomplete, virtual profiles are missing.

9 years agoLicense information (2/2)
Phillip Berndt [Fri, 2 Jan 2015 10:34:30 +0000 (11:34 +0100)]
License information (2/2)

9 years agoRemoved non-trivial code by Stefan Tomanek
Phillip Berndt [Fri, 2 Jan 2015 10:21:01 +0000 (11:21 +0100)]
Removed non-trivial code by Stefan Tomanek

9 years agoLicense information (1/2)
Phillip Berndt [Fri, 2 Jan 2015 09:53:31 +0000 (10:53 +0100)]
License information (1/2)

9 years agoDetect and process legacy fingerprint (setup) files
Phillip Berndt [Fri, 2 Jan 2015 09:06:54 +0000 (10:06 +0100)]
Detect and process legacy fingerprint (setup) files

9 years agoReimplemented the setup_fp methods
Phillip Berndt [Fri, 2 Jan 2015 08:23:20 +0000 (09:23 +0100)]
Reimplemented the setup_fp methods

In order to resolve bug #7, we need to remove non-trivial pieces of code
by @wertarbyte, who does not react to requests currently. All other
authors agreed to any suitable OSS license. See
 https://github.com/phillipberndt/autorandr/issues/7
for further discussion.

A side-effect of my reimplementation is that both methods now return the
same fingerprint, such that they are interchangeable. A downside is that
the fingerprints change with this version.