diff --git a/cola/gitcfg.py b/cola/gitcfg.py
index b5b521d27..47553545d 100644
--- a/cola/gitcfg.py
+++ b/cola/gitcfg.py
@@ -413,3 +413,7 @@ def color(self, key, default):
except Exception:
r, g, b = struct.unpack(struct_layout, unhexlify(default))
return (r, g, b)
+
+ def icon_style(self):
+ theme = self.get('cola.iconstyle', None)
+ return theme
diff --git a/cola/icons.py b/cola/icons.py
index c8aa349ac..3a0bc10b1 100644
--- a/cola/icons.py
+++ b/cola/icons.py
@@ -6,6 +6,7 @@
from qtpy import QtGui
+from . import gitcfg
from . import qtcompat
from . import resources
from .compat import ustr
@@ -31,9 +32,14 @@
'.cxx': 'file-code.svg',
}
+cfg = gitcfg.current()
+style = cfg.icon_style()
def install():
- icon_dir = resources.icon_dir()
+ if not style or style == "light":
+ icon_dir = resources.icon_dir()
+ else:
+ icon_dir = resources.icon_dir(style)
qtcompat.add_search_path('icons', icon_dir)
diff --git a/cola/resources.py b/cola/resources.py
index add9fbb25..796685092 100644
--- a/cola/resources.py
+++ b/cola/resources.py
@@ -57,9 +57,16 @@ def share(*args):
return prefix('share', 'git-cola', *args)
-def icon_dir():
+def icon_dir(style=None):
"""Return the path to the style dir within the cola install tree."""
- return share('icons')
+ if style:
+ style_dir = share('icons', style)
+ if os.path.isdir(style_dir):
+ return style_dir
+ else:
+ return share('icons')
+ else:
+ return share('icons')
def config_home(*args):
diff --git a/setup.py b/setup.py
index 2cbcd8bce..d4c7a8f29 100755
--- a/setup.py
+++ b/setup.py
@@ -67,6 +67,8 @@ def cola_data_files(vendor_libs):
_app_path('share/git-cola/bin', '*'),
_app_path('share/git-cola/icons', '*.png'),
_app_path('share/git-cola/icons', '*.svg'),
+ _app_path('share/git-cola/icons/dark', '*.png'),
+ _app_path('share/git-cola/icons/dark', '*.svg'),
_app_path('share/appdata', '*.xml'),
_app_path('share/applications', '*.desktop'),
_app_path('share/doc/git-cola', '*.rst'),
diff --git a/share/doc/git-cola/git-cola.rst b/share/doc/git-cola/git-cola.rst
index 22b75d933..d1728c3f1 100644
--- a/share/doc/git-cola/git-cola.rst
+++ b/share/doc/git-cola/git-cola.rst
@@ -416,6 +416,13 @@ cola.fontdiff
-------------
Specifies the font to use for `git cola`'s diff display.
+cola.iconstyle
+--------------
+Specifies the icon style to use throughout `git-cola`. The style specified
+must be the name of the subdirectory containing the icons, which in turn must be
+placed in the main "icons" directory. If unset, or set to "light", then the
+default style will be used.
+
cola.inotify
------------
Set to `false` to disable file system change monitoring. Defaults to `true`,
diff --git a/share/git-cola/icons/dark/README.md b/share/git-cola/icons/dark/README.md
new file mode 100644
index 000000000..59b8a22d7
--- /dev/null
+++ b/share/git-cola/icons/dark/README.md
@@ -0,0 +1,118 @@
+Git Cola Dark Icons
+--------------
+All icons in this directory, besides color inversion,
+are unmodified original ones. All kudos and copyrights go to their
+respective authors ( see original readme bellow ).
+
+2017 Filip Danilovic
+
+--------------------
+
+Git Cola Icons
+--------------
+
+The following icons are based on the based on the original .png icon designs
+for git-cola's File Browser by Uri Okrent.
+
+staged.svg
+modified.svg
+partial.svg
+upstream.svg
+
+Copyright (C) 2011 Uri Okrent
+Copyright (C) 2015-2016 David Aguilar and contributors
+
+License: MIT
+
+
+Git Logo
+--------
+Git Logo by Jason Long is licensed under the
+Creative Commons Attribution 3.0 Unported License.
+http://git-scm.com/downloads/logos
+
+git-cola.svg is based on the original Git Logo.
+
+
+Octicons
+--------
+The following files are from Github's
+[octicons](https://github.com/github/octicons) icon set:
+
+check.svg
+circle-slash.svg
+desktop-download.svg
+diff.svg
+ellipsis.svg
+eye.svg
+file-binary.svg
+file-code.svg
+file-directory.svg
+file-media.svg
+file-text.svg
+file-zip.svg
+fold.svg
+gear.svg
+git-branch.svg
+git-compare.svg
+git-merge.svg
+link-external.svg
+pencil.svg
+plus.svg
+primitive-dot.svg
+question.svg
+question-plain.svg
+repo-pull.svg
+repo-push.svg
+repo.svg
+screen-full.svg
+search.svg
+star.svg
+sync.svg
+tag.svg
+telescope.svg
+trashcan.svg
+unfold.svg
+x.svg
+
+Copyright (C) 2012-2015 GitHub
+License: [MIT](http://choosealicense.com/licenses/mit/)
+
+
+Gnome High Contrast Icons
+-------------------------
+The following files are from the Gnome High Contrast Icon set:
+
+zoom-fit-best.svg
+zoom-in.svg
+zoom-out.svg
+
+License: LGPL v2+
+
+
+Flaticon.com Icons
+------------------
+
+The following files are designed by Freepik from http://www.flaticons.com/
+
+edit-undo.svg
+
+License: [Flatpik Basic License](http://cdn.flaticon.com/license/license.pdf)
+
+
+The following files are by Linh Pham from http://flaticons.com/
+
+edit-copy.svg
+
+License: [Creative Commons BY 3.0](http://creativecommons.org/licenses/by/3.0/)
+
+
+Google Icons
+------------
+
+The following files are by Google:
+
+edit-select-all.svg
+file-download.svg
+
+License: [Creative Commons BY 3.0](http://creativecommons.org/licenses/by/3.0/)
diff --git a/share/git-cola/icons/dark/check.svg b/share/git-cola/icons/dark/check.svg
new file mode 100644
index 000000000..ef26d17fd
--- /dev/null
+++ b/share/git-cola/icons/dark/check.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/circle-slash-red.svg b/share/git-cola/icons/dark/circle-slash-red.svg
new file mode 100644
index 000000000..3298a03e8
--- /dev/null
+++ b/share/git-cola/icons/dark/circle-slash-red.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/circle-slash.svg b/share/git-cola/icons/dark/circle-slash.svg
new file mode 100644
index 000000000..26d46d144
--- /dev/null
+++ b/share/git-cola/icons/dark/circle-slash.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/desktop-download.svg b/share/git-cola/icons/dark/desktop-download.svg
new file mode 100644
index 000000000..5dcbcc72b
--- /dev/null
+++ b/share/git-cola/icons/dark/desktop-download.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/diff.svg b/share/git-cola/icons/dark/diff.svg
new file mode 100644
index 000000000..1e68c7df8
--- /dev/null
+++ b/share/git-cola/icons/dark/diff.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/edit-copy.svg b/share/git-cola/icons/dark/edit-copy.svg
new file mode 100644
index 000000000..a18c92d9a
--- /dev/null
+++ b/share/git-cola/icons/dark/edit-copy.svg
@@ -0,0 +1,55 @@
+
+
+
+
\ No newline at end of file
diff --git a/share/git-cola/icons/dark/edit-select-all.svg b/share/git-cola/icons/dark/edit-select-all.svg
new file mode 100644
index 000000000..b9684160f
--- /dev/null
+++ b/share/git-cola/icons/dark/edit-select-all.svg
@@ -0,0 +1,82 @@
+
+
+
+
\ No newline at end of file
diff --git a/share/git-cola/icons/dark/edit-undo.svg b/share/git-cola/icons/dark/edit-undo.svg
new file mode 100644
index 000000000..71b1d60f6
--- /dev/null
+++ b/share/git-cola/icons/dark/edit-undo.svg
@@ -0,0 +1,82 @@
+
+
+
+
\ No newline at end of file
diff --git a/share/git-cola/icons/dark/ellipsis.svg b/share/git-cola/icons/dark/ellipsis.svg
new file mode 100644
index 000000000..4a55b247b
--- /dev/null
+++ b/share/git-cola/icons/dark/ellipsis.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/eye.svg b/share/git-cola/icons/dark/eye.svg
new file mode 100644
index 000000000..b92029e6f
--- /dev/null
+++ b/share/git-cola/icons/dark/eye.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/file-binary.svg b/share/git-cola/icons/dark/file-binary.svg
new file mode 100644
index 000000000..21076ca9c
--- /dev/null
+++ b/share/git-cola/icons/dark/file-binary.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/file-code.svg b/share/git-cola/icons/dark/file-code.svg
new file mode 100644
index 000000000..f7cf3bf9f
--- /dev/null
+++ b/share/git-cola/icons/dark/file-code.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/file-directory.svg b/share/git-cola/icons/dark/file-directory.svg
new file mode 100644
index 000000000..045631005
--- /dev/null
+++ b/share/git-cola/icons/dark/file-directory.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/file-download.svg b/share/git-cola/icons/dark/file-download.svg
new file mode 100644
index 000000000..9bf652055
--- /dev/null
+++ b/share/git-cola/icons/dark/file-download.svg
@@ -0,0 +1,52 @@
+
+
+
+
\ No newline at end of file
diff --git a/share/git-cola/icons/dark/file-media.svg b/share/git-cola/icons/dark/file-media.svg
new file mode 100644
index 000000000..693aa0e14
--- /dev/null
+++ b/share/git-cola/icons/dark/file-media.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/file-text.svg b/share/git-cola/icons/dark/file-text.svg
new file mode 100644
index 000000000..87480161c
--- /dev/null
+++ b/share/git-cola/icons/dark/file-text.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/file-zip.svg b/share/git-cola/icons/dark/file-zip.svg
new file mode 100644
index 000000000..b6db024b8
--- /dev/null
+++ b/share/git-cola/icons/dark/file-zip.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/fold.svg b/share/git-cola/icons/dark/fold.svg
new file mode 100644
index 000000000..1eb7c0195
--- /dev/null
+++ b/share/git-cola/icons/dark/fold.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/folder-new.svg b/share/git-cola/icons/dark/folder-new.svg
new file mode 100644
index 000000000..c571898d6
--- /dev/null
+++ b/share/git-cola/icons/dark/folder-new.svg
@@ -0,0 +1,87 @@
+
+
+
+
\ No newline at end of file
diff --git a/share/git-cola/icons/dark/folder.svg b/share/git-cola/icons/dark/folder.svg
new file mode 100644
index 000000000..f1aaf2dd6
--- /dev/null
+++ b/share/git-cola/icons/dark/folder.svg
@@ -0,0 +1,82 @@
+
+
+
+
\ No newline at end of file
diff --git a/share/git-cola/icons/dark/gear.svg b/share/git-cola/icons/dark/gear.svg
new file mode 100644
index 000000000..19e5e289b
--- /dev/null
+++ b/share/git-cola/icons/dark/gear.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/git-branch.svg b/share/git-cola/icons/dark/git-branch.svg
new file mode 100644
index 000000000..4c37daac6
--- /dev/null
+++ b/share/git-cola/icons/dark/git-branch.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/git-cola.ico b/share/git-cola/icons/dark/git-cola.ico
new file mode 100644
index 000000000..4c1fc34e9
Binary files /dev/null and b/share/git-cola/icons/dark/git-cola.ico differ
diff --git a/share/git-cola/icons/dark/git-cola.svg b/share/git-cola/icons/dark/git-cola.svg
new file mode 100644
index 000000000..652211e82
--- /dev/null
+++ b/share/git-cola/icons/dark/git-cola.svg
@@ -0,0 +1,71 @@
+
+
+
+
diff --git a/share/git-cola/icons/dark/git-compare.svg b/share/git-cola/icons/dark/git-compare.svg
new file mode 100644
index 000000000..ccc9b88c4
--- /dev/null
+++ b/share/git-cola/icons/dark/git-compare.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/git-merge.svg b/share/git-cola/icons/dark/git-merge.svg
new file mode 100644
index 000000000..84ea072a7
--- /dev/null
+++ b/share/git-cola/icons/dark/git-merge.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/link-external.svg b/share/git-cola/icons/dark/link-external.svg
new file mode 100644
index 000000000..69e773900
--- /dev/null
+++ b/share/git-cola/icons/dark/link-external.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/modified.svg b/share/git-cola/icons/dark/modified.svg
new file mode 100644
index 000000000..af617b5d1
--- /dev/null
+++ b/share/git-cola/icons/dark/modified.svg
@@ -0,0 +1,62 @@
+
+
diff --git a/share/git-cola/icons/dark/partial.svg b/share/git-cola/icons/dark/partial.svg
new file mode 100644
index 000000000..b3483afbb
--- /dev/null
+++ b/share/git-cola/icons/dark/partial.svg
@@ -0,0 +1,65 @@
+
+
diff --git a/share/git-cola/icons/dark/pencil.svg b/share/git-cola/icons/dark/pencil.svg
new file mode 100644
index 000000000..b9031dc75
--- /dev/null
+++ b/share/git-cola/icons/dark/pencil.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/plus.svg b/share/git-cola/icons/dark/plus.svg
new file mode 100644
index 000000000..332beba8c
--- /dev/null
+++ b/share/git-cola/icons/dark/plus.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/primitive-dot.svg b/share/git-cola/icons/dark/primitive-dot.svg
new file mode 100644
index 000000000..571875e16
--- /dev/null
+++ b/share/git-cola/icons/dark/primitive-dot.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/question-plain.svg b/share/git-cola/icons/dark/question-plain.svg
new file mode 100644
index 000000000..d4dd9c3aa
--- /dev/null
+++ b/share/git-cola/icons/dark/question-plain.svg
@@ -0,0 +1,55 @@
+
+
diff --git a/share/git-cola/icons/dark/question.svg b/share/git-cola/icons/dark/question.svg
new file mode 100644
index 000000000..7c0b42f23
--- /dev/null
+++ b/share/git-cola/icons/dark/question.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/repo-pull.svg b/share/git-cola/icons/dark/repo-pull.svg
new file mode 100644
index 000000000..566bc96df
--- /dev/null
+++ b/share/git-cola/icons/dark/repo-pull.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/repo-push.svg b/share/git-cola/icons/dark/repo-push.svg
new file mode 100644
index 000000000..9900d905d
--- /dev/null
+++ b/share/git-cola/icons/dark/repo-push.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/repo.svg b/share/git-cola/icons/dark/repo.svg
new file mode 100644
index 000000000..f4b925bf1
--- /dev/null
+++ b/share/git-cola/icons/dark/repo.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/screen-full.svg b/share/git-cola/icons/dark/screen-full.svg
new file mode 100644
index 000000000..ed798665c
--- /dev/null
+++ b/share/git-cola/icons/dark/screen-full.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/search.svg b/share/git-cola/icons/dark/search.svg
new file mode 100644
index 000000000..00d4db8b7
--- /dev/null
+++ b/share/git-cola/icons/dark/search.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/staged.svg b/share/git-cola/icons/dark/staged.svg
new file mode 100644
index 000000000..7e56e6c12
--- /dev/null
+++ b/share/git-cola/icons/dark/staged.svg
@@ -0,0 +1,65 @@
+
+
diff --git a/share/git-cola/icons/dark/star.svg b/share/git-cola/icons/dark/star.svg
new file mode 100644
index 000000000..27c86cd3a
--- /dev/null
+++ b/share/git-cola/icons/dark/star.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/sync.svg b/share/git-cola/icons/dark/sync.svg
new file mode 100644
index 000000000..2158a74ce
--- /dev/null
+++ b/share/git-cola/icons/dark/sync.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/tag.svg b/share/git-cola/icons/dark/tag.svg
new file mode 100644
index 000000000..c6c92ee5a
--- /dev/null
+++ b/share/git-cola/icons/dark/tag.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/telescope.svg b/share/git-cola/icons/dark/telescope.svg
new file mode 100644
index 000000000..311b2c118
--- /dev/null
+++ b/share/git-cola/icons/dark/telescope.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/trashcan.svg b/share/git-cola/icons/dark/trashcan.svg
new file mode 100644
index 000000000..7be3092be
--- /dev/null
+++ b/share/git-cola/icons/dark/trashcan.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/unfold.svg b/share/git-cola/icons/dark/unfold.svg
new file mode 100644
index 000000000..6b8958399
--- /dev/null
+++ b/share/git-cola/icons/dark/unfold.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/upstream.svg b/share/git-cola/icons/dark/upstream.svg
new file mode 100644
index 000000000..c9bdaaf0a
--- /dev/null
+++ b/share/git-cola/icons/dark/upstream.svg
@@ -0,0 +1,61 @@
+
+
diff --git a/share/git-cola/icons/dark/x.svg b/share/git-cola/icons/dark/x.svg
new file mode 100644
index 000000000..85e672a64
--- /dev/null
+++ b/share/git-cola/icons/dark/x.svg
@@ -0,0 +1,53 @@
+
+
diff --git a/share/git-cola/icons/dark/zoom-fit-best.svg b/share/git-cola/icons/dark/zoom-fit-best.svg
new file mode 100644
index 000000000..401db16c3
--- /dev/null
+++ b/share/git-cola/icons/dark/zoom-fit-best.svg
@@ -0,0 +1,200 @@
+
+
+
+
diff --git a/share/git-cola/icons/dark/zoom-in.svg b/share/git-cola/icons/dark/zoom-in.svg
new file mode 100644
index 000000000..4420beb05
--- /dev/null
+++ b/share/git-cola/icons/dark/zoom-in.svg
@@ -0,0 +1,203 @@
+
+
+
+
diff --git a/share/git-cola/icons/dark/zoom-out.svg b/share/git-cola/icons/dark/zoom-out.svg
new file mode 100644
index 000000000..e5d20844d
--- /dev/null
+++ b/share/git-cola/icons/dark/zoom-out.svg
@@ -0,0 +1,198 @@
+
+
+
+