forked from extern/nix-config
Add .Xresources theme support
This commit adds theme support (through .Xresources) for i3 and polybar. As an added bonus, theme.cr has been updated to make changing these colors automatic. The termite config has been updated to reflect the new settings from theme.cr.
This commit is contained in:
parent
d52fa75828
commit
64646500be
@ -38,3 +38,34 @@ Xft.hintstyle: hintfull
|
||||
|
||||
! Make font colors look better (?)
|
||||
Xft.rgba: rgb
|
||||
|
||||
! This line is used to indicate where to add theme colors. Note that everything
|
||||
! after this line is replaced. See the theme docs for more information.
|
||||
! [colors]
|
||||
*foreground: #959DCB
|
||||
*cursorColor: #959DCB
|
||||
*background: #292D3E
|
||||
*color0: #292D3E
|
||||
*color8: #676E95
|
||||
*color7: #959DCB
|
||||
*color15: #FFFFFF
|
||||
*color1: #F07178
|
||||
*color9: #F07178
|
||||
*color2: #C3E88D
|
||||
*color10: #C3E88D
|
||||
*color3: #FFCB6B
|
||||
*color11: #FFCB6B
|
||||
*color4: #82AAFF
|
||||
*color12: #82AAFF
|
||||
*color5: #C792EA
|
||||
*color13: #C792EA
|
||||
*color6: #89DDFF
|
||||
*color14: #89DDFF
|
||||
*color16: #F78C6C
|
||||
*color17: #FF5370
|
||||
*color18: #444267
|
||||
*color19: #32374D
|
||||
*color20: #8796B0
|
||||
*color21: #959DCB
|
||||
|
||||
! vim:ft=xdefaults
|
||||
|
@ -211,10 +211,15 @@ bindsym $mod+y border pixel 1
|
||||
# color to green and everything else to a light grey
|
||||
####################################################################
|
||||
|
||||
# Colors: Border Backgr. Text Indicator
|
||||
client.focused #4f2c4c #4f2c4c #ffffff #4f2c4c
|
||||
client.focused_inactive #888888 #2b2b2b #ffffff #2b2b2b
|
||||
client.unfocused #888888 #2b2b2b #ffffff #2b2b2b
|
||||
client.urgent #900000 #900000 #ffffff #900000
|
||||
set_from_resource $text i3wm.color8
|
||||
set_from_resource $focused i3wm.color18
|
||||
set_from_resource $unfocused i3wm.color19
|
||||
set_from_resource $urgent i3wm.color3
|
||||
|
||||
# Colors: Border Background Text Indicator
|
||||
client.focused $focused $focused $text $focused
|
||||
client.focused_inactive $unfocused $unfocused $text $unfocused
|
||||
client.unfocused $unfocused $unfocused $text $unfocused
|
||||
client.urgent $urgent $urgent $text $urgent
|
||||
|
||||
# vim:ft=dosini
|
||||
|
@ -18,35 +18,36 @@
|
||||
#
|
||||
##################################################################################
|
||||
|
||||
[color]
|
||||
background = ${xrdb:color0:#19171C}
|
||||
text = ${xrdb:color7:#8B8792}
|
||||
highlight = ${xrdb:color5:#AF80AC}
|
||||
yellow = ${xrdb:color3:#AF80AC}
|
||||
blue = ${xrdb:color6:#AF80AC}
|
||||
|
||||
[bar/main]
|
||||
modules-left = i3
|
||||
modules-center = cmus
|
||||
modules-right = cpu ram volume date time
|
||||
|
||||
monitor = VGA-1
|
||||
#foreground = #AF80AC
|
||||
foreground = #8a7f8f
|
||||
background = #EE1C1E21
|
||||
foreground = ${color.text}
|
||||
background = ${color.background}
|
||||
font-0 = "Fira Mono:size=22"
|
||||
font-1 = "Noto Sans CJK JP:size=22"
|
||||
|
||||
height = 88
|
||||
padding-left = 2
|
||||
#underline-size = 5
|
||||
padding-right = 2
|
||||
module-margin = 1
|
||||
|
||||
[module/i3]
|
||||
type = internal/i3
|
||||
|
||||
#label-focused-background = #AA4f2c4c
|
||||
label-focused-underline = #B894B0
|
||||
|
||||
label-focused-foreground = #AF80AC
|
||||
#label-focused-foreground = #c16772
|
||||
label-unfocused-foreground = #8a7f8f
|
||||
label-urgent-foreground = #e4b226
|
||||
label-visible-foreground = #f2f2f2
|
||||
label-focused-foreground = ${color.highlight}
|
||||
label-unfocused-foreground = ${color.text}
|
||||
label-urgent-foreground = ${color.yellow}
|
||||
label-visible-foreground = ${color.blue}
|
||||
|
||||
label-focused-padding = 2
|
||||
label-unfocused-padding = 2
|
||||
|
@ -19,20 +19,42 @@
|
||||
##################################################################################
|
||||
|
||||
[options]
|
||||
|
||||
# Our font of choice
|
||||
# 3 fonts of preference, sorted by readability
|
||||
font = Hack 12
|
||||
#font = Inconsolata 14
|
||||
#font = Fira Mono 12
|
||||
#font = Inconsolata 12
|
||||
|
||||
# No need to show the mouse in the terminal window
|
||||
mouse_autohide = true
|
||||
|
||||
[colors]
|
||||
foreground = #959DCB
|
||||
foreground_bold = #959DCB
|
||||
cursor = #959DCB
|
||||
cursor_foreground = #292D3E
|
||||
background = #292D3E
|
||||
|
||||
# 5% Transparency
|
||||
# Note: 20% is better when you're not using clear-shadow
|
||||
# background = rgba(63, 63, 63, 0.95)
|
||||
background = #19171C
|
||||
color0 = #292D3E
|
||||
color8 = #676E95
|
||||
color7 = #959DCB
|
||||
color15 = #FFFFFF
|
||||
color1 = #F07178
|
||||
color9 = #F07178
|
||||
color2 = #C3E88D
|
||||
color10 = #C3E88D
|
||||
color3 = #FFCB6B
|
||||
color11 = #FFCB6B
|
||||
color4 = #82AAFF
|
||||
color12 = #82AAFF
|
||||
color5 = #C792EA
|
||||
color13 = #C792EA
|
||||
color6 = #89DDFF
|
||||
color14 = #89DDFF
|
||||
color16 = #F78C6C
|
||||
color17 = #FF5370
|
||||
color18 = #444267
|
||||
color19 = #32374D
|
||||
color20 = #8796B0
|
||||
color21 = #959DCB
|
||||
|
||||
# vim:ft=dosini
|
||||
|
@ -12,6 +12,8 @@ if ARGV.size > 0
|
||||
theme : Hash(YAML::Type, YAML::Type) = YAML.parse(File.read file).as_h
|
||||
|
||||
Theme.set_terminal(theme)
|
||||
Theme.set_xresources(theme)
|
||||
system("i3 restart >/dev/null 2>&1")
|
||||
puts "Successfully changed the theme to #{theme["scheme"].to_s}!"
|
||||
else
|
||||
Theme.test
|
||||
|
@ -45,6 +45,52 @@ module Theme
|
||||
#test_color :white, "color07 base05"
|
||||
end
|
||||
|
||||
# Sets all the colors in .Xresources, then reloads xrdb.
|
||||
#
|
||||
# This method will replace everything after the `[colors]`
|
||||
# line with the theme colors, then reload xrdb to make sure
|
||||
# that everything takes effect.
|
||||
#
|
||||
# You should reload i3 (which in turn should reload polybar)
|
||||
# if you want the changes to take effect immediately.
|
||||
def set_xresources(theme : Hash(YAML::Type, YAML::Type))
|
||||
file : String = ENV["HOME"] + "/.Xresources"
|
||||
_DNE(file) if !File.exists?(file)
|
||||
config : String = ""
|
||||
File.each_line(file) do |line|
|
||||
config += line + "\n"
|
||||
break if line.includes?("[colors]")
|
||||
end
|
||||
config += add_xcolor_fgbg "foreground", theme["base05"]
|
||||
config += add_xcolor_fgbg "cursorColor", theme["base06"]
|
||||
config += add_xcolor_fgbg "background", theme["base00"]
|
||||
config += add_xcolor 0, theme["base00"] # Black
|
||||
config += add_xcolor 8, theme["base03"] # Gray
|
||||
config += add_xcolor 7, theme["base05"] # Silver
|
||||
config += add_xcolor 15, theme["base07"] # White
|
||||
config += add_xcolor 1, theme["base08"] # Red
|
||||
config += add_xcolor 9, theme["base08"]
|
||||
config += add_xcolor 2, theme["base0B"] # Green
|
||||
config += add_xcolor 10, theme["base0B"]
|
||||
config += add_xcolor 3, theme["base0A"] # Yellow
|
||||
config += add_xcolor 11, theme["base0A"]
|
||||
config += add_xcolor 4, theme["base0D"] # Blue
|
||||
config += add_xcolor 12, theme["base0D"]
|
||||
config += add_xcolor 5, theme["base0E"] # Purple
|
||||
config += add_xcolor 13, theme["base0E"]
|
||||
config += add_xcolor 6, theme["base0C"] # Teal
|
||||
config += add_xcolor 14, theme["base0C"]
|
||||
config += add_xcolor 16, theme["base09"] # "Extra" colors
|
||||
config += add_xcolor 17, theme["base0F"]
|
||||
config += add_xcolor 18, theme["base01"]
|
||||
config += add_xcolor 19, theme["base02"]
|
||||
config += add_xcolor 20, theme["base04"]
|
||||
config += add_xcolor 21, theme["base06"]
|
||||
config += "\n! vim:ft=xdefaults\n"
|
||||
File.write(file, config)
|
||||
system("xrdb ~/.Xresources")
|
||||
end
|
||||
|
||||
# Sets all the colors in termite.
|
||||
#
|
||||
# This is the preferred method of changing your terminal
|
||||
@ -201,10 +247,18 @@ module Theme
|
||||
return "color#{num.to_s.ljust(2, ' ')} = ##{color.to_s}\n"
|
||||
end
|
||||
|
||||
private def add_term_fgbg(type : String, color : YAML::Type)
|
||||
private def add_term_fgbg(type : String, color : YAML::Type) : String
|
||||
return "#{type.ljust(17, ' ')} = ##{color.to_s}\n"
|
||||
end
|
||||
|
||||
private def add_xcolor(num : Int32, color : YAML::Type) : String
|
||||
return "*color#{num.to_s}: ##{color.to_s}\n"
|
||||
end
|
||||
|
||||
private def add_xcolor_fgbg(type : String, color : YAML::Type) : String
|
||||
return "*#{type}: ##{color.to_s}\n"
|
||||
end
|
||||
|
||||
# Prints an error that the file does not exists.
|
||||
def _DNE(file : String)
|
||||
_e("The file " + File.expand_path(file) + " does not exist!")
|
||||
|
Loading…
Reference in New Issue
Block a user