Merge branch '74-theme-changing-using-standardized-base16-color-schemes' into 'master'
Resolve "Theme Changing using standardized base16 color schemes" Closes #74 See merge request marty-oehme/dotfiles!27
This commit is contained in:
commit
7308828c67
17 changed files with 268 additions and 114 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -44,3 +44,9 @@ tags
|
|||
.vim
|
||||
|
||||
# End of https://www.gitignore.io/api/vim,linux
|
||||
|
||||
# Ignore dynamic colorschemes set by styler
|
||||
colorscheme.vim
|
||||
colorscheme
|
||||
colorscheme.py
|
||||
colorscheme.rasi
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
# dotfiles Read-Me and Roadmap
|
||||
|
||||
## What's in these dotfiles
|
||||
|
||||
* [x] vim configuration for simple programming tasks (especially go/typescript/python/bash) and prose
|
||||
* [x] academic workflow tools, to allow quick citation, pdf compilation, and preview
|
||||
* [x] simple, efficient polybar with package update notification, and spotify integration
|
||||
* [x] simple, efficient polybar with package update notification, and spotify (mpris) integration
|
||||
* [x] tmux session management through `tm` and `tl` tools
|
||||
* [x] quick terminal-wide color management through `sd`/`sD`/`sl`/`sL` commands, allowing two light and dark color-schemes
|
||||
* [x] many vim color-schemes with quick light/dark switching (`F8`) and theme switch (`<Space>+F8`)
|
||||
* [x] tmux fuzzy-searching of terminal sessions to switch to with hot-key (`<C-A><C-j>`)
|
||||
* [x] system-wide color management (terminals, vim, qutebrowser, polybar, xresources) through `styler` command using [base16](http://chriskempson.com/projects/base16/) themes
|
||||
* [x] quick theme switching by activating `styler` and fuzzy-searching themes with hot-key (`<Super>+F8`)
|
||||
* [x] many vim color-schemes with quick light/dark switching (`F8`) and individual theme switch (`<Space>+F8`)
|
||||
* [x] quick directory jumping using z, with fzf integration
|
||||
* [x] fzf integrations for bibtex citation, vim buffer management, most recently used switching, shell command history, and more
|
||||
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
! ~/.Xresources
|
||||
|
||||
! Setting up commonly changed vars
|
||||
#define myfontsize 11
|
||||
#define myfont Fira Code
|
||||
#define myOpacity 90
|
||||
|
||||
! Set up URxvt
|
||||
#include ".config/Xresources/urxvt.Xresources"
|
||||
|
||||
! Add Nord theme to every terminal emulator respecting Xresources
|
||||
#include ".config/Xresources/nord.Xresources"
|
|
@ -1 +0,0 @@
|
|||
colo nord
|
|
@ -47,6 +47,13 @@ endif
|
|||
" set truecolor (neovim)
|
||||
set termguicolors
|
||||
|
||||
" load colorscheme from dynamic file
|
||||
" first one is here to make airline behave correctly without reload
|
||||
runtime colorscheme.vim
|
||||
" this one is here to override anything set by default in colorscheme plugin
|
||||
" loading
|
||||
autocmd VimEnter * runtime colorscheme.vim
|
||||
|
||||
" sets tabs to be 2 characters, expanded into spaces, but still removable with
|
||||
" one press of backspace.
|
||||
" great explanation: http://vimcasts.org/transcripts/2/en/
|
||||
|
|
|
@ -18,14 +18,14 @@
|
|||
|
||||
[colors]
|
||||
;background = ${xrdb:color0:#222}
|
||||
background = #222
|
||||
background-alt = #444
|
||||
background = ${xrdb:background}
|
||||
background-alt = ${xrdb:color8}
|
||||
;foreground = ${xrdb:color7:#222}
|
||||
foreground = #dfdfdf
|
||||
foreground-alt = #555
|
||||
primary = #ffb52a
|
||||
secondary = #e60053
|
||||
alert = #bd2c40
|
||||
foreground = ${xrdb:foreground}
|
||||
foreground-alt = ${xrdb:color3}
|
||||
primary = ${xrdb:color1}
|
||||
secondary = ${xrdb:color4}
|
||||
alert = ${xrdb:color2}
|
||||
|
||||
[settings]
|
||||
; The throttle settings lets the eventloop swallow up til X events
|
||||
|
|
|
@ -61,8 +61,8 @@ c.tabs.title.format = '{index} {audio}{perc}{current_title}'
|
|||
c.tabs.position = "right"
|
||||
c.tabs.width = "15%"
|
||||
|
||||
# give the browser nice nord theme colors
|
||||
config.source('themes/base16-gruvbox-dark.py')
|
||||
# give the browser nice theme colors
|
||||
config.source('colorscheme.py')
|
||||
|
||||
# Status bar
|
||||
# should be visible to prevent 'jumping' bug, see https://github.com/qutebrowser/qutebrowser/issues/2236
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#listview {
|
||||
spacing: 5px;
|
||||
lines: 100;
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
#entry {
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
* but try to keep the two separated as much as possible, so we can adjust global options easily from here
|
||||
*/
|
||||
|
||||
//default import
|
||||
@import "colorschemes/gruvbox-dark.rasi"
|
||||
|
||||
* {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ ! "$DISPLAY" ] && [ "$XDG_VTNR" -eq 1 ]; then
|
||||
exec startx ~/.xinitrc
|
||||
exec startx "$XDG_CONFIG_HOME"/xresources/xinitrc
|
||||
fi
|
||||
|
|
212
styler/.local/bin/styler
Executable file
212
styler/.local/bin/styler
Executable file
|
@ -0,0 +1,212 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
readonly BASE_PATH="${STYLER_DATA_PATH:-${XDG_DATA_HOME:-$HOME/.local/share}/styler}"
|
||||
|
||||
readonly PACKAGE_PATH="$BASE_PATH/packages"
|
||||
readonly PROCESSOR_PATH="$BASE_PATH/processors"
|
||||
|
||||
readonly VERSION="0.3.0"
|
||||
|
||||
main() {
|
||||
local cmd=""
|
||||
local ret=0
|
||||
|
||||
case "$1" in
|
||||
-t | --theme | theme)
|
||||
cmd="switch_theme"
|
||||
;;
|
||||
-s | --set | set)
|
||||
cmd="set_theme"
|
||||
;;
|
||||
-l | --list | list)
|
||||
cmd="list"
|
||||
;;
|
||||
-d | --download | download)
|
||||
cmd="download"
|
||||
;;
|
||||
-v | --version | version)
|
||||
printf "Program theming script.\n\n©Marty Oehme\n\nVersion: %s\n" "$VERSION"
|
||||
exit 0
|
||||
;;
|
||||
-h | --help | help | *)
|
||||
cmd="usage"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
|
||||
$cmd "$1"
|
||||
ret=$((ret + $?))
|
||||
exit $ret
|
||||
}
|
||||
|
||||
usage() {
|
||||
printf "%s\n" \
|
||||
"" \
|
||||
" styler - Quickly switch your linux style." \
|
||||
" Uses base16 themes to quickly set them for a variety of applications." \
|
||||
"" \
|
||||
" Usage: styler [-hv | set base16-themename]" \
|
||||
"" \
|
||||
" Options:" \
|
||||
"" \
|
||||
" -t | theme Temporarily switch theme. Use any valid base16 theme name (without base16- prefix)." \
|
||||
" Theme will be lost upon restart, or application restarts." \
|
||||
"" \
|
||||
" -s | set Set the theme. Use any valid base16 theme name (without base16- prefix)." \
|
||||
" Same as 'theme' option, but changes will be made permanent." \
|
||||
"" \
|
||||
" -d | download Download a base16 template into the package directory or download a processor16" \
|
||||
" into the processor directory. Use user/repo format to automatically pull from github." \
|
||||
"" \
|
||||
" -h | help Print out this help." \
|
||||
"" \
|
||||
" -v | version Print out program information." \
|
||||
"" \
|
||||
""
|
||||
}
|
||||
|
||||
# base directory should always exist
|
||||
base_dir_exists_or_create() {
|
||||
[[ -d "$BASE_PATH" ]] || mkdir "$BASE_PATH"
|
||||
[[ -d "$PACKAGE_PATH" ]] || mkdir "$PACKAGE_PATH"
|
||||
[[ -d "$PROCESSOR_PATH" ]] || mkdir "$BASE_PATH"
|
||||
}
|
||||
|
||||
# retrieves all relevant packages from BASE_PATH/packages
|
||||
# 'relevant' here means they follow github pattern of author/repository
|
||||
get_packages() {
|
||||
for author in "$PACKAGE_PATH"/*; do
|
||||
# TODO should eventually be used to either distinguish between author/pkg and pkg packages
|
||||
# or to spit out a warning if they should not be used.
|
||||
# if grep -q -e '^base16-' <<<"$(basename -- "$author")"; then
|
||||
# echo ERROR
|
||||
# fi
|
||||
for package in "$author"/*; do
|
||||
[[ -e "$author" ]] || break
|
||||
[[ -d "$package" ]] || break
|
||||
printf "%s/%s\n" "$(basename -- "$author")" "$(basename -- "$package")"
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
# retrieves all processors from BASE_PATH/processors
|
||||
# 'relevant' here means they follow github pattern of author/repository
|
||||
get_processors() {
|
||||
for author in "$PROCESSOR_PATH"/*; do
|
||||
for package in "$author"/*; do
|
||||
for processor in "$package"/*; do
|
||||
[[ -e "$processor" ]] || break
|
||||
[[ -f "$processor" ]] || break
|
||||
if grep -q -e '/theme_[[:alnum:]]\{1,\}$' <<<"$processor"; then
|
||||
printf "%s\n" "$(basename -- "$processor")"
|
||||
fi
|
||||
done
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
# retrieves all installed themes from all packages, appends applications they exist for
|
||||
get_themes() {
|
||||
local themes
|
||||
themes=$(find "$PACKAGE_PATH" -type f -name 'base16-*')
|
||||
echo "$themes" | sed "s/.*\\/base16-//" | sed "s/\\..*//" | sort | uniq
|
||||
}
|
||||
|
||||
# temporarily switch theme, same thing as setting, only with permanence flag turned off for processors
|
||||
switch_theme() {
|
||||
set_theme "$1" "false"
|
||||
}
|
||||
|
||||
# call processors for all installed packages
|
||||
set_theme() {
|
||||
local theme="$1"
|
||||
local permanent="${2:-true}"
|
||||
|
||||
local packages
|
||||
packages="$(get_packages)"
|
||||
if [[ -z "$packages" ]]; then
|
||||
printf "ERROR: No base16 packages installed. Please install at least 1 base16 package in %s/.\n" "$PACKAGE_PATH" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local processors
|
||||
processors="$(get_processors)"
|
||||
if [[ -z "$processors" ]]; then
|
||||
printf "ERROR: No application processors installed. Please install at least one processor in %s/.\n" "$PROCESSOR_PATH" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for pkg in $packages; do
|
||||
local appext
|
||||
|
||||
# filter the application a package targets, since base16 packages
|
||||
# carry standard names this removes everything before base16-
|
||||
# the result is the application it targets
|
||||
# shellcheck disable=SC2001
|
||||
appext=$(sed "s|^[[:alnum:]]\{1,\}/base16-||" <<<"$pkg")
|
||||
|
||||
# Compares application extension with existing processors and runs the appropriate processor if found
|
||||
processor=$(find "$PROCESSOR_PATH" -type f -name "theme_$appext")
|
||||
if [[ -f "$processor" ]]; then
|
||||
"$processor" "$PACKAGE_PATH" "$pkg" "$theme" "$permanent"
|
||||
else
|
||||
printf "WARN: No processor found for application %s in %s. Make sure you install a processor for the application.\n" "$appext" "$PROCESSOR_PATH/" >&2
|
||||
fi
|
||||
|
||||
done
|
||||
}
|
||||
|
||||
list() {
|
||||
local selected="$1"
|
||||
|
||||
case "$selected" in
|
||||
packages)
|
||||
get_packages
|
||||
;;
|
||||
processors)
|
||||
get_processors
|
||||
;;
|
||||
themes)
|
||||
get_themes
|
||||
;;
|
||||
*)
|
||||
echo "Please select one of packages | processors | themes to list."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
download() {
|
||||
local pkg="$1"
|
||||
local page="https://github.com"
|
||||
local repo="$page/$pkg"
|
||||
|
||||
[[ -z "$pkg" ]] && {
|
||||
echo "No package to download passed in. Please provide a package to download in the form user/repository."
|
||||
exit 1
|
||||
}
|
||||
|
||||
type git >/dev/null 2>&1 || {
|
||||
echo "git is required to clone base16 package. Please install git."
|
||||
exit 1
|
||||
}
|
||||
|
||||
base_dir_exists_or_create
|
||||
|
||||
if ! git ls-remote --exit-code -h "$repo" >/dev/null; then
|
||||
echo "Repository $repo not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# if package has patter name/base16-program, put it in packages; if name/process16-program put it in processors
|
||||
# if none of the above, assume it's a processor but warn the user
|
||||
if grep -q -e '^[0-9A-Za-z-]\{1,\}/base16-[0-9A-Za-z-]\{1,\}$' <<<"$pkg"; then
|
||||
git clone "$repo" "$PACKAGE_PATH/$pkg"
|
||||
elif grep -q -e '^[0-9A-Za-z-]\{1,\}/process16-[0-9A-Za-z-]\{1,\}$' <<<"$pkg"; then
|
||||
git clone "$repo" "$PROCESSOR_PATH/$pkg"
|
||||
else
|
||||
echo "Package does not fit default naming scheme of packages/processors. Assuming it is a processor but please check manually."
|
||||
git clone "$repo" "$PROCESSOR_PATH/$pkg"
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
|
@ -30,6 +30,10 @@ super + x
|
|||
super + BackSpace
|
||||
rofi -modi "powermenu:~/.config/rofi/modes/powermenu" -show powermenu -theme themes/powermenu
|
||||
|
||||
# quick-switching of theme using styler
|
||||
super + F8
|
||||
styler set $(styler list themes | rofi -dmenu -theme /themes/dmenu -matching fuzzy)
|
||||
|
||||
# enable function (/media) key functionality
|
||||
# TODO: set up next song, previous song, pause, etc
|
||||
# see: https://www.reddit.com/r/i3wm/comments/3a6nh3/help_how_to_use_function_keys_in_i3_config/
|
||||
|
|
11
xresources/.config/xresources/Xresources
Normal file
11
xresources/.config/xresources/Xresources
Normal file
|
@ -0,0 +1,11 @@
|
|||
! ~/.Xresources
|
||||
|
||||
! Setting up commonly changed vars
|
||||
#define myfontsize 11
|
||||
#define myfont Iosevka Mono
|
||||
#define myOpacity 90
|
||||
|
||||
! Font settings
|
||||
#include "Xresources.d/fonts"
|
||||
|
||||
! Colorscheme
|
7
xresources/.config/xresources/Xresources.d/fonts
Normal file
7
xresources/.config/xresources/Xresources.d/fonts
Normal file
|
@ -0,0 +1,7 @@
|
|||
Xft.antialias: 1
|
||||
Xft.autohint: 0
|
||||
Xft.dpi: 92
|
||||
Xft.hinting: true
|
||||
Xft.hintstyle: hintslight
|
||||
Xft.lcdfilter: lcddefault
|
||||
Xft.rgba: rgb
|
|
@ -1,48 +0,0 @@
|
|||
! +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
! title Nord XResources +
|
||||
! project nord-xresources +
|
||||
! version 0.1.0 +
|
||||
! repository https://github.com/arcticicestudio/nord-xresources +
|
||||
! author Arctic Ice Studio +
|
||||
! email development@arcticicestudio.com +
|
||||
! copyright Copyright (C) 2016 +
|
||||
! +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
#define nord0 #2E3440
|
||||
#define nord1 #3B4252
|
||||
#define nord2 #434C5E
|
||||
#define nord3 #4C566A
|
||||
#define nord4 #D8DEE9
|
||||
#define nord5 #E5E9F0
|
||||
#define nord6 #ECEFF4
|
||||
#define nord7 #8FBCBB
|
||||
#define nord8 #88C0D0
|
||||
#define nord9 #81A1C1
|
||||
#define nord10 #5E81AC
|
||||
#define nord11 #BF616A
|
||||
#define nord12 #D08770
|
||||
#define nord13 #EBCB8B
|
||||
#define nord14 #A3BE8C
|
||||
#define nord15 #B48EAD
|
||||
|
||||
*.foreground: nord4
|
||||
*.background: [myOpacity]nord0
|
||||
*.cursorColor: nord4
|
||||
*fading: 0
|
||||
*fadeColor: nord3
|
||||
|
||||
*.color0: nord1
|
||||
*.color1: nord11
|
||||
*.color2: nord14
|
||||
*.color3: nord13
|
||||
*.color4: nord9
|
||||
*.color5: nord15
|
||||
*.color6: nord8
|
||||
*.color7: nord5
|
||||
*.color8: nord3
|
||||
*.color9: nord11
|
||||
*.color10: nord14
|
||||
*.color11: nord13
|
||||
*.color12: nord9
|
||||
*.color13: nord15
|
||||
*.color14: nord7
|
||||
*.color15: nord6
|
|
@ -1,37 +0,0 @@
|
|||
!Font
|
||||
URxvt.font: xft:myfont:size=myfontsize,style=medium
|
||||
URxvt.boldFont: xft:myfont:size=myfontsize,style=bold
|
||||
URxvt.italicFont: xft:myfont:size=myfontsize,style=italic
|
||||
URxvt.boldItalicFont: xft:myfont:size=myfontsize,style=bold,italic
|
||||
URxvt.letterSpace: -1
|
||||
|
||||
!UI
|
||||
URxvt.scrollBar: false
|
||||
URxvt.borderless: true
|
||||
URxvt.saveLines: 20000
|
||||
URxvt.dynamicColors: true
|
||||
URxvt.fading: 25
|
||||
|
||||
!Sane utility defaults
|
||||
URxvt.loginShell: true
|
||||
URxvt.scrollTtyKeypress: true
|
||||
URxvt.scrollTtyOutput: false
|
||||
URxvt.scrollWithBuffer: false
|
||||
URxvt.skipScroll: true
|
||||
|
||||
!Extensions
|
||||
!Tabbing disabled by default (TMUX used for tabbed terminals)
|
||||
!to enable tabbing comment the bottom line and uncomment the one above.
|
||||
!URxvt.perl-ext-common: default,matcher,tabbed
|
||||
URxvt.perl-ext-common: default,matcher
|
||||
|
||||
! Link Clicking
|
||||
URxvt.url-launcher: /usr/bin/xdg-open
|
||||
URxvt.matcher.button: 1
|
||||
URxvt.matcher.rend.0: Uline Bold fg5
|
||||
|
||||
!Tab Styling
|
||||
URxvt.tabbed.tabbar-fg: 2
|
||||
URxvt.tabbed.tabbar-bg: 0
|
||||
URxvt.tabbed.tab-fg: 3
|
||||
URxvt.tabbed.tab-bg: 0
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
userresources=$HOME/.Xresources
|
||||
usermodmap=$HOME/.Xmodmap
|
||||
userresources=$XDG_CONFIG_HOME/xresources/Xresources
|
||||
usermodmap=$XDG_CONFIG_HOME/xresources/Xmodmap
|
||||
sysresources=/etc/X11/xinit/.Xresources
|
||||
sysmodmap=/etc/X11/xinit/.Xmodmap
|
||||
|
||||
|
@ -37,7 +37,7 @@ fi
|
|||
setxkbmap -option ctrl:nocaps
|
||||
# sets default to EURkey layout, with possibility to switch to german
|
||||
# sets german layout to be default for the only pc I have with a german keyboard
|
||||
if [[ $HOST == "marty-desk" ]] || [[ $HOSTNAME == "marty-desk" ]]; then
|
||||
if [ "$HOST" = "marty-desk" ] || [ "$HOSTNAME" = "marty-desk" ]; then
|
||||
setxkbmap -layout de,eu
|
||||
else
|
||||
setxkbmap -layout eu,de
|
Loading…
Reference in a new issue