-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdracula.py
More file actions
218 lines (189 loc) Β· 5.6 KB
/
dracula.py
File metadata and controls
218 lines (189 loc) Β· 5.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
# This file is part of ranger, the console file manager.
# License: GNU GPL version 3, see the file "AUTHORS" for details.
# This theme was greatly inspired by "RougarouTheme" for ranger
# It can be found in: `https://github.com/RougarouTheme/ranger`
from __future__ import absolute_import, division, print_function
from ranger.gui.colorscheme import ColorScheme
from ranger.gui.color import (
black,
blue,
cyan,
green,
magenta,
red,
white,
yellow,
default,
normal,
bold,
reverse,
default_colors,
)
class Dracula(ColorScheme):
progress_bar_color = 13
def verify_browser(self, context, fg, bg, attr):
if context.selected:
attr = reverse
else:
attr = normal
if context.empty or context.error:
bg = 1
fg = 0
if context.border:
fg = default
if context.document:
attr |= normal
fg = 13
if context.media:
if context.image:
attr |= normal
fg = 3
elif context.video:
fg = 1
elif context.audio:
fg = 6
else:
fg = 10
if context.container:
attr |= bold
fg = 9
if context.directory:
attr |= bold
fg = 4
elif context.executable and not any(
(context.media, context.container, context.fifo, context.socket)
):
attr |= bold
fg = 2
if context.socket:
fg = 5
attr |= bold
if context.fifo or context.device:
fg = 3
if context.device:
attr |= bold
if context.link:
fg = 6 if context.good else 13
if context.tag_marker and not context.selected:
attr |= bold
if fg in (red, magenta):
fg = 1
else:
fg = 15
if not context.selected and (context.cut or context.copied):
fg = 8
attr |= bold
if context.main_column:
if context.selected:
attr |= bold
if context.marked:
attr |= bold
fg = 11
if context.badinfo:
if attr & reverse:
bg = 5
else:
fg = 5
if context.inactive_pane:
fg = 6
return fg, bg, attr
def verify_titlebar(self, context, fg, bg, attr):
attr |= bold
if context.hostname:
fg = 1 if context.bad else 2
elif context.directory:
fg = 4
elif context.tab:
if context.good:
bg = 2
elif context.link:
fg = 6
return fg, bg, attr
def verify_statusbar(self, context, fg, bg, attr):
if context.permissions:
if context.good:
fg = 2
elif context.bad:
bg = 5
fg = 8
if context.marked:
attr |= bold | reverse
fg = 3
if context.frozen:
attr |= bold | reverse
fg = 6
if context.message:
if context.bad:
attr |= bold
fg = 1
if context.loaded:
bg = self.progress_bar_color
if context.vcsinfo:
fg = 4
attr &= ~bold
if context.vcscommit:
fg = 3
attr &= ~bold
if context.vcsdate:
fg = 6
attr &= ~bold
return fg, bg, attr
def verify_taskview(self, context, fg, bg, attr):
if context.title:
fg = 4
if context.selected:
attr |= reverse
if context.loaded:
if context.selected:
fg = self.progress_bar_color
else:
bg = self.progress_bar_color
return fg, bg, attr
def verify_vcsfile(self, context, fg, bg, attr):
attr &= ~bold
if context.vcsconflict:
fg = 5
elif context.vcschanged:
fg = 1
elif context.vcsunknown:
fg = 1
elif context.vcsstaged:
fg = 2
elif context.vcssync:
fg = 2
elif context.vcsignored:
fg = default
return fg, bg, attr
def verify_vcsremote(self, context, fg, bg, attr):
attr &= ~bold
if context.vcssync or context.vcsnone:
fg = 2
elif context.vcsbehind:
fg = 1
elif context.vcsahead:
fg = 6
elif context.vcsdiverged:
fg = 5
elif context.vcsunknown:
fg = 1
return fg, bg, attr
def use(self, context):
fg, bg, attr = default_colors
if context.reset:
return default_colors
elif context.in_browser:
fg, bg, attr = self.verify_browser(context, fg, bg, attr)
elif context.in_titlebar:
fg, bg, attr = self.verify_titlebar(context, fg, bg, attr)
elif context.in_statusbar:
fg, bg, attr = self.verify_statusbar(context, fg, bg, attr)
if context.text:
if context.highlight:
attr |= reverse
if context.in_taskview:
fg, bg, attr = self.verify_taskview(context, fg, bg, attr)
if context.vcsfile and not context.selected:
fg, bg, attr = self.verify_vcsfile(context, fg, bg, attr)
elif context.vcsremote and not context.selected:
fg, bg, attr = self.verify_vcsremote(context, fg, bg, attr)
return fg, bg, attr