chore: initial commit

pull/6/head
Adam Veldhousen 2021-10-16 17:05:07 -05:00
commit ef79a67adc
Signed by: adam
GPG Key ID: 6DB29003C6DD1E4B
343 changed files with 22866 additions and 0 deletions

View File

@ -0,0 +1,269 @@
# Configuration for Alacritty, the GPU enhanced terminal emulator
# Any items in the `env` entry below will be added as
# environment variables. Some entries may override variables
# set by alacritty it self.
env:
# TERM env customization.
#
# If this property is not set, alacritty will set it to xterm-256color.
#
# Note that some xterm terminfo databases don't declare support for italics.
# You can verify this by checking for the presence of `smso` and `sitm` in
# `infocmp xterm-256color`.
TERM: xterm-256color
# Window dimensions in character columns and lines
# (changes require restart)
dimensions:
columns: 80
lines: 24
# Adds this many blank pixels of padding around the window
# Units are physical pixels; this is not DPI aware.
# (change requires restart)
padding:
x: 2
y: 2
# The FreeType rasterizer needs to know the device DPI for best results
# (changes require restart)
dpi:
x: 96.0
y: 96.0
# Display tabs using this many cells (changes require restart)
tabspaces: 4
# When true, bold text is drawn using the bright variant of colors.
draw_bold_text_with_bright_colors: true
# Font configuration (changes require restart)
font:
# The normal (roman) font face to use.
normal:
family: monospace # should be "Menlo" or something on macOS.
# Style can be specified to pick a specific face.
# style: Regular
# The bold font face
bold:
family: monospace # should be "Menlo" or something on macOS.
# Style can be specified to pick a specific face.
# style: Bold
# The italic font face
italic:
family: monospace # should be "Menlo" or something on macOS.
# Style can be specified to pick a specific face.
# style: Italic
# Point size of the font
size: 11.0
# Offset is the extra space around each character. offset.y can be thought of
# as modifying the linespacing, and offset.x as modifying the letter spacing.
offset:
x: 0.0
y: 0.0
# Glyph offset determines the locations of the glyphs within their cells with
# the default being at the bottom. Increase the x offset to move the glyph to
# the right, increase the y offset to move the glyph upward.
glyph_offset:
x: 0.0
y: 0.0
# OS X only: use thin stroke font rendering. Thin strokes are suitable
# for retina displays, but for non-retina you probably want this set to
# false.
use_thin_strokes: true
# Should display the render timer
render_timer: true
# Use custom cursor colors. If true, display the cursor in the cursor.foreground
# and cursor.background colors, otherwise invert the colors of the cursor.
custom_cursor_colors: false
# Colors (Tomorrow Night Bright)
colors:
# Default colors
primary:
background: '0x000000'
foreground: '0xeaeaea'
# Colors the cursor will use if `custom_cursor_colors` is true
cursor:
text: '0x000000'
cursor: '0xffffff'
# Normal colors
normal:
black: '0x000000'
red: '0xd54e53'
green: '0xb9ca4a'
yellow: '0xe6c547'
blue: '0x7aa6da'
magenta: '0xc397d8'
cyan: '0x70c0ba'
white: '0x424242'
# Bright colors
bright:
black: '0x666666'
red: '0xff3334'
green: '0x9ec400'
yellow: '0xe7c547'
blue: '0x7aa6da'
magenta: '0xb77ee0'
cyan: '0x54ced6'
white: '0x2a2a2a'
# Visual Bell
#
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
# rung, the terminal background will be set to white and transition back to the
# default background color. You can control the rate of this transition by
# setting the `duration` property (represented in milliseconds). You can also
# configure the transition function by setting the `animation` property.
#
# Possible values for `animation`
# `Ease`
# `EaseOut`
# `EaseOutSine`
# `EaseOutQuad`
# `EaseOutCubic`
# `EaseOutQuart`
# `EaseOutQuint`
# `EaseOutExpo`
# `EaseOutCirc`
# `Linear`
#
# To completely disable the visual bell, set its duration to 0.
#
visual_bell:
animation: EaseOutExpo
duration: 1
# Key bindings
#
# Each binding is defined as an object with some properties. Most of the
# properties are optional. All of the alphabetical keys should have a letter for
# the `key` value such as `V`. Function keys are probably what you would expect
# as well (F1, F2, ..). The number keys above the main keyboard are encoded as
# `Key1`, `Key2`, etc. Keys on the number pad are encoded `Number1`, `Number2`,
# etc. These all match the glutin::VirtualKeyCode variants.
#
# Possible values for `mods`
# `Command`, `Super` refer to the super/command/windows key
# `Control` for the control key
# `Shift` for the Shift key
# `Alt` and `Option` refer to alt/option
#
# mods may be combined with a `|`. For example, requiring control and shift
# looks like:
#
# mods: Control|Shift
#
# The parser is currently quite sensitive to whitespace and capitalization -
# capitalization must match exactly, and piped items must not have whitespace
# around them.
#
# Either an `action` or `chars` field must be present. `chars` writes the
# specified string every time that binding is activated. These should generally
# be escape sequences, but they can be configured to send arbitrary strings of
# bytes. Possible values of `action` include `Paste` and `PasteSelection`.
#
# Want to add a binding (e.g. "PageUp") but are unsure what the X sequence
# (e.g. "\x1b[5~") is? Open another terminal (like xterm) without tmux,
# then run `showkey -a` to get the sequence associated to a key combination.
key_bindings:
- { key: V, mods: Control|Shift, action: Paste }
- { key: C, mods: Control|Shift, action: Copy }
- { key: Q, mods: Command, action: Quit }
- { key: W, mods: Command, action: Quit }
- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Home, chars: "\x1bOH", mode: AppCursor }
- { key: Home, chars: "\x1b[1~", mode: ~AppCursor }
- { key: End, chars: "\x1bOF", mode: AppCursor }
- { key: End, chars: "\x1b[4~", mode: ~AppCursor }
- { key: PageUp, mods: Shift, chars: "\x1b[5;2~" }
- { key: PageUp, mods: Control, chars: "\x1b[5;5~" }
- { key: PageUp, chars: "\x1b[5~" }
- { key: PageDown, mods: Shift, chars: "\x1b[6;2~" }
- { key: PageDown, mods: Control, chars: "\x1b[6;5~" }
- { key: PageDown, chars: "\x1b[6~" }
- { key: Left, mods: Shift, chars: "\x1b[1;2D" }
- { key: Left, mods: Control, chars: "\x1b[1;5D" }
- { key: Left, mods: Alt, chars: "\x1b[1;3D" }
- { key: Left, chars: "\x1b[D", mode: ~AppCursor }
- { key: Left, chars: "\x1bOD", mode: AppCursor }
- { key: Right, mods: Shift, chars: "\x1b[1;2C" }
- { key: Right, mods: Control, chars: "\x1b[1;5C" }
- { key: Right, mods: Alt, chars: "\x1b[1;3C" }
- { key: Right, chars: "\x1b[C", mode: ~AppCursor }
- { key: Right, chars: "\x1bOC", mode: AppCursor }
- { key: Up, mods: Shift, chars: "\x1b[1;2A" }
- { key: Up, mods: Control, chars: "\x1b[1;5A" }
- { key: Up, mods: Alt, chars: "\x1b[1;3A" }
- { key: Up, chars: "\x1b[A", mode: ~AppCursor }
- { key: Up, chars: "\x1bOA", mode: AppCursor }
- { key: Down, mods: Shift, chars: "\x1b[1;2B" }
- { key: Down, mods: Control, chars: "\x1b[1;5B" }
- { key: Down, mods: Alt, chars: "\x1b[1;3B" }
- { key: Down, chars: "\x1b[B", mode: ~AppCursor }
- { key: Down, chars: "\x1bOB", mode: AppCursor }
- { key: Tab, mods: Shift, chars: "\x1b[Z" }
- { key: F1, chars: "\x1bOP" }
- { key: F2, chars: "\x1bOQ" }
- { key: F3, chars: "\x1bOR" }
- { key: F4, chars: "\x1bOS" }
- { key: F5, chars: "\x1b[15~" }
- { key: F6, chars: "\x1b[17~" }
- { key: F7, chars: "\x1b[18~" }
- { key: F8, chars: "\x1b[19~" }
- { key: F9, chars: "\x1b[20~" }
- { key: F10, chars: "\x1b[21~" }
- { key: F11, chars: "\x1b[23~" }
- { key: F12, chars: "\x1b[24~" }
- { key: Back, chars: "\x7f" }
- { key: Back, mods: Alt, chars: "\x1b\x7f" }
- { key: Insert, chars: "\x1b[2~" }
- { key: Delete, chars: "\x1b[3~" }
# Mouse bindings
#
# Currently doesn't support modifiers. Both the `mouse` and `action` fields must
# be specified.
#
# Values for `mouse`:
# - Middle
# - Left
# - Right
# - Numeric identifier such as `5`
#
# Values for `action`:
# - Paste
# - PasteSelection
# - Copy (TODO)
mouse_bindings:
- { mouse: Middle, action: PasteSelection }
mouse:
double_click: { threshold: 300 }
triple_click: { threshold: 300 }
selection:
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
hide_cursor_when_typing: false
# Shell
#
# You can set shell.program to the path of your favorite shell, e.g. /bin/fish.
# Entries in shell.args are passed unmodified as arguments to the shell.
shell:
program: /bin/bash
args:
- --login

View File

@ -0,0 +1,91 @@
# basic configuration
#backend = "glx";
#vsync = "opengl-swc";
#backend = "xrender";
backend = "glx";
vsync = true;
use-damage = true;
glx-no-stencil = true;
glx-copy-from-front = false;
xrender-sync-fence = true;
detect-rounded-corners = true;
#################################
#
# Shadows
#
#################################
# Enabled client-side shadows on windows.
shadow = true;
# The blur radius for shadows. (default 12)
shadow-radius = 5;
# The left offset for shadows. (default -15)
shadow-offset-x = -5;
# The top offset for shadows. (default -15)
shadow-offset-y = -5;
# The translucency for shadows. (default .75)
shadow-opacity = 0.75;
# The shadow exclude options are helpful if you have shadows enabled. Due to the way compton draws its shadows, certain applications will have visual glitches
# (most applications are fine, only apps that do weird things with xshapes or argb are affected).
# This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher.
shadow-exclude = [
"! name~=''",
"name = 'Notification'",
"name = 'Plank'",
"name = 'Docky'",
"name = 'Kupfer'",
"name = 'xfce4-notifyd'",
"name *= 'VLC'",
"name *= 'compton'",
"name *= 'Chromium'",
"name *= 'Chrome'",
"name *= 'Firefox'",
"name *= 'Visual'",
"name *= 'Slack'",
"name *= 'Insomnia'",
"name *= 'Zoom'",
"class_g = 'Conky'",
"class_g = 'Kupfer'",
"class_g = 'Synapse'",
"class_g ?= 'Notify-osd'",
"class_g ?= 'Cairo-dock'",
"class_g ?= 'Xfce4-notifyd'",
"class_g ?= 'Xfce4-power-manager'"
];
# Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners)
shadow-ignore-shaped = false;
#################################
#
# Opacity
#
#################################
inactive-opacity = 1;
active-opacity = 1;
frame-opacity = 1;
inactive-opacity-override = true;
# Dim inactive windows. (0.0 - 1.0)
#inactive-dim = 0.1;
# Do not let dimness adjust based on window opacity.
#inactive-dim-fixed = true;
# Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred.
#blur-background = true;
blur-background = false;
# Blur background of opaque windows with transparent frames as well.
# blur-background-frame = true;
# Do not let blur radius adjust based on window opacity.
#blur-background-fixed = true;
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'"
];
# transparancy settings for i3
opacity-rule = [
"0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
];

327
.config/dunst/dunstrc Normal file
View File

@ -0,0 +1,327 @@
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = mouse
# The geometry of the window:
# [{width}]x{height}[+/-{x}+/-{y}]
# The geometry of the message window.
# The height is measured in number of notifications everything else
# in pixels. If the width is omitted but the height is given
# ("-geometry x2"), the message window expands over the whole screen
# (dmenu-like). If width is 0, the window expands to the longest
# message displayed. A positive x is measured from the left, a
# negative from the right side of the screen. Y is measured from
# the top and down respectively.
# The width can be negative. In this case the actual width is the
# screen width minus the width defined in within the geometry option.
geometry = "300x5-30+20"
# Show how many messages are currently hidden (because of geometry).
indicate_hidden = yes
# Shrink window if it's smaller than the width. Will be ignored if
# width is 0.
shrink = no
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.).
transparency = 50
# The height of the entire notification. If the height is smaller
# than the font height and padding combined, it will be raised
# to the font height and padding.
notification_height = 0
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
separator_height = 2
# Padding between text and separator.
padding = 8
# Horizontal padding.
horizontal_padding = 8
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 3
# Defines color of the frame around the notification window.
frame_color = "#222"
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Sort messages by urgency.
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
# Transient notifications ignore this setting.
idle_threshold = 60
### Text ###
font = Arial 10
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed
format = "<b>%s</b>\n%b\n%p\n"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Split notifications into multiple lines if they don't fit into
# geometry.
word_wrap = yes
# When word_wrap is set to no, specify where to ellipsize long lines.
# Possible values are "start", "middle" and "end".
ellipsize = middle
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Merge multiple notifications with the same content
stack_duplicates = true
# Hide the count of merged notifications with the same content
hide_duplicate_count = true
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Align icons left/right/off
icon_position = left
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 32
# Paths to default icons.
icon_path = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
# dmenu path.
dmenu = /usr/bin/dmenu -p dunst:
# Browser for opening urls in context menu.
browser = /usr/bin/firefox -new-tab
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Alert
# Define the class of the windows spawned by dunst
class = Dunst
# Print a notification on startup.
# This is mainly for error detection, since dbus (re-)starts dunst
# automatically after a crash.
startup_notification = false
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
[shortcuts]
# Shortcuts are specified as [modifier+][modifier+]...key
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
# "mod3" and "mod4" (windows-key).
# Xev might be helpful to find names for keys.
# C1616lose notification.
close = ctrl+space
# Close all notifications.
close_all = ctrl+shift+space
# Redisplay last message(s).
# On the US keyboard layout "grave" is normally above TAB and left
# of "1". Make sure this key actually exists on your keyboard layout,
# e.g. check output of 'xmodmap -pke'
history = ctrl+grave
# Context menu.
context = ctrl+shift+period
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#222222"
foreground = "#dfdfdf"
timeout = 10
# Icon for notifications with low urgency, uncomment to enable
icon = /usr/share/icons/Adwaita/16x16/status/secuity-high-symbolic.symblic.png
[urgency_normal]
background = "#222222"
foreground = "#dfdfdf"
timeout = 10
# Icon for notifications with normal urgency, uncomment to enable
icon = /usr/share/icons/Adwaita/16x16/status/secuity-high-symbolic.symblic.png
[urgency_critical]
background = "#222222"
foreground = "#dfdfdf"
frame_color = "#bd2c40"
timeout = 0
# Icon for notifications with critical urgency, uncomment to enable
icon = /usr/share/icons/Adwaita/16x16/status/secuity-high-symbolic.symblic.png
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
# Messages can be matched by "appname", "summary", "body", "icon", "category",
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
# "background", "new_icon" and "format".
# Shell-like globbing will get expanded.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: if you don't want a notification to be displayed, set the format
# to "".
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# format = ""
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
# vim: ft=cfg

173
.config/git/.gitconfig Normal file
View File

@ -0,0 +1,173 @@
[alias]
# View abbreviated SHA, description, and history graph
l = log --pretty=format:'%Cblue%h -%d %Cgreen%an %Creset%s - %Cred%GS' --abbrev-commit --date=relative --branches --graph -n 45
# View the current working tree status using the short format
s = status -s
# Show the diff between the latest commit and the current state
d = !"git diff --color --patch-with-stat"
dc = !"git diff --cached --color --patch-with-stat"
# `git di $number` shows the diff between the state `$number` revisions ago and the current state
di = !"d() { git diff --color --patch-with-stat HEAD~$1 | diff-so-fancy; }; git diff-index --color --quiet HEAD --; d"
# Pull in remote changes for the current repository and all its submodules
p = !"git pull; git submodule foreach git pull origin master"
# Clone a repository including all submodules
c = clone --recursive
cpv = commit -pmv
# Commit all changes
ca = !git add -A && git commit -av -S
# commits with gpgsign flag
cs = commit -S
# commits with gpgsign and inline message flag
csm = commit -S -m
# Switch to a branch, creating it if necessary
go = checkout -B
# pull rebase
pr = pull --rebase
# Show verbose output about tags, branches or remotes
tags = tag -l
branches = branch -a
remotes = remote -v
# Credit an author on the latest commit
credit = "!f() { git commit --amend --author \"$1 <$2>\" -C HEAD; }; f"
# Interactive rebase with the given number of latest commits
reb = "!r() { git rebase -i HEAD~$1; }; r"
# Find branches containing commit
fb = "!f() { git branch -a --contains $1; }; f"
# Find tags containing commit
ft = "!f() { git describe --always --contains $1; }; f"
# Find commits by source code
fc = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short -S$1; }; f"
# Find commits by commit message
fm = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short --grep=$1; }; f"
# Remove branches that have already been merged with master
dm = "!git branch --merged | grep -v '\\*' | xargs -n 1 git branch -d"
[diff]
# Git diff will use (i)ndex, (w)ork tree, (c)ommit and (o)bject
# instead of a/b/c/d as prefixes for patches
mnemonicprefix = true
tool = vimdiff
[merge]
tool = vimdiff
conflictstyle = diff3
[mergetool]
prompt = false
trustExitCode = false
[advice]
statusHints = false
[apply]
# Detect whitespace errors when applying a patch
whitespace = fix
[gc]
auto=1
[core]
# Use custom `.gitignore` and `.gitattributes`
excludesfile = ~/.config/git/.gitignore
attributesfile = ~/.config/git/.gitattributes
# Treat spaces before tabs and all kinds of trailing whitespace as an error.
# [default] trailing-space: looks for spaces at the end of a line
# [default] space-before-tab: looks for spaces before tabs at the beginning of
# a line
whitespace = space-before-tab,-indent-with-non-tab,trailing-space
# Make `git rebase` safer on OS X
# More info: <http://www.git-tower.com/blog/make-git-rebase-safe-on-osx/>
trustctime = false
autocrlf = false
eol = 'lf'
editor = $EDITOR
hooksPath = ~/.config/git/.githooks/
[color]
# Use colors in Git commands that are capable of colored output when
# outputting to the terminal. (This is the default setting in Git ≥ 1.8.4.)
ui = auto
[color "branch"]
current = yellow reverse
local = yellow
remote = green
[color "diff"]
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
[color "status"]
added = yellow
changed = green
untracked = cyan
[merge]
# Include summaries of merged commits in newly created merge commit messages
log = true
# better merge messages
summary=true
# URL shorthands
[url "https://git.vdhsn.com"]
insteadOf = git@git.vdhsn.com
[url "git://github.com/"]
insteadOf = "github:"
[url "git@gist.github.com:"]
insteadOf = "gst:"
pushInsteadOf = "gist:"
pushInsteadOf = "git://gist.github.com/"
[url "git://gist.github.com/"]
insteadOf = "gist:"
[push]
default = current
[pull]
default = current
ff = only
[user]
email = adamveld12@gmail.com
name = Adam Veldhousen
signingkey = 4FA79E5B6598505C8DFA30A7A466CEE1415C0B9C
[commit]
gpgsign = true
template = ~/.config/git/.gitmessage
[help]
autocorrect=20
[credential]
# for OSX
#helper = osxkeychain
# for Linux
helper = store --file ~/.config/git/.git-credentials
[gpg]
program = gpg

View File

@ -0,0 +1,17 @@
#!/usr/bin/env bash
if [ -f "$PWD/makefile" ] && [ ! -z "$(cat $PWD/makefile | grep '^lint:')" ]; then
echo "lint rule found in $PWD/makefile..."
make lint
elif [ -f "$PWD/package.json" ] && [ ! -z "$(cat $PWD/package.json | grep '\"lint\"')" ]; then
echo "running npm run lint..."
npm run lint
fi
if [ -f "$PWD/makefile" ] && [ ! -z "$(cat $PWD/makefile | grep '^test:')" ]; then
echo "test rule found in $PWD/makefile..."
make test
elif [ -f "$PWD/package.json" ] && [ ! -z "$(cat $PWD/package.json | grep '\"test\"')" ]; then
echo "running npm run test..."
npm run test
fi

14
.config/git/.githooks/pre-push Executable file
View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
# If the following text is found anywhere in the source for HEAD, we will prevent pushing
dont_push_flag="DONT PUSH ME"
flag_found=`git grep --color "$dont_push_flag" HEAD | grep -v 'pre-push'`
if [ -n "$flag_found" ]
then
# Display which commit the first occurence of the flag was found and exit failure
commit=`git log --pretty=format:'%Cred%h%Creset' -S "$dont_push_flag" | tail -n1`
echo "Found $flag_found, first occurence was in $commit, not pushing"
exit 1
fi
exit 0

99
.config/git/.gitignore vendored Normal file
View File

@ -0,0 +1,99 @@
# File
.git-stats
.bashrc
.rnd
*.kdbx
.vim_colorv_cache
*.log
*.exe
.viminfo
.bash_history
.erlang.cookie
.mongorc.js
.sh_history
.dbshell
.netrc
*.dll
*.orig
.dockercfg
.gnupg
# Directory
.heroku/
.vim/bundle/*
.cache/
.gem/
.ssh/
.node-gyp/
./Tools/Console2/
.npm/
target
Library
Tools/vim/bundle/*
Tools/vim/tutor/
.lesshst
.atom
./assets/**/lib
.bin
.plugman
.npmrc
.kre
.forever
.android
.atom/packages
.cordova
.grunt-init
Tools/vim/vimrc
Tools/vim/vim74
Tools/cmder
.wireshark/
.git-templates/
.k/
.boot2docker/
.vagrant*
VirtualBox VMs/
.VirtualBox/
Applications/
.local/
.thefuck/
.vim/
.chefdk/
projects/
.keybase-installer/
# Compiled source #
###################
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

19
.config/git/.gitmessage Normal file
View File

@ -0,0 +1,19 @@
# ^ <type>(optional scope): <description>
# common <type>s include: feat, bugfix, chore, ci, docs, style, perf, test, build
# fix: a commit of the type fix patches a bug in your codebase (this correlates with PATCH in Semantic Versioning).
# feat: a commit of the type feat introduces a new feature to the codebase (this correlates with MINOR in Semantic Versioning).
#
# <description>: Capitalized, short (70 chars or less) summary
# ^ [optional body]
# Write your commit message in the imperative: "Fix bug" and not "Fixed bug"
# or "Fixes bug." This convention matches up with commit messages generated
# by commands like git merge and git revert.
# ^ [optional footer(s)]
# BREAKING CHANGE: a commit that has a footer BREAKING CHANGE:, or appends a ! after the type/scope, introduces a breaking API change (correlating with MAJOR in Semantic Versioning).
# A BREAKING CHANGE can be part of commits of any type.
# footers other than BREAKING CHANGE: <description> may be provided and follow a convention similar to git trailer format.
# set up the linter @ https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional
# Read more @ https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html

236
.config/i3/config Normal file
View File

@ -0,0 +1,236 @@
# i3 config file (v4)
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
# This config file uses keycodes (bindsym) and was written for the QWERTY
# layout.
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
font pango:DejaVu Sans Mono 12
# Mod1 = Alt
# Mod4 = Start button
set $mod Mod4
#########################################
# STARTUP
#########################################
# set dpi settings
# for 4k
#exec_always xrandr --dpi 165
# clipboard
exec wl-paste -t text --watch clipman store
# start dunst for custom notification popups
exec_always --no-startup-id ~/.config/i3/dunst.sh
# gnome-keyring
exec_always --no-startup-id gnome-keyring-daemon -r
# start waybar
exec_always --no-startup-id ~/.config/waybar/start.sh
# set wallpaper
exec_always --no-startup-id nitrogen --head=0 --save --set-scaled ~/Pictures/Wallpapers/logo.svg
#############################
# BINDINGS
##############################
# screen shot (area)
bindsym $mod+x exec --no-startup-id gnome-screenshot -a -c -f /tmp/latest-screenshot.png
# Pulse Audio controls
# set default audio sink to laptop speakers
#exec --no-startup-id pactl set-default-sink 'alsa_output.pci-0000_00_1f.3.analog-stereo'
# set default to jabra
#pactl set-default-sink 'alsa_output.usb-0b0e_Jabra_SPEAK_510_USB_501AA56C0DBB020A00-00.analog-stereo'
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 'alsa_output.pci-0000_00_1f.3.analog-stereo' +5% && pactl set-sink-volume 'alsa_output.usb-0b0e_Jabra_SPEAK_510_USB_501AA56C0DBB020A00-00.analog-stereo' +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 'alsa_output.pci-0000_00_1f.3.analog-stereo' -5% && pactl set-sink-volume 'alsa_output.usb-0b0e_Jabra_SPEAK_510_USB_501AA56C0DBB020A00-00.analog-stereo' -5% #increase sound volume#decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 'alsa_output.pci-0000_00_1f.3.analog-stereo' toggle && pactl set-sink-mute 'alsa_output.usb-0b0e_Jabra_SPEAK_510_USB_501AA56C0DBB020A00-00.analog-stereo' toggle # mute sound
# resize window (you can also use the mouse for that)
mode "Audio Setup" {
# These bindings trigger as soon as you enter the resize mode
bindsym 1 exec pactl set-default-sink 'alsa_output.pci-0000_00_1f.3.analog-stereo'
bindsym 2 exec pactl set-default-sink 'alsa_output.usb-0b0e_Jabra_SPEAK_510_USB_501AA56C0DBB020A00-00.analog-stereo'
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+Shift+a mode "Audio Setup"
# Media player controls
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioPause exec playerctl pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
# Backlight
#
bindsym XF86MonBrightnessUp exec brightnessctl set +5% # increase screen brightness
bindsym XF86MonBrightnessDown exec brightnessctl set 5%- # decrease screen brightness
# lock the screen
bindsym $mod+Ctrl+Shift+l exec ~/.config/i3/lock.sh SUSPEND
# start a terminal
bindsym $mod+Return exec terminator
# start firefox
bindsym $mod+Shift+Return exec firefox
#bindsym Ctrl+Shift+Return exec /opt/google/chrome/chrome --type=renderer --disable-webrtc-apm-in-audio-service --lang=en-US --enable-auto-
# insomnia
bindsym $mod+Shift+i exec insomnia
# Sets up external display
bindsym $mod+Shift+g exec ~/.config/waybar/start.sh
#bindsym $mod+Shift+g exec ~/.config/i3/setup_external_displays.sh CONNECT && ~/.config/i3/polybar.sh
#bindsym $mod+Shift+f exec ~/.config/i3/setup_external_displays.sh DISCONNECT && ~/.config/i3/polybar.sh
#bindsym $mod+Shift+Ctrl+g exec ~/.config/i3/setup_external_displays.sh RECONNECT_PRIMARY && ~/.config/i3/polybar.sh
bindsym $mod+Shift+x swaymsg move workspace to output right
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that installed.
bindsym $mod+d exec --no-startup-id rofi -show drun -i -location 2 -yoffset 40
bindsym $mod+shift+d exec --no-startup-id rofi -show run -i -location 2 -yoffset 40
# reload the configuration file
bindsym $mod+Shift+c exec swaymsg reload
# restart inplace (preserves your layout/session, can be used to upgrade)
bindsym $mod+Shift+r exec swaymsg restart
# exit (logs you out of your session)
bindsym $mod+Shift+e exec "swaynag -t warning -m 'Do you really want to exit? This will end your session.' -b 'Yes, exit' 'swaymsg exit'"
# move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
# split in horizontal orientation
bindsym $mod+i split h
# split in vertical orientation
bindsym $mod+s split t
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# kill focused window
bindsym $mod+Shift+q kill
# use these keys for focus, movement, and resize directions when reaching for
# the arrows is not convenient
set $left h
set $down j
set $up k
set $right l
# change focus
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+e layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+q layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# switch to workspace
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym $left resize shrink width 5 px or 5 ppt
bindsym $down resize grow height 5 px or 5 ppt
bindsym $up resize shrink height 5 px or 5 ppt
bindsym $right resize grow width 5 px or 5 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 5 px or 5 ppt
bindsym Down resize grow height 5 px or 5 ppt
bindsym Up resize shrink height 5 px or 5 ppt
bindsym Right resize grow width 5 px or 5 ppt
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
# shrink window borders
for_window [class="^.*"] border pixel 1
#new_window 1pixel
for_window [class="Tandem"] floating enable

6
.config/i3/dunst.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
killall -q dunst
while pgrep -x dunst >/dev/null; do sleep 0.1; done
dunst -config ~/.config/dunst/dunstrc

6
.config/i3/lock.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
i3lock-fancy -f 'Pragmata Pro' -t 'Type Password To Unlock';
if [ "$1" = "SUSPEND" ]; then
systemctl suspend;
if

5
.config/i3/picom.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
killall -q picom
while pgrep -x picom >/dev/null; do sleep 1; done
picom -C -f --no-fading-openclose --config /dev/null -b

20
.config/i3/polybar.sh Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
killall -q polybar
while pgrep -x polybar > /dev/null; do sleep 0.1; done
BACKGROUND=~/Pictures/Wallpapers/logo.svg
PRIMARY=$(xrandr | grep -i -e "eDP.* connected" | awk '{ print $1 }')
MONITOR=${PRIMARY} polybar 1080p-bottom &
MONITOR=${PRIMARY} polybar 1080p-top &
nitrogen --head=0 --save --set-color=#FFFFFF --set-centered ${BACKGROUND};
SECONDARY=$(xrandr | grep "^DP-[0-9] connected" | awk '{ print $1 }')
if [ ! -z "${SECONDARY}" ]; then
nitrogen --head=1 --save --set-color=#FFFFFF --set-centered ${BACKGROUND};
nitrogen --head=2 --save --set-color=#FFFFFF --set-centered ${BACKGROUND};
nitrogen --head=3 --save --set-color=#FFFFFF --set-centered ${BACKGROUND};
MONITOR=${SECONDARY} polybar 1080p-bottom &
MONITOR=${SECONDARY} polybar 1080p-top &
fi

View File

@ -0,0 +1,25 @@
#!/bin/bash
PRIMARY=$(xrandr | grep -i -e "eDP.* connected" | awk '{ print $1 }')
SECONDARY=$(xrandr | grep -m 1 "^DP-[0-9] connected" | awk '{ print $1 }')
BACKGROUND=~/Pictures/Wallpapers/logo.svg
if [ "$1" = "CONNECT" ]; then
xrandr --output "${SECONDARY}" --auto --right-of ${PRIMARY} --dpi 165;
nitrogen --head=2 --save --set-color=#FFFFFF --set-centered "${BACKGROUND}";
nitrogen --head=1 --save --set-color=#FFFFFF --set-centered "${BACKGROUND}";
elif [ "$1" = "DISCONNECT" ]; then
xrandr --output "${SECONDARY}" --off;
elif [ "$1" = "RECONNECT_PRIMARY" ]; then
xrandr --output ${PRIMARY} --off;
elif [ "$1" = "OFF" ]; then
xrandr --output ${PRIMARY} --off;
else
set +x;
exit 1;
fi
sleep 1;
xrandr --output ${PRIMARY} --auto --primary --preferred --dpi 100 --filter bilinear;
nitrogen --head=0 --save --set-color=#FFFFFF --set-centered ${BACKGROUND};

210
.config/irssi/config Normal file
View File

@ -0,0 +1,210 @@
servers = (
{
address = "chat.freenode.net";
chatnet = "freenode";
port = "7000";
use_ssl = "yes";
ssl_verify = "yes";
ssl_capath = "/etc/ssl/certs";
autoconnect = "no";
}
);
channels = (
{ name = "#plone"; chatnet = "freenode"; autojoin = "yes"; },
{ name = "#plone-framework"; chatnet = "freenode"; autojoin = "yes"; },
{ name = "#nixos"; chatnet = "freenode"; autojoin = "yes"; },
{ name = "#vimperator"; chatnet = "freenode"; autojoin = "yes"; }
);
aliases = {
J = "join";
WJOIN = "join -window";
WQUERY = "query -window";
LEAVE = "part";
BYE = "quit";
EXIT = "quit";
SIGNOFF = "quit";
DESCRIBE = "action";
DATE = "time";
HOST = "userhost";
LAST = "lastlog";
SAY = "msg *";
WI = "whois";
WII = "whois $0 $0";
WW = "whowas";
W = "who";
N = "names";
M = "msg";
T = "topic";
C = "clear";
CL = "clear";
K = "kick";
KB = "kickban";
KN = "knockout";
BANS = "ban";
B = "ban";
MUB = "unban *";
UB = "unban";
IG = "ignore";
UNIG = "unignore";
SB = "scrollback";
UMODE = "mode $N";
WC = "window close";
WN = "window new hide";
SV = "say Irssi $J ($V) - http://irssi.org/";
GOTO = "sb goto";
CHAT = "dcc chat";
RUN = "SCRIPT LOAD";
CALC = "exec - if command -v bc >/dev/null 2>&1\\; then printf '%s=' '$*'\\; echo '$*' | bc -l\\; else echo bc was not found\\; fi";
SBAR = "STATUSBAR";
INVITELIST = "mode $C +I";
Q = "QUERY";
"MANUAL-WINDOWS" = "set use_status_window off;set autocreate_windows off;set autocreate_query_level none;set autoclose_windows off;set reuse_unused_windows on;save";
EXEMPTLIST = "mode $C +e";
ATAG = "WINDOW SERVER";
UNSET = "set -clear";
RESET = "set -default";
};
statusbar = {
# formats:
# when using {templates}, the template is shown only if it's argument isn't
# empty unless no argument is given. for example {sb} is printed always,
# but {sb $T} is printed only if $T isn't empty.
items = {
# start/end text in statusbars
barstart = "{sbstart}";
barend = "{sbend}";
topicbarstart = "{topicsbstart}";
topicbarend = "{topicsbend}";
# treated "normally", you could change the time/user name to whatever
time = "{sb $Z}";
user = "{sb {sbnickmode $cumode}$N{sbmode $usermode}{sbaway $A}}";
# treated specially .. window is printed with non-empty windows,
# window_empty is printed with empty windows
window = "{sb $winref:$tag/$itemname{sbmode $M}}";
window_empty = "{sb $winref{sbservertag $tag}}";
prompt = "{prompt $[.15]itemname}";
prompt_empty = "{prompt $winname}";
topic = " $topic";
topic_empty = " Irssi v$J - http://www.irssi.org";
# all of these treated specially, they're only displayed when needed
lag = "{sb Lag: $0-}";
act = "{sb Act: $0-}";
more = "-- more --";
};
# there's two type of statusbars. root statusbars are either at the top
# of the screen or at the bottom of the screen. window statusbars are at
# the top/bottom of each split window in screen.
default = {
# the "default statusbar" to be displayed at the bottom of the window.
# contains all the normal items.
window = {
disabled = "no";
# window, root
type = "window";
# top, bottom
placement = "bottom";
# number
position = "1";
# active, inactive, always
visible = "active";
# list of items in statusbar in the display order
items = {
barstart = { priority = "100"; };
time = { };
user = { };
window = { };
window_empty = { };
lag = { priority = "-1"; };
act = { priority = "10"; };
more = { priority = "-1"; alignment = "right"; };
barend = { priority = "100"; alignment = "right"; };
vim_mode = { };
vim_windows = { };
};
};
# statusbar to use in inactive split windows
window_inact = {
type = "window";
placement = "bottom";
position = "1";
visible = "inactive";
items = {
barstart = { priority = "100"; };
window = { };
window_empty = { };
more = { priority = "-1"; alignment = "right"; };
barend = { priority = "100"; alignment = "right"; };
};
};
# we treat input line as yet another statusbar :) It's possible to
# add other items before or after the input line item.
# topicbar
topic = {
type = "root";
placement = "top";
position = "1";
visible = "always";
items = {
topicbarstart = { priority = "100"; };
topic = { };
topic_empty = { };
topicbarend = { priority = "100"; alignment = "right"; };
};
};
prompt = {
items = {
uberprompt = { priority = "-1"; };
input = { priority = "10"; };
};
position = "100";
};
};
};
settings = {
core = {
real_name = "solzhenitsyn";
user_name = "ivan";
nick = "deep";
};
"fe-text" = {
actlist_sort = "refnum";
term_force_colors = "yes";
autostick_split_windows = "yes";
};
"fe-common/core" = {
autocreate_own_query = "yes";
autocreate_query_level = "DCCMSGS";
use_status_window = "no";
use_msgs_window = "yes";
autoclose_windows = "no";
reuse_unused_windows = "yes";
print_active_channel = "yes";
autolog = "yes";
autolog_path = "~/.irssi/logs/$tag/%Y-%m-%d/$0.log";
};
"fe-common/irc" = { show_away_once = "yes"; };
"irc/core" = { channel_sync = "no"; };
};
hilights = ( { text = "datetimewidget"; nick = "yes"; word = "yes"; } );
logs = { };
ignores = (
{ level = "JOINS"; servertag = "freenode"; },
{ level = "NICKS"; servertag = "freenode"; },
{ level = "PARTS"; servertag = "freenode"; },
{ level = "QUITS"; servertag = "freenode"; }
);
chatnets = { bitlbee = { type = "IRC"; }; freenode = { type = "IRC"; }; };

View File

@ -0,0 +1,213 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Ansi 0 Color</key>
<dict>
<key>Blue Component</key>
<real>0.0</real>
<key>Green Component</key>
<real>0.0</real>
<key>Red Component</key>
<real>0.0</real>
</dict>
<key>Ansi 1 Color</key>
<dict>
<key>Blue Component</key>
<real>0.3333333432674408</real>
<key>Green Component</key>
<real>0.3333333432674408</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Ansi 10 Color</key>
<dict>
<key>Blue Component</key>
<real>0.3333333432674408</real>
<key>Green Component</key>
<real>1</real>
<key>Red Component</key>
<real>0.3333333432674408</real>
</dict>
<key>Ansi 11 Color</key>
<dict>
<key>Blue Component</key>
<real>0.3333333432674408</real>
<key>Green Component</key>
<real>1</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Ansi 12 Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>0.3333333432674408</real>
<key>Red Component</key>
<real>0.3333333432674408</real>
</dict>
<key>Ansi 13 Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>0.3333333432674408</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Ansi 14 Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>1</real>
<key>Red Component</key>
<real>0.3333333432674408</real>
</dict>
<key>Ansi 15 Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>1</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Ansi 2 Color</key>
<dict>
<key>Blue Component</key>
<real>0.3333333432674408</real>
<key>Green Component</key>
<real>1</real>
<key>Red Component</key>
<real>0.3333333432674408</real>
</dict>
<key>Ansi 3 Color</key>
<dict>
<key>Blue Component</key>
<real>0.3333333432674408</real>
<key>Green Component</key>
<real>1</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Ansi 4 Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>0.3333333432674408</real>
<key>Red Component</key>
<real>0.3333333432674408</real>
</dict>
<key>Ansi 5 Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>0.3333333432674408</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Ansi 6 Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>1</real>
<key>Red Component</key>
<real>0.3333333432674408</real>
</dict>
<key>Ansi 7 Color</key>
<dict>
<key>Blue Component</key>
<real>0.73333334922790527</real>
<key>Green Component</key>
<real>0.73333334922790527</real>
<key>Red Component</key>
<real>0.73333334922790527</real>
</dict>
<key>Ansi 8 Color</key>
<dict>
<key>Blue Component</key>
<real>0.33333333333333331</real>
<key>Green Component</key>
<real>0.33333333333333331</real>
<key>Red Component</key>
<real>0.33333333333333331</real>
</dict>
<key>Ansi 9 Color</key>
<dict>
<key>Blue Component</key>
<real>0.3333333432674408</real>
<key>Green Component</key>
<real>0.3333333432674408</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Background Color</key>
<dict>
<key>Blue Component</key>
<real>0.0</real>
<key>Green Component</key>
<real>0.0</real>
<key>Red Component</key>
<real>0.0</real>
</dict>
<key>Bold Color</key>
<dict>
<key>Blue Component</key>
<real>0.49019607901573181</real>
<key>Green Component</key>
<real>0.36862745881080627</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Cursor Color</key>
<dict>
<key>Blue Component</key>
<real>0.73333334922790527</real>
<key>Green Component</key>
<real>0.73333334922790527</real>
<key>Red Component</key>
<real>0.73333334922790527</real>
</dict>
<key>Cursor Text Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>1</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Foreground Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>1</real>
<key>Red Component</key>
<real>1</real>
</dict>
<key>Selected Text Color</key>
<dict>
<key>Blue Component</key>
<real>0.0</real>
<key>Green Component</key>
<real>0.0</real>
<key>Red Component</key>
<real>0.0</real>
</dict>
<key>Selection Color</key>
<dict>
<key>Blue Component</key>
<real>1</real>
<key>Green Component</key>
<real>0.83529412746429443</real>
<key>Red Component</key>
<real>0.70980393886566162</real>
</dict>
</dict>
</plist>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
[:1.1]
file=/home/adam/Pictures/Wallpapers/retro.jpg
mode=0
bgcolor=#000000
[xin_1]
file=/home/adam/Pictures/Wallpapers/logo.svg
mode=2
bgcolor=#ffffff
[xin_0]
file=/home/adam/Pictures/Wallpapers/logo.svg
mode=2
bgcolor=#ffffff

View File

@ -0,0 +1,12 @@
[geometry]
posx=3840
posy=24
sizex=3836
sizey=2089
[nitrogen]
view=icon
recurse=true
sort=alpha
icon_caps=true
dirs=/home/adam/Pictures/Wallpapers;

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 MiB

595
.config/polybar/config Normal file
View File

@ -0,0 +1,595 @@
;=====================================================
;
; To learn more about how to configure Polybar
; go to https://github.com/jaagr/polybar
;
; The README contains alot of information
;
;=====================================================
[colors]
background = #222
background-alt = #444
foreground = #dfdfdf
foreground-alt = #555
primary = #ffb52a
secondary = #e60053
alert = #bd2c40
success = #55aa55
warning = #ffda17
[bar/1080p-top]
monitor = ${env:MONITOR:eDP-1}
width = 100%
height =25
radius = 0
fixed-center = false
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
line-color = #f00
border-size = 0
border-color = #00000000
padding-left = 3
padding-right = 3
module-margin-left = 1
module-margin-right = 1
font-0 = "Ubuntu Mono derivative Powerline:style=Regular:pixelsize=12:1"
font-1 = "Symbola:size=16:antialias=true"
font-2 = "PragmataPro Liga:style=Regular:pixelsize=12:1"
modules-left = powermenu i3 xwindow
modules-center =
modules-right = polypomo wlan eth battery date
bottom = false
tray-position = right
tray-padding = 4
tray-transparent = true
tray-maxsize = 16
cursor-click = pointer
cursor-scroll = ns-resize
dpi-y = 100
dpi-x = 100
[bar/1080p-bottom]
;remove padding around bar
;override-redirect = true
monitor = ${env:MONITOR:eDP-1}
width = 100%
height = 30
radius = 0
fixed-center = false
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
line-color = #f00
border-size = 0
border-color = #00000000
padding-left = 3
padding-right = 3
module-margin-left = 1
module-margin-right = 1
font-0 = "Ubuntu Mono derivative Powerline:style=Regular:pixelsize=12:1"
font-1 = "Symbola:size=16:antialias=true"
font-2 = "PragmataPro Liga:style=Regular:pixelsize=12:1"
modules-left = spotify
modules-center =
modules-right = displaymenu audiomenu volume backlight filesystem temperature cpu memory keyboard
bottom = true
; tray-position = right
; tray-padding = 4
; tray-transparent = true
; tray-maxsize = 16
cursor-click = pointer
cursor-scroll = ns-resize
dpi-y = 100
dpi-x = 100
[bar/4k-bottom]
;remove padding around bar
;override-redirect = true
monitor = ${env:MONITOR:DP-0}
width = 100%
height = 50
radius = 0
fixed-center = false
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
line-color = #f00
border-size = 0
border-color = #00000000
padding-left = 3
padding-right = 3
module-margin-left = 1
module-margin-right = 1
font-0 = "Ubuntu Mono derivative Powerline:style=Regular:pixelsize=14:1"
font-1 = "Symbola:size=16:antialias=true"
font-2 = "PragmataPro Liga:style=Regular:pixelsize=14:1"
modules-left = spotify
modules-center =
modules-right = volume backlight filesystem temperature cpu memory keyboard
bottom = true
cursor-click = pointer
cursor-scroll = ns-resize
dpi-y = 125
dpi-x = 125
[bar/4k-top]
monitor = ${env:MONITOR:DP-0}
width = 100%
height = 50
radius = 0
fixed-center = false
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
line-color = #f00
border-size = 0
border-color = #00000000
padding-left = 3
padding-right = 3
module-margin-left = 1
module-margin-right = 1
font-0 = "Ubuntu Mono derivative Powerline:style=Regular:pixelsize=14:1"
font-1 = "Symbola:size=16:antialias=true"
font-2 = "PragmataPro Liga:style=Regular:pixelsize=14:1"
modules-left = powermenu i3 xwindow
modules-center =
modules-right = polypomo wlan eth battery date
bottom = false
tray-position = right
tray-padding = 4
tray-transparent = true
tray-maxsize = 16
cursor-click = pointer
cursor-scroll = ns-resize
dpi-y = 100
dpi-x = 100
[module/xwindow]
type = internal/xwindow
label = %title:0:60:...%
[module/keyboard]
type = internal/xkeyboard
blacklist-0 = num lock
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-prefix-underline = ${colors.secondary}
label-layout = %layout%
label-layout-underline = ${colors.secondary}
label-indicator-padding = 2
label-indicator-margin = 1
label-indicator-background = ${colors.secondary}
label-indicator-underline = ${colors.secondary}
[module/filesystem]
type = internal/fs
interval = 25
mount-0 = /
label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
label-unmounted = %mountpoint% not mounted
label-unmounted-foreground = ${colors.foreground-alt}
; https://github.com/polybar/polybar/wiki/Module:-bspwm
[module/bspwm]
type = internal/bspwm
label-focused = %icon% %index% %name%
label-focused-background = ${colors.background-alt}
label-focused-underline= ${colors.primary}
label-focused-padding = 2
label-occupied = %index% %name%
label-occupied-padding = 1
label-urgent = %index%!
label-urgent-background = ${colors.alert}
label-urgent-padding = 1
label-empty = %index% %name%
label-empty-foreground = ${colors.foreground-alt}
label-empty-padding = 1
[module/i3]
type = internal/i3
format = <label-state> <label-mode>
index-sort = true
wrapping-scroll = true
; Only show workspaces on the same output as the bar
pin-workspaces = true
label-mode-padding = 2
label-mode-foreground = #000
label-mode-background = ${colors.primary}
; focused = Active workspace on focused monitor
label-focused = %index%
label-focused-background = ${colors.background-alt}
label-focused-underline = ${colors.success}
label-focused-padding = 2
; unfocused = Inactive workspace on any monitor
label-unfocused = %index%
label-unfocused-padding = 1
; visible = Active workspace on unfocused monitor
label-visible = %index%
label-visible-background = ${colors.foreground-alt}
label-visible-underline = ${colors.primary}
label-visible-padding = 2
; urgent = Workspace with urgency hint set
label-urgent = %index%
label-urgent-background = ${colors.background-alt}
label-urgent-padding = 2
[module/mpd]
type = internal/mpd
format-online = <label-song> <icon-prev> <icon-stop> <toggle> <icon-next>
icon-prev = 
icon-stop = 
icon-play = 
icon-pause = 
icon-next = 
label-song-maxlen = 25
label-song-ellipsis = true
[module/backlight]
; Use the following command to list available cards:
; $ ls -1 /sys/class/backlight/
type = internal/backlight
; Default: the monitor defined for the running bar
; output = eDP-1
card = intel_backlight
enable-scroll = true
; output = eDP-1
; format = <label> <bar>
format = <label> <ramp>
; Available tokens:
; %percentage% (default)
label = BACKLIGHT: %percentage%%
; Only applies if <ramp> is used
ramp-0 = 🌕
ramp-1 = 🌔
ramp-2 = 🌓
ramp-3 = 🌒
ramp-4 = 🌑
; Only applies if <bar> is used
bar-width = 10
bar-indicator = |
bar-fill = ─
bar-empty = ─
[module/memory]
type = internal/memory
interval = 15
format-prefix = "MEM: "
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #4bffdc
label = %gb_used%/%gb_total%
[module/cpu]
type = internal/cpu
interval = 2
format-prefix = "CPU: "
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #f90000
label = %percentage%%
[module/wlan]
type = internal/network
;interface = wlo1
interface = wlan0
interval = 5.0
format-connected-prefix =
format-connected-prefix-foreground = ${colors.foreground-alt}
label-connected = '%essid%' %local_ip% U-%upspeed% D-%downspeed%
format-connected = <ramp-signal> <label-connected>
format-connected-underline = #9f78e1
;format-disconnected =
format-disconnected = <label-disconnected>
format-disconnected-underline = ${self.format-connected-underline}
label-disconnected = %ifname% X
label-disconnected-foreground = ${colors.foreground-alt}
ramp-signal-0 = ▁
ramp-signal-1 = ▁▂
ramp-signal-2 = ▁▂▃
ramp-signal-3 = ▁▂▃▄
ramp-signal-4 = ▁▂▃▅▇
ramp-signal-foreground = ${colors.foreground-alt}
[module/network]
type = internal/network
interface = enp109s0f1
;interface = enx8cae5cec01dd
interval = 5.0
format-connected-underline = #55aa55
;format-connected-prefix = " "
format-connected-prefix-foreground = ${colors.foreground-alt}
label-connected = eth %local_ip%
format-disconnected =
;format-disconnected = <label-disconnected>
;format-disconnected-underline = ${self.format-connected-underline}
label-disconnected = %ifname% disconnected
;label-disconnected-foreground = ${colors.foreground-alt}
[module/date]
type = internal/date
interval = 1
date = "%Y-%m-%d"
date-alt = " %Y-%m-%d"
time = %H:%M
time-alt = %H:%M:%S
format-prefix = 🗓
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #0a6cf5
label = %date% %time%
[module/volume]
type = internal/volume
label-volume = 🔊 VOL:
label-volume-foreground = ${root.foreground}
format-volume = <label-volume> <bar-volume>
format-muted-prefix = "🔊 "
format-muted-foreground = ${colors.foreground-alt}
label-muted = ---- MUTED ----
bar-volume-width = 12
bar-volume-foreground-0 = #55aa55
bar-volume-foreground-1 = #f5a70a
bar-volume-foreground-2 = #ff5555
bar-volume-gradient = true
bar-volume-indicator = ─
bar-volume-indicator-font = 2
bar-volume-fill = ─
bar-volume-fill-font = 2
bar-volume-empty = ─
bar-volume-empty-font = 2
bar-volume-empty-foreground = ${colors.foreground-alt}
[module/battery]
type = internal/battery
; Use the following command to list batteries and adapters:
; ls -1 /sys/class/power_supply
battery = BAT0
adapter = AC0
full-at = 97
poll-interval = 5
label-charging = %percentage%% - charging @ %consumption%W
format-charging = <animation-charging> <label-charging>
format-charging-underline = ${colors.success}
label-discharging = %percentage%% - %time% @ %consumption%W
format-discharging = <ramp-capacity> <label-discharging>
format-discharging-underline = ${colors.warning}
format-full-prefix = "|▇|"
format-full-prefix-foreground = ${colors.foreground-alt}
format-full-underline = ${colors.success}
label-full = " Battery Full"
ramp-capacity-0 = |_|
ramp-capacity-1 = |▁|
ramp-capacity-2 = |▃|
ramp-capacity-3 = |▄|
ramp-capacity-4 = |▅|
ramp-capacity-5 = |▆|
ramp-capacity-6 = |▇|
ramp-capacity-foreground = ${colors.foreground-alt}
animation-charging-0 = |▁|
animation-charging-1 = |▂|
animation-charging-2 = |▃|
animation-charging-3 = |▄|
animation-charging-4 = |▅|
animation-charging-5 = |▆|
animation-charging-6 = |▇|
animation-charging-foreground = ${colors.foreground-alt}
animation-discharging-framerate = 2000
animation-charging-framerate = 500
[module/temperature]
type = internal/temperature
interval = 2
thermal-zone = 0
base-temperature = 10
warn-temperature = 65
format = <ramp> <label>
format-underline = #f50a4d
format-warn = <ramp> <label-warn>
format-warn-underline = ${self.format-underline}
label = %temperature%
label-warn = 🔥%temperature%🔥
label-warn-foreground = ${colors.secondary}
ramp-0 = |_|
ramp-1 = |-|
ramp-2 = |^|
ramp-foreground = ${colors.foreground-alt}
[module/displaymenu]
type = custom/menu
expand-right = false
format-spacing = 1
label-open = DISPLAY
label-open-foreground = ${colors.secondary}
label-close = CANCEL
label-close-foreground = ${colors.secondary}
label-separator = |
label-separator-foreground = ${colors.foreground-alt}
menu-0-0 = Connect
menu-0-0-exec = ~/.config/i3/setup_external_displays.sh CONNECT
menu-0-1 = Disconnect
menu-0-1-exec = ~/.config/i3/setup_external_displays.sh DISCONNECT
[module/audiomenu]
type = custom/menu
expand-right = false
format-spacing = 1
label-open = LINE-OUT
label-open-foreground = ${colors.secondary}
label-close = CANCEL
label-close-foreground = ${colors.secondary}
label-separator = |
label-separator-foreground = ${colors.foreground-alt}
menu-0-0 = Speakers
menu-0-0-exec = pactl set-default-sink 'alsa_output.pci-0000_00_1f.3.analog-stereo'
menu-0-1 = Jabra
menu-0-1-exec = pactl set-default-sink 'alsa_output.usb-0b0e_Jabra_SPEAK_510_USB_501AA56C0DBB020A00-00.analog-stereo'
menu-0-2 = Razer Mic
menu-0-2-exec = pactl set-default-sink 'alsa_output.usb-Razer_Inc_Razer_Seiren_X_UC2102L01304427-00.analog-stereo'
menu-0-3 = HyperX Headset
menu-0-3-exec = pactl set-default-sink 'alsa_output.usb-Kingston_HyperX_7.1_Audio_00000000-00.stereo-fallback'
[module/powermenu]
type = custom/menu
expand-right = true
format-spacing = 1
label-open = I/O
label-open-foreground = ${colors.secondary}
label-close =  cancel
label-close-foreground = ${colors.secondary}
label-separator = |
label-separator-foreground = ${colors.foreground-alt}
menu-0-0 = lock
menu-0-0-exec = i3lock-fancy
menu-0-1 = suspend
menu-0-1-exec = systemctl suspend
menu-0-2 = reboot
menu-0-2-exec = menu-open-1
menu-0-3 = shutdown
menu-0-3-exec = menu-open-2
menu-1-0 = cancel
menu-1-0-exec = menu-open-0
menu-1-1 = reboot
menu-1-1-exec = shutdown -r now
menu-2-0 = power off
menu-2-0-exec = shutdown now
menu-2-1 = cancel
menu-2-1-exec = menu-open-0
[settings]
screenchange-reload = true
;compositing-background = xor
;compositing-background = screen
;compositing-foreground = source
;compositing-border = over
[global/wm]
margin-top = 5
margin-bottom = 5
[module/polypomo]
type = custom/script
exec = ~/tools/polybar/polypomo/polypomo
tail = true
label = POM:%output%
click-left = ~/tools/polybar/polypomo/polypomo toggle
click-right = ~/tools/polybar/polypomo/polypomo end
click-middle = ~/tools/polybar/polypomo/polypomo lock
scroll-up = ~/tools/polybar/polypomo time +60
scroll-down = ~/tools/polybar/polypomo time -60
format-underline = #1db954
[module/spotify]
type = custom/script
interval = 5
format-prefix = "🎶 "
format = 🎶<label> 🎶
exec = python ~/tools/polybar/polybar-spotify/spotify_status.py -p '>,||' -f '{play_pause} {song} -by- {artist} -from- {album}' --font 3 -t 120
format-underline = #1db954
; vim:ft=dosini

65
.config/terminator/config Normal file
View File

@ -0,0 +1,65 @@
[global_config]
title_transmit_bg_color = "#204a87"
title_receive_bg_color = "#ce5c00"
title_inactive_bg_color = "#555753"
inactive_color_offset = 0.936073059361
suppress_multiple_term_dialog = True
case_sensitive = False
[keybindings]
zoom_in = <Primary>equal
zoom_out = <Primary>minus
zoom_normal = <Primary><Shift>plus
new_tab = <Primary>t
go_up = <Primary><Shift>k
go_down = <Primary><Shift>j
go_left = <Primary><Shift>h
go_right = <Primary><Shift>l
split_horiz = <Primary>i
split_vert = <Primary>s
close_term = <Primary>w
paste = <Primary><Shift>v
search = <Primary>f
line_up = <Shift>Up
line_down = <Shift>Down
close_window = <Primary><Shift>w
next_tab = <Primary>Tab
ungroup_all = <Primary><Shift>g
ungroup_tab = <Primary><Shift>u
new_window = <Primary>n
edit_tab_title = <Primary>F2
edit_terminal_title = F2
[profiles]
[[default]]
visible_bell = True
background_color = "#002b36"
background_darkness = 0.89
background_type = transparent
cursor_color = "#aaaaaa"
font = PragmataPro Mono Liga 12
foreground_color = "#839496"
scrollback_infinite = True
palette = "#282828:#cc241d:#98971a:#d79921:#458588:#b16286:#689d6a:#a89984:#928374:#fb4934:#b8bb26:#fabd2f:#83a598:#d3869b:#8ec07c:#ebdbb2"
login_shell = True
custom_command = /bin/bash --login
use_system_font = False
[layouts]
[[default]]
[[[child0]]]
type = Window
parent = ""
order = 0
position = 0:25
maximised = False
fullscreen = False
size = 958, 1023
title = /bin/bash
last_active_term = 83e6ff1b-e9c5-4688-af8c-efb0ae56dd94
last_active_window = True
[[[terminal1]]]
type = Terminal
parent = child0
order = 0
profile = default
uuid = 83e6ff1b-e9c5-4688-af8c-efb0ae56dd94
directory = /home/adam/projects
[plugins]

122
.config/tmux/.tmux.conf Normal file
View File

@ -0,0 +1,122 @@
#------------------------------------------------------------------------------#
# vim:set ft=sh ("set modeline" in ~/.exrc)#
#------------------------------------------------------------------------------#
# Config file : ~/.config/tmux/.tmux.conf #
# #
# Author : Adam Veldhousen The USA #
#------------------------------------------------------------------------------#
#default to bash
set -g default-command "/bin/bash --login"
set -g default-shell "/bin/bash"
set -g default-terminal "xterm-256color"
# set esc-wait off, so vim works
set-option -sg escape-time 0
#set prefix to ctrl-a
unbind-key C-b
set-option -g prefix C-a
unbind-key C-a ; bind-key C-a send-prefix
# some nice ops
set-option -g bell-action any
set-option -g history-limit 10000
set-option -g set-titles on
set-option -g set-titles-string ' #I-#W '
set-option -g repeat-time 500
set-option -g visual-bell on
set-option -g base-index 1
#status bar
set-option -g status-keys vi
set-option -g status-interval 1
set-option -g status-justify left
set-option -g status-left-length 65
#set-option -g status-left-bg blue
set-option -g status-left ' #h | Adam Veldhousen '
#set-option -g status-right-bg green
set-option -g status-right ' tmux is rad | %A %B %d, %Y %Ts '
set-option buffer-limit 10
#window options
#set-window-option -g utf8 on
set-window-option -g clock-mode-style 24
set-window-option -g monitor-activity on
set-window-option -g automatic-rename on
set-window-option -g mouse
#set -g pane-active-border-fg green
#set -g pane-border-fg white
#set -g pane-border-bg white
#set -g pane-active-border-fg cyan
#set -g pane-active-border-bg cyan
source-file ~/.config/tmux/tmux-themepack/powerline/block/orange.tmuxtheme
#source ~/projects/laughing-hipster/tools/powerline/powerline/powerline/bindings/tmux/powerline.conf
# Window nav
unbind-key 1 ; bind-key 1 select-window -t 1
unbind-key 2 ; bind-key 2 select-window -t 2
unbind-key 3 ; bind-key 3 select-window -t 3
unbind-key 4 ; bind-key 4 select-window -t 4
unbind-key 5 ; bind-key 5 select-window -t 5
unbind-key 6 ; bind-key 6 select-window -t 6
unbind-key 7 ; bind-key 7 select-window -t 7
unbind-key 8 ; bind-key 8 select-window -t 8
unbind-key 9 ; bind-key 9 select-window -t 9
unbind-key 0 ; bind-key 0 select-window -t 0
#maybe bind alt key + num
#pane selection
unbind-key left ; bind-key left select-pane -L
unbind-key right ; bind-key right select-pane -R
unbind-key up ; bind-key up select-pane -U
unbind-key down ; bind-key down select-pane -D
#vim binding
unbind-key h ; bind-key h select-pane -L
unbind-key l ; bind-key l select-pane -R
unbind-key k ; bind-key k select-pane -U
unbind-key j ; bind-key j select-pane -D
#pane resizing
unbind-key J ; bind-key -r J resize-pane -D 5
unbind-key K ; bind-key -r K resize-pane -U 5
unbind-key L ; bind-key -r L resize-pane -R 5
unbind-key H ; bind-key -r H resize-pane -L 5
# window splitting
unbind-key M-i ; bind-key M-i split-window -v
unbind-key M-s ; bind-key M-s split-window -h
unbind-key i ; bind-key i split-window -v
unbind-key s ; bind-key s split-window -h
unbind-key c ; bind-key n new-window
unbind-key & ; bind-key w confirm-before -p "Kill #W? (y/n)" kill-window
#unbind-key $ ; bind-key R command-prompt -I "#S" "rename-session -- '%%'"
unbind-key , ; bind-key r command-prompt -I "#W" "rename-window -- '%%'"
#nice bindings
unbind-key R ; bind-key R source-file ~/.config/tmux/.tmux.conf
unbind-key q ; bind-key q list-keys
unbind-key M-q ; bind-key M-q list-keys
# vim behavior
unbind [ ; bind Escape copy-mode
unbind p ; bind p paste-buffer
#bind -t vi-copy 'v' begin-selection
#bind -t vi-copy 'y' copy-selection
#unbind-key ^A-c ; bind-key -n ^A-c copy-mode
#unbind-key ^A-NPage ; bind-key -n ^A-NPage copy-mode
#unbind-key ^A-PPage ; bind-key -n ^A-PPage copy-mode
#unbind-key ^A-i ; bind-key -n ^A-i paste-buffer
#unbind-key ^A-P ; bind-key -n ^A-P paste-buffer

View File

@ -0,0 +1,6 @@
Home ~
Projects ~/Projects
Documents ~/Documents
Downloads ~/Downloads
Configs ~/.config
Shell Extensions ~/.files-plugins

73
.config/vim/.ctags Normal file
View File

@ -0,0 +1,73 @@
# Basic options
--recurse=yes
--tag-relative=yes
--exclude=.git
--exclude=*.min.js
--exclude=vendor
--exclude=node_modules
# Regex for Clojure
--langdef=Clojure
--langmap=Clojure:.clj
--regex-clojure=/\([ \t]*create-ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/
--regex-clojure=/\([ \t]*def[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/d,definition/
--regex-clojure=/\([ \t]*defn-?[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/f,function/
--regex-clojure=/\([ \t]*defmacro[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/m,macro/
--regex-clojure=/\([ \t]*definline[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/i,inline/
--regex-clojure=/\([ \t]*defmulti[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/a,multimethod definition/
--regex-clojure=/\([ \t]*defmethod[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/b,multimethod instance/
--regex-clojure=/\([ \t]*defonce[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/c,definition (once)/
--regex-clojure=/\([ \t]*defstruct[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,struct/
--regex-clojure=/\([ \t]*intern[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/v,intern/
--regex-clojure=/\([ \t]*ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/
# PHP
--langmap=php:.engine.inc.module.theme.install.php --PHP-kinds=+cf-v
# Typescript
--langdef=typescript
--langmap=typescript:.ts
--regex-typescript=/^[ \t]*(export[ \t]+([a-z]+[ \t]+)?)?class[ \t]+([a-zA-Z0-9_$]+)/\3/c,classes/
--regex-typescript=/^[ \t]*(declare[ \t]+)?namespace[ \t]+([a-zA-Z0-9_$]+)/\2/c,modules/
--regex-typescript=/^[ \t]*(export[ \t]+)?module[ \t]+([a-zA-Z0-9_$]+)/\2/n,modules/
--regex-typescript=/^[ \t]*(export[ \t]+)?(async[ \t]+)?function[ \t]+([a-zA-Z0-9_$]+)/\3/f,functions/
--regex-typescript=/^[ \t]*export[ \t]+(var|let|const)[ \t]+([a-zA-Z0-9_$]+)/\2/v,variables/
--regex-typescript=/^[ \t]*(var|let|const)[ \t]+([a-zA-Z0-9_$]+)[ \t]*=[ \t]*function[ \t]*[*]?[ \t]*\(\)/\2/v,varlambdas/
--regex-typescript=/^[ \t]*(export[ \t]+)?(public|protected|private)[ \t]+(static[ \t]+)?(abstract[ \t]+)?(((get|set)[ \t]+)|(async[ \t]+[*]*[ \t]*))?([a-zA-Z1-9_$]+)/\9/m,members/
--regex-typescript=/^[ \t]*(export[ \t]+)?interface[ \t]+([a-zA-Z0-9_$]+)/\2/i,interfaces/
--regex-typescript=/^[ \t]*(export[ \t]+)?type[ \t]+([a-zA-Z0-9_$]+)/\2/t,types/
--regex-typescript=/^[ \t]*(export[ \t]+)?enum[ \t]+([a-zA-Z0-9_$]+)/\2/e,enums/
--regex-typescript=/^[ \t]*import[ \t]+([a-zA-Z0-9_$]+)/\1/I,imports/
# Rust
--langdef=Rust
--langmap=Rust:.rs
--regex-Rust=/fn +([a-zA-Z0-9_]+) *[(<{]/\1/f,functions,function definitions/
--regex-Rust=/(type|enum|struct|trait)[ \t]+([a-zA-Z0-9_]+) *[<{(;]/\2/T,types,type definitions/
--regex-Rust=/mod[ \t]+([a-zA-Z0-9_]+) *[<{(;]/\1/M,modules,module definitions/
--regex-Rust=/(static|const) +([a-zA-Z0-9_]+) *[:=]/\2/c,consts,static constants/
--regex-Rust=/macro_rules! +([a-zA-Z0-9_]+) *{/\1/d,macros,macro definitions/
--regex-Rust=/impl([ \t\n]*<[^>]*>)?[ \t]+(([a-zA-Z0-9_:]+)[ \t]*(<[^>]*>)?[ \t]+(for)[ \t]+)?([a-zA-Z0-9_]+)/\6/i,impls,trait implementations/
# LESS
--langdef=less
--langmap=less:.less
--regex-less=/^[ t]*.([A-Za-z0-9_-]+)/1/c,class,classes/
--regex-less=/^[ t]*#([A-Za-z0-9_-]+)/1/i,id,ids/
--regex-less=/^[ t]*(([A-Za-z0-9_-]+[ tn,]+)+){/1/t,tag,tags/
--regex-less=/^[ t]*@medias+([A-Za-z0-9_-]+)/1/m,media,medias/
# Javascript (ES6)
--langdef=js
--langmap=js:.js
--regex-js=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*{/1/,object/
--regex-js=/([A-Za-z0-9._$()]+)[ t]*[:=][ t]*function[ t]*(/1/,function/
--regex-js=/function[ t]+([A-Za-z0-9._$]+)[ t]*(([^)]))/1/,function/
--regex-js=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*[/1/,array/
--regex-js=/([^= ]+)[ t]*=[ t]*[^"]'[^']*/1/,string/
--regex-js=/([^= ]+)[ t]*=[ t]*[^']"[^"]*/1/,string/
--regex-js=/^[ \t]*(export[ \t]+([a-z]+[ \t]+)?)?class[ \t]+([a-zA-Z0-9_$]+)/\3/c,classes/
--regex-js=/^[ \t]*import[ \t]+([a-zA-Z0-9_$]+)/\1/I,imports/
--regex-js=/^[ \t]*(export[ \t]+)?(async[ \t]+)?function[ \t]+([a-zA-Z0-9_$]+)/\3/f,functions/
--regex-js=/^[ \t]*export[ \t]+(var|let|const)[ \t]+([a-zA-Z0-9_$]+)/\2/v,variables/
--regex-js=/^[ \t]*(var|let|const)[ \t]+([a-zA-Z0-9_$]+)[ \t]*=[ \t]*function[ \t]*[*]?[ \t]*\(\)/\2/v,varlambdas/

376
.config/vim/.vimrc Normal file
View File

@ -0,0 +1,376 @@
" change runtime path
set runtimepath=~/.config/vim/runtime/
execute pathogen#infect()
execute pathogen#helptags()
"we don't want vi compatibility AKA Make Vim more useful
set nocompatible
"color schemes
colorscheme torte
"colorscheme jellybeans
"colorscheme molokai
"colorscheme wombat256i
"colorscheme dragon-energy
"colorscheme patagonia-vim
"colorscheme vim-colors-solarized
"colorscheme vim-obsidian
"colorscheme rdark
"colorscheme ecostation
"colorscheme vilight
"colorscheme vim-tomorrow-theme
"colorscheme monokai
"colorscheme inkpot
"colorscheme CmptrClr
set omnifunc=syntaxcomplete#Complete
set completeopt-=preview
set wildignore=*.png,*.jpg,node_modules,*.min.js,*.txt,*.bak,*.exe,vendor.js
set autochdir
set tags=./.git/tags,tags;$HOME
set noswapfile
set backupcopy=yes
set autoread
set selection=exclusive
set ttimeoutlen=70
set termguicolors
" Use the OS clipboard by default (on versions compiled with `+clipboard`)
set clipboard=unnamedplus
" Enhance command-line completion
set wildmenu
" Allow cursor keys in insert mode
set esckeys
" Allow backspace in insert mode
set backspace=indent,eol,start
" Optimize for fast terminal connections
set ttyfast
" Add the g flag to search/replace by default
set gdefault
" Use UTF-8 without BOM
set encoding=utf-8 "nobomb
set binary
" Don't add empty newlines at the end of files
set noeol
set history=500 " Number of things to remember in history.
set t_Co=256
" Centralize backups, swapfiles and undo history
if exists("&backupdir")
set backupdir=~/.config/vim/backups/
endif
if exists("&directory")
set directory=~/.config/vim/swaps/
endif
if exists("&undodir")
set undodir=~/.config/vim/undo/
endif
" Respect modeline in files
set modeline
set modelines=4
" Enable per-directory .vimrc files and disable unsafe commands in them
set exrc
set secure
" Enable line numbers
set number
" Enable syntax highlighting
syntax on
" Highlight current line
set cursorline
" Make tabs as wide as four spaces
set tabstop=4
set expandtab
set shiftwidth=4
" Show “invisible” characters
set lcs=tab:▸\ ,trail,eol,nbsp:_
set list
" Highlight searches
set hlsearch
" Ignore case of searches
set ignorecase
" Highlight dynamically as pattern is typed
set incsearch
" Always show status line
set laststatus=2
" Enable mouse in all modes
set mouse=a
" Disable error bells
set noerrorbells
" Dont reset cursor to start of line when moving around.
set nostartofline
" Show the cursor position
set ruler
" Dont show the intro message when starting Vim
set shortmess=atI
" Show the current mode
set showmode
" Show the filename in the window titlebar
set title
" Show the (partial) command as its being typed
set showcmd
" Start scrolling x lines before the horizontal window border
set scrolloff=4
autocmd FileType javascript setlocal ts=4 sts=4 sw=4 expandtab
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
autocmd Filetype go setlocal ts=4 sw=4 sts=4 noexpandtab
" Change mapleader
let mapleader = ","
map <leader><Space> :HardTimeToggle<CR>
map <Space> :noh<CR>
"replace with regular newlines
noremap <leader>k :%s/ //g<CR>
"list buffers
map <leader>w :buffers<CR>
" open erros
map <leader>e :lw 5<CR>
" mini buffer explorer toggle
map <Leader>b :MBEToggle<cr>
" easymotion mappings
" n character search
map <leader>/ <Plug>(easymotion-tn)
" 2 character search
map <leader>s <Plug>(easymotion-s2)
" nerdtree mapppings
nmap <leader>n :NERDTreeToggle %:p:h<CR>
nmap <leader>m :NERDTreeClose<CR>:NERDTreeFind<CR>
let g:NERDTreeBookmarksFile = ~/.config/vim/.NERDTreeBookmarks
" strips whitespace
noremap <leader>ws :call StripWhitespace()<CR>
" Strip trailing whitespace (,ss)
function! StripWhitespace()
let save_cursor = getpos(".")
let old_query = getreg('/')
:%s/\s\+$//e
call setpos('.', save_cursor)
call setreg('/', old_query)
endfunction
" pane resizing
noremap <C-w> :resize -3<Cr>
noremap <C-x> :resize +3<Cr>
noremap <C-a> :vertical resize +3<Cr>
noremap <C-d> :vertical resize -3<Cr>
"pane movements
noremap <C-h> <C-w>h
noremap <C-j> <C-w>j
noremap <C-k> <C-w>k
noremap <C-l> <C-w>l
map <leader>x :%s/\s\+$//<CR>:noh<Cr>
"reload vim config
noremap <leader>rr :so ~/.vimrc<CR>
"open vimrc in a new tab
map <leader>v :tabedit ~/.vimrc<CR>
map <F1> <Nop>
" Save a file as root (,W)
noremap <leader>W :w !sudo tee % > /dev/null<CR>
" generate tags
nnoremap <leader>c :! ctags -R -f ./.git/tags .<CR>
" enable neocomplete
let g:neocomplete#enable_at_startup = 0
" Use smartcase
let g:neocomplete#enable_smart_case = 0
" indent guides
let g:indent_guides_enable_on_vim_startup = 1
let g:indent_guides_guide_size = 1
let g:indent_guides_start_level = 2
" tern
let g:tern_show_argument_hits='on_hold'
let g:tern_map_keys=1
let g:tern_map_prefix = '<leader>'
" vim-go
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
let g:go_highlight_extra_types = 1
let g:go_fmt_command = "goimports"
let g:go_fmt_autosave = 1
" -b -w -p"
let g:syntastic_go_checkers = ['go', 'errcheck', 'gofmt', 'golint', 'govet']
"let g:syntastic_mode_map = { 'mode': 'active', 'passive_filetypes': ['go'] }
" Automatic commands
if has("autocmd")
" Use relative line numbers
if exists("&relativenumber")
set relativenumber
au BufReadPost * set relativenumber
endif
" rename symbol
au FileType go nmap <Leader>r <Plug>(go-rename)
" show type info
au FileType go nmap <Leader>ki <Plug>(go-info)
" go def
au FileType go nmap <Leader>di <Plug>(go-def-split)
au FileType go nmap <Leader>ds <Plug>(go-def-vertical)
au FileType go nmap <Leader>dt <Plug>(go-def-tab)
" go docs
au FileType go nmap <Leader>gd <Plug>(go-doc)
au FileType go nmap <Leader>gi <Plug>(go-doc-vertical)
au FileType go nmap <Leader>gb <Plug>(go-doc-browser)
endif
" ctrl p
let g:ctrlp_map = '<C-P>'
"nnoremap <C-l> :CtrlPTag<cr>
let g:ctrlp_cmd = 'CtrlPLastMode'
let g:ctrlp_extensions = ['line']
let g:ctrlp_show_hidden = 1
"'c' - the directory of the current file.
"'a' - the directory of the current file, unless it is a subdirectory of the cwd
"'r' - the nearest ancestor of the current file that contains one of these directories or files: .git .hg .svn .bzr _darcs
"'w' - modifier to "r": start search from the cwd instead of the current file's directory
"0 or '' (empty string) - disable this feature.
let g:ctrlp_working_path_mode = 'ra'
let g:ctrlp_by_filename = 0
let g:ctrlp_max_files = 5000
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/]\.(git|hg|svn)$',
\ 'file': '\v\.(exe|so|dll)$',
\ }
let g:go_disable_autoinstall = 0
"airline config
let g:airline#extensions#tabline#enabled = 1
" the separator used on the left side >
"let g:airline_left_sep='>'
" the separator used on the right side >
"let g:airline_right_sep='<'
" enable modified detection >
let g:airline_detect_modified=1
" enable paste detection >
let g:airline_detect_paste=1
" enable iminsert detection >
let g:airline_detect_iminsert=1
" determine whether inactive windows should have the left section collapsed to only the filename of that buffer.
let g:airline_inactive_collapse=1
" enable/disable csv integration for displaying the current column.
let g:airline#extensions#csv#enabled = 1
" customize the whitespace symbol. >
let g:airline#extensions#whitespace#symbol = '.'
" themes are automatically selected based on the matching colorscheme. this can be overridden by defining a value.
"let g:airline_theme=
" if you want to patch the airline theme before it gets applied, you can supply the name of a function where you can modify the palette.
let g:airline_theme_patch_func = 'AirlineThemePatch'
function! AirlineThemePatch(palette)
if g:airline_theme == 'badwolf'
for colors in values(a:palette.inactive)
let colors[3] = 245
endfor
endif
endfunction
" enable/disable automatic population of the `g:airline_symbols` dictionary with powerline symbols.
let g:airline_powerline_fonts=1
" define the set of text to display for each mode.
let g:airline_mode_map = {
\ '__' : '-',
\ 'n' : 'N',
\ 'i' : 'I',
\ 'R' : 'R',
\ 'c' : 'C',
\ 'v' : 'V',
\ 'V' : 'V',
\ '' : 'V',
\ 's' : 'S',
\ 'S' : 'S',
\ '' : 'S',
\ }
" defines whether the preview window should be excluded from have its window statusline modified (may help with plugins which use the preview window heavily) >
let g:airline_exclude_preview = 0
" change the text for when no branch is detected >
let g:airline#extensions#branch#empty_message = 'No Branch'
" truncate long branch names to a fixed length >
let g:airline#extensions#branch#displayed_head_limit = 15
" enable/disable fugitive/lawrencium integration >
let g:airline#extensions#branch#enabled = 1
" syntastic settings
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 2
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 1
let g:syntastic_loc_list_height = 1
let g:syntastic_enable_balloons = 1
let g:syntastic_javascript_checkers = ['standard']
" YCM
let g:ycm_key_list_select_completion = ['<TAB>', '<Down>']
" Enable file type detection
filetype plugin indent on
augroup myvimrc
au!
au BufWritePost .vimrc so $MYVIMRC
augroup END
" Automatic commands
if has("autocmd")
" Treat .json files as .js
autocmd BufNewFile,BufRead *.json setfiletype json syntax=javascript
" Treat .md files as Markdown
autocmd BufNewFile,BufRead *.md setlocal filetype=markdown
autocmd BufRead,BufNewFile *.html setfiletype html syntax=htmldjango
autocmd BufRead,BufNewFile *.template setfiletype html template syntax=htmldjango
autocmd BufRead,BufNewFile *.go setfiletype golang syntax=go
autocmd BufRead,BufNewFile *.php setfiletype php syntax=go
autocmd BufRead,BufNewFile Dockerfile* setfiletype Dockerfile syntax=go
" Spell check and line wrap just for git commit messages
autocmd Filetype gitcommit setlocal spell textwidth=80
endif
au GUIEnter * set vb t_vb=
if has('gui_running')
set go =mt
set guifont=Literation\ Mono\ for\ Powerline:h12,Literation_Mono_for_Powerline:h12,Inconsolata\ for\ Powerline:h10,Ubuntu\ Mono:h26,Consolas:h12,Courier:h12
endif

47
.config/vim/plugins.txt Normal file
View File

@ -0,0 +1,47 @@
git://github.com/tpope/vim-fugitive.git
git://github.com/tpope/vim-dispatch.git
#git://github.com/Valloric/YouCompleteMe.git
git://github.com/Shougo/deoplete.nvim.git
git://github.com/nathanaelkane/vim-indent-guides.git
git://github.com/airblade/vim-gitgutter.git
git://github.com/fholgado/minibufexpl.vim.git
git://github.com/bling/vim-airline.git
git://github.com/fatih/vim-go.git
git://github.com/scrooloose/nerdtree.git
git://github.com/tpope/vim-dadbod.git
# utils
git://github.com/scrooloose/syntastic.git
git://github.com/easymotion/vim-easymotion.git
git://github.com/ervandew/supertab.git
git://github.com/tpope/vim-repeat.git
git://github.com/tpope/vim-surround.git
git://github.com/kien/ctrlp.vim.git
git://github.com/vim-scripts/tComment
# syntax
git://github.com/cakebaker/scss-syntax.vim.git
git://github.com/pangloss/vim-javascript.git
git://github.com/vim-ruby/vim-ruby.git
git://github.com/vim-scripts/matchit.zip.git
git://github.com/oscarh/vimerl.git
git://github.com/sukima/xmledit.git
git://github.com/mxw/vim-jsx.git
git://github.com/gorodinskiy/vim-coloresque.git
git://github.com/groenewege/vim-less.git
git://github.com/tpope/vim-markdown.git
git://github.com/tpope/vim-haml.git
#themes
git://github.com/wdhg/dragon-energy.git
git://github.com/FrancescoMagliocco/CmptrClr.git
git://github.com/sainnhe/gruvbox-material.git
git://github.com/cjgajard/patagonia-vim.git
git://github.com/ciaranm/inkpot.git
git://github.com/lsdr/monokai.git
git://github.com/chriskempson/vim-tomorrow-theme.git
git://github.com/vim-scripts/vilight.vim.git
git://github.com/dsolstad/vim-wombat256i.git
git://github.com/altercation/vim-colors-solarized.git
git://github.com/nanotech/jellybeans.vim.git
git://github.com/vim-scripts/ecostation.git
git://github.com/vim-scripts/rdark.git
git://github.com/trevorrjohn/vim-obsidian.git
git://github.com/sotte/presenting.vim.git

61
.config/vim/rakefile Normal file
View File

@ -0,0 +1,61 @@
require 'rake/clean'
require 'fileutils'
vimFolder = File.expand_path("~/.config/vim")
vimRuntimeFolder = "#{vimFolder}/runtime"
bundles_dir = File.join("#{vimRuntimeFolder}/bundle")
pluginsFile = File.join("#{vimFolder}/plugins.txt")
CLEAN.include "#{bundles_dir}"
task :default => ['clean', 'vim:reinstall']
namespace :vim do
directory "#{bundles_dir}"
desc "reinstalls all vim plugins from #{pluginsFile} into #{bundles_dir}"
task :reinstall do
puts "loading plugins into #{bundles_dir}..."
lines = IO.readlines pluginsFile
puts "Loading #{lines.length} plugins..."
lines.each { |source|
if source[0] != "#" then
loadTask = Rake::Task['vim:downloadPlugin']
loadTask.invoke source.sub "\n", ''
loadTask.reenable()
end
}
puts "Plugins installed!"
end
desc "downloads a vim plugin from a git repo, installs it into #{bundles_dir}"
task :downloadPlugin, [:source] => "#{bundles_dir}" do |t, args|
raise "Must specify git repo to pull from." unless args.source not(nil)
dir = gitName args.source
puts "Installing #{dir}...."
Dir.chdir bundles_dir do
sh "git clone #{args.source} #{dir}"
FileUtils.rm_rf(File.join(dir, ".git"))
end
puts "\n\n"
end
desc "downloads a new plugin into #{bundles_dir} and adds it to #{pluginsFile}"
task :install, [:sourceName] do |t, args|
raise "Must specify git repo to pull from." unless args.sourceName not(nil)
source = "git://github.com/#{args.sourceName}.git"
Rake::Task['vim:downloadPlugin'].invoke source
puts "Adding to #{pluginsFile}"
File.open pluginsFile, 'a' do |file|
file.puts "#{source}\n"
end
end
end
def gitName(gitRepo)
return gitRepo.split('/').last.sub(/\.git$/, '')
end

4
.dockerignore Normal file
View File

@ -0,0 +1,4 @@
Dockerfile
.git
makefile
README.md

19
Dockerfile Normal file
View File

@ -0,0 +1,19 @@
FROM archlinux:latest
ENV FILES_DEBUG true
RUN pacman -Sy --noconfirm openssh sudo vim git which gnupg make gcc binutils bison \
&& echo '%sudo ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers \
&& groupadd sudo \
&& useradd -m -u 1000 -G sudo files \
&& echo "files:files" | chpasswd files
WORKDIR /home/files
COPY --chown=1000:1000 . /home/files/.files
USER 1000
RUN rm -rf /home/files/.bashrc \
&& source /home/files/.files/sourceme.sh \
&& echo "source /home/files/.files/sourceme.sh" > /home/files/.bash_profile
CMD ["bash", "--login"]

27
README.md Normal file
View File

@ -0,0 +1,27 @@
# Files
My dotfiles repo.
- Vim setup
- Git settings
- Simple "plugin" system (drop files into `~/.files-plugins` and they are sourced)
- Custom prompt
- Ruby enVironment Manager, Rustup, Go Version Manager, Node Version Manager
- Some terminal defaults I like
- Utility functions
## Installation
1. Clone into your home directory at `~/.files`
2. Add `[[ -s ~/.files/sourceme.sh ]] && source ~/.files/sourceme.sh` to your `.bashrc`, `.bash_profile` etc.
## Development
Run `make build dev` to drop into a container with everything pre installed.
## LICENSE
MIT

8
makefile Normal file
View File

@ -0,0 +1,8 @@
.PHONY: dev
dev:
@docker run -it --rm --name files \
-v $$PWD:/home/files/.files:ro \
adamveld12/files
.PHONY: build
build:
@docker build -t adamveld12/files .

59
plugins/000-base.sh Normal file
View File

@ -0,0 +1,59 @@
#!/bin/sh
shopt -s checkwinsize; # Checks window size to get proper line wrapping
shopt -s cdspell; # Corrects minor spelling errors when cd-ing
shopt -s checkjobs; # Stops bash from exiting if there are jobs running. A second attempt at exiting will ignore.
set -o vi; # Set prompt to vi mode
set -o notify; # Report status of terminated background jobs immediately
set -b; # report job status immediately
set show-mode-in-prompt on; # Shows vi mode status: + for vi insert mode, : for vi command mode
set print-completions-horizontally on; # Prints tab completions horizontally in alphabetical order
set visible-stats on; # completions are printed colored based on their file type
set colored-stats on; # completions are printed colored based on their file type
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# History
# https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps
shopt -s histappend; # Append to the history file, not overwrite
export HISTCONTRO=Lignoreboth:erasedups; # No duplicate commands in history
export HISTSIZE=25000;
export HISTFILESIZE=10000;
export HISTIGNORE="[ ]*:&:bg:fg:exit:clear"; # Don't save these commands in the history
export HISTORY_COMMAND="history -a; history -c; history -r;"; # flush each command to history immediately
stty -ixon;
# bindings
bind '"\C-l"':redraw-current-line; # <Ctrl>-l
bind '"\e\C-l"':clear-screen; # <Escape>-<Ctrl>-l
# see environ manfile - just setting up my shell environment
export LESS='-iMR'; # Case insensite search, verbose prompting and raw output
export PAGER=less; # Used to display text / man files
# export POWERLINE_CONFIG_COMMAND=~/tools/powerline/powerline/scripts/powerline-config
export GPG_TTY=$(tty);
export GIT_EDITOR=vim;
export EDITOR=$GIT_EDITOR;
export VISUAL=$EDITOR;
export DEFAULT_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin;
export PATH=${DEFAULT_PATH}:${HOME}/.bin;
if [[ -d "${HOME}/.dotnet" ]]; then
export DOTNET_CLI_TELEMETRY_OPTOUT=1;
export DOTNETPATH=~/.dotnet/;
export PATH=${DOTNETPATH}:${PATH};
fi
# http://stackoverflow.com/questions/410616/increasing-the-maximum-number-of-tcp-ip-connections-in-linux
# run these to increase concurrent connections in linux
# sudo sysctl net.ipv4.ip_local_port_range="18000 61000"
# sudo sysctl net.ipv4.tcp_fin_timeout="30"
# sudo sysctl net.ipv4.tcp_tw_recycle=1
# sudo sysctl net.ipv4.tcp_tw_reuse=1

21
plugins/001-utilities.sh Normal file
View File

@ -0,0 +1,21 @@
#!/bin/sh
# symbolic links all files in a directory into the target
files_linkdir() {
local SOURCE=$1;
local DEST=$2;
local FORCE=$3;
if [[ -d "${SOURCE}" ]]; then
files_debug_log "$SOURCE EXISTS, force=${FORCE} should run? $(! [[ -z "${FORCE}" ]] && echo "yes")"
if ! [[ -z "${FORCE}" ]] || ! [[ -d "${DEST}" ]]; then
files_debug_log "LINKING $SOURCE -> $DEST"
find "${SOURCE}" -type d | sed "s=${SOURCE}==" | xargs -I {} mkdir -p ${DEST}{};
find "${SOURCE}" -type f | sed "s=${SOURCE}==" | xargs -I {} ln -fs ${SOURCE}{} ${DEST}{};
fi
fi
# ln on windows pretty much only works with hardlinks it seems
#ls -lA "${SOURCE}" | grep "^-" | awk '{print $9}' | xargs -I {} ln -vfs "${SOURCE}/{}" "${DEST}/{}"
}

5
plugins/002-config.sh Normal file
View File

@ -0,0 +1,5 @@
#!/bin/sh
files_linkdir "${HOME}/.files/.config" "${HOME}/.config" true;
! [[ -f "${HOME}/.gitconfig" ]] && ln -svf "${HOME}/.config/git/.gitconfig" "${HOME}/.gitconfig";

102
plugins/005-ssh.sh Normal file
View File

@ -0,0 +1,102 @@
#!/bin/sh
mkdir -p ${HOME}/.ssh/;
# handy functions
# Open an ssh tunnel
ssh_tunnel(){
if [[ -z $1 ]]; then
echo "Takes an ssh config host name and starts an SSH tunnel"
echo "\$1 required: name of an ssh tunnel host"
echo "\$2 optional: run the tunnel as a background job if defined"
return -1
fi
if [[ -z $2 ]]; then
ssh -f -N $1
else
ssh -f -N $1 &
fi
}
# generate the public key for a private key
function ssh_pubkey(){
if [[ -z $1 ]]; then
echo "Takes a path to a private key and prints a compatible public key to stdout"
echo "$1 required: path to a private key"
return -1
fi
ssh-keygen -y -f $1
}
ssh_newkey() {
local name=$1;
local comment=$2;
local quiet=$3;
if [[ -z "${name}" ]]; then
echo "ssh_newkey creates a new ssh key with the specified name and comment";
echo "The new keys are saved in ${HOME}/.ssh/<name>/";
echo "ssh_newkey <name> [comment]";
exit 255;
fi
local algo='ed25519';
local private_key_path="${HOME}/.ssh/${name}/id.${algo}";
local public_key_path="${HOME}/.ssh/${name}/id.${algo}.pub";
local gendate=$(date --rfc-3339=seconds);
if [[ -d "${HOME}/.ssh/${name}" ]]; then
exit 1;
fi
mkdir -p ${HOME}/.ssh/${name};
ssh-keygen -t "${algo}" -C "$comment -- created ${gendate}" -f "${private_key_path}";
echo -e "\n\n";
echo -e "See your keys here: ${HOME}/.ssh/${name}";
if [[ -z $(cat "${HOME}/.ssh/config" | grep "Host ${name}") ]]; then
echo "Updating ssh config @ ${HOME}/.ssh/config. Edit to your liking.";
cat <<- EOF >> ${HOME}/.ssh/config
Host ${name}
IdentityFile ${private_key_path}
UserKnownHostsFile ${HOME}/.ssh/${name}/known_hosts
EOF
fi
}
ssh_newconfig() {
cat <<- EOF > ${HOME}/.ssh/config
Host *
# verbosity used when logging messages from ssh, QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3
LogLevel INFO
# if YES, never auto add host keyes and refuses to connecto to hosts that have changed. YES, NO, ASK
StrictHostKeyChecking ask
# known hosts file database location
UserKnownHostsFile ~/.ssh/known_hosts
# timeout in seconds after which if no data has been recieved from the server, ssh will send a keep alive message
ServerAliveInterval 30
# the number of times to send a keep alive message in a row, only applies to ssh v2
ServerAliveCountMax 120
# Shows the ssh key image on connection. YES or NO
VisualHostKey yes
# if the connection should use compression. YES or NO
Compression yes
# allows ssh to prefer one method of auth over another if there are multiple methods available. gssapi-with-mic, hostbased, publickey, keyboard-interactive, password
PreferredAuthentications publickey,password,keyboard-interactive
# send TCP keep alive messages to the host, which lets us know if the connection dies, but it can give false negatives (if the connection goes down temporarily, you'll get disconnected). YES, NO
TCPKeepAlive yes
# refer to: https://github.com/FiloSottile/whosthere/blob/master/README.md
PubkeyAuthentication yes
IdentitiesOnly yes
EOF
}
if ! [[ -f ${HOME}/.ssh/config ]]; then
ssh_newconfig
fi

17
plugins/200-golang.sh Normal file
View File

@ -0,0 +1,17 @@
#!/bin/sh
export GVM_DIR="${HOME}/.gvm"
if ! [[ -f ~/.gvm/scripts/gvm ]]; then
# install go version manager
echo "Installing go version manager";
curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer -o /tmp/gvm-installer.sh;
chmod +x /tmp/gvm-installer.sh && /tmp/gvm-installer.sh;
source ~/.gvm/scripts/gvm;
gvm install go1.17 -B;
gvm use go1.17 --default;
else
source ~/.gvm/scripts/gvm;
fi
[ -s "$GVM_DIR/scripts/bash_completion" ] && \. "$GVM_DIR/scripts/bash_completion";

20
plugins/210-node.sh Normal file
View File

@ -0,0 +1,20 @@
#!/bin/sh
export NVM_DIR="$HOME/.config/.nvm"
if ! [[ -d ${NVM_DIR} ]]; then
# install node version manager
echo "Installing node version manager";
git clone https://github.com/nvm-sh/nvm.git ${NVM_DIR}
git checkout "${NVM_VERSION:-v0.39.0}"
source ${NVM_DIR}/nvm.sh;
nvm install ${NVM_VERSION:-v14};
nvm alias default ${NVM_VERSION:-v14};
else
source ${NVM_DIR}/nvm.sh;
fi
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion";

19
plugins/220-ruby.sh Normal file
View File

@ -0,0 +1,19 @@
#!/bin/sh
export RVM_HOME="${HOME}/.rvm"
if ! [[ -d "${RVM_HOME}" ]]; then
command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -;
command curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -;
curl -sSL https://get.rvm.io | bash -s stable --ruby;
source ${RVM_HOME}/scripts/rvm;
rvm use ruby-3.0.0;
source ${RVM_HOME}/scripts/completion;
else
echo "rvm_silence_path_mismatch_check_flag=1" > ~/.rvmrc;
source ${RVM_HOME}/scripts/rvm;
rvm use ruby-3.0.0 > /dev/null;
source ${RVM_HOME}/scripts/completion;
fi

17
plugins/230-rust.sh Normal file
View File

@ -0,0 +1,17 @@
#!/bin/sh
export RUSTUP_HOME="${HOME}/.config/rust/.rustup";
export CARGO_HOME="${HOME}/.config/rust/.cargo";
export PATH=${PATH}:${CARGO_HOME}/bin;
if ! [[ -d "${CARGO_HOME}" ]]; then
# install rust
echo "Installing rustup + rust stable";
curl -sLSf https://sh.rustup.rs > /tmp/rustup.sh;
chmod +x /tmp/rustup.sh && /tmp/rustup.sh -y --no-modify-path;
source ${CARGO_HOME}/env
else
source ${CARGO_HOME}/env
fi

23
plugins/500-vim.sh Normal file
View File

@ -0,0 +1,23 @@
#!/bin/sh
if [[ -d "${HOME}/.config/vim" ]]; then
export VIM=${HOME}/.config/vim;
export VIMRUNTIME=${VIM}/runtime;
# export PATH=${VIM}:${PATH};
files_linkdir "/usr/share/vim/vim82/" "${VIMRUNTIME}";
! [[ -f ${HOME}/.vimrc ]] && ln -s ${VIM}/.vimrc ${HOME}/.vimrc;
if ! [[ -f "${VIMRUNTIME}/autoload/pathogen.vim" ]]; then
! [[ -d "/tmp/vim-pathogen" ]] && git clone git://github.com/tpope/vim-pathogen.git /tmp/vim-pathogen;
cp -r /tmp/vim-pathogen/autoload/* ${VIMRUNTIME}/autoload;
fi
if ! [[ -d "${VIMRUNTIME}/bundle" ]]; then
pushd ${VIM}
rake
popd
fi
fi

153
plugins/900-prompt.sh Normal file
View File

@ -0,0 +1,153 @@
#!/bin/sh
# Prompt Customizations
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
RED="\033[0;31m"
YELLOW="\033[0;33m"
GREEN="\033[0;32m"
GRAY="\033[0;30m"
EMPTY="\033[0;37m"
LIGHTBLUE="\033[38;5;111m"
LIGHTORANGE="\033[38;5;172m"
LIGHTGREEN="\033[38;5;70m"
LIGHTRED="\033[38;5;161m"
LIGHTYELLOW="\033[38;5;229m"
CONTINUE="\033[38;5;242m"
DARKGRAY="\033[38;5;247m"
# Glyph table for airline fonts
# U+E0A0  Version control branch
# U+E0A1  LN (line) symbol
# U+E0A2  Closed padlock
# U+E0B0  Rightwards black arrowhead
# U+E0B1  Rightwards arrowhead
# U+E0B2  Leftwards black arrowhead
# U+E0B3  Leftwards arrowhead
# U+1D77A 𝝺 Lambda
LAR=""
RAR=""
LARS=""
RARS=""
LN=""
VC=""
LK=""
LA="𝝺"
#╭─ ~/src/v8/v8 master
#╰─$
START_LINE_1="╭─"
START_LINE_2="╰─"
colorize() {
# $1 is foreground
# $2 is background
# $3 is content
if [ $OSTYPE = 'msys' ]; then
echo -e "\033[48;3;$2;38;3;$1m$3\\033[0m"
else
echo -e "\033[48;5;$2;38;5;$1m$3\\033[0m"
fi
}
parse_git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
parse_git_tag () {
git describe --tags 2> /dev/null
}
parse_git_branch_or_tag() {
local OUT="$VC$(parse_git_branch)"
if [ "$OUT" == " ((no branch))" ]; then
echo "$VC ($(parse_git_tag)) "
elif [ "$OUT" == "$VC" ]; then
echo "x $VC"
else
echo "$OUT"
fi
}
build_prompt_win(){
local TIME="$(colorize 39 46 ' [$(date +%H:%M)] ')$(colorize 36 42 $RARS)";
local USER="$(colorize 39 42 ' \u@\h ')$(colorize 32 41 $RARS)"
local GIT="$(colorize 39 41 ' $(parse_git_branch_or_tag) ')$(colorize 31 49 $RARS)"
local DIR="$(colorize 33 49 ' \w ')"
local LEFT="$TIME$USER$GIT$DIR\033[0;0m "
echo "$LEFT"
}
build_prompt_unix(){
local TIME="$(colorize 15 33 ' [$(date +%H:%M)] ')$(colorize 33 34 $RARS)";
local USER="$(colorize 15 34 ' \u@\h ')$(colorize 34 124 $RARS)";
local GIT="$(colorize 252 124 ' $(parse_git_branch_or_tag) ')$(colorize 124 240 '$RARS')";
local DIR="$(colorize 11 240 ' \w ')$(colorize 240 0 $RARS)";
local LEFT="$TIME$USER$GIT$DIR\033[0;0m";
echo "$LEFT";
}
build_prompt_unix_2(){
echo -e "${START_LINE_1} \u@\h \w <$(parse_git_branch)>\n${START_LINE_2}${LA} ";
}
print_prompt(){
local TIME="$(colorize 15 33)[$(date +%H:%M)] $(colorize 33 34)$RARS";
local USER="$(colorize 15 34)\u@\h $(colorize 34 124)$RARS"
local GIT="$(colorize 252 124) $(parse_git_branch_or_tag) $(colorize 124 240)$RARS"
local DIR=" $(colorize 11 240)\w $(colorize 240 0)$RARS"
local LEFT="$TIME$USER$GIT$DIR "
local RIGHT="$DIR"
local COMPENSATE=11
PS1=$(printf "%*s\r%s\n$EMPTY\$$GRAY" "$(($(tput cols) - ${compensate}))" "$RIGHT" "$LEFT")
}
print_map(){
if [ $OSTYPE = 'msys' ]; then
#Background
for clbg in {40..47} {100..107} 49 ; do
#Foreground
for clfg in {30..37} {90..97} 39 ; do
#Formatting
for attr in 0 1 2 4 5 7 ; do
#Print the result
echo -en "\e[${attr};${clbg};${clfg}m ^[${attr};${clbg};${clfg}m \e[0m"
done
echo #Newline
done
done
else
for fgbg in 38 48 ; do #Foreground/Background
for color in {0..256} ; do #Colors
#Display the color
echo -en "\033[${fgbg};5;${color}m ${color}\t\e[0m"
#Display 10 colors per lines
if [ $((($color + 1) % 10)) == 0 ] ; then
echo #New line
fi
done
echo #New line
done
fi
}
banner() {
for i in {16..21} {23..27} {27..23} {21..16} ; do echo -en "\033[38;5;${i}m#" ; done ; echo
echo -e "$LIGHTBLUE $1"
for i in {16..21} {23..27} {27..23} {21..16} ; do echo -en "\033[38;5;${i}m#" ; done ; echo
}
# looks like the following:
# [hh:mm] username@host (git branch || svn revision) ~/working/directory
# $
if [ $OSTYPE = 'msys' ]; then
export PROMPT_COMMAND='PS1="$($HISTORY_COMMAND) $(build_prompt_win)\n\$LA "'
else
export PROMPT_COMMAND='PS1="$(history -a; history -c; history -r; build_prompt_unix)\n\$LA "'
fi

3
plugins/zzzz-plugins.sh Normal file
View File

@ -0,0 +1,3 @@
#!/bin/sh
load_plugins $HOME/.files-plugins;

41
sourceme.sh Normal file
View File

@ -0,0 +1,41 @@
#!/bin/sh
function files_debug_log() {
if ! [[ -z "${FILES_DEBUG}" ]]; then
echo -e "# [INFO] $@";
fi
}
function load_plugins() {
if [[ -d "${1}" ]]; then
for plugin in ${1}/*; do
if [[ -s $plugin ]]; then
files_debug_log "loading $plugin";
source $plugin;
elif [[ -d $plugin ]] && [[ -f "$plugin/setup.sh" ]]; then
files_debug_log "loading directory $plugin";
source $plugin/setup.sh;
fi
done
elif [[ -s "${1}" ]]; then
source $1;
fi
}
function reload_env() {
files_debug_log "DEBUG MODE IS ENABLED. Turn if off via:\nunset FILES_DEBUG\n"
export HOME=${1:-$PWD}
files_debug_log "\$HOME='$HOME'";
# load plugns
load_plugins "$HOME/.files/plugins";
if [[ -d "${HOME}/.bin" ]]; then
PATH=${HOME}/.bin:${PATH};
fi
}
reload_env

Binary file not shown.

View File

@ -0,0 +1,123 @@
Return to [FiraCode](https://github.com/tonsky/FiraCode)
### [](#installing-font)Installing font
Windows:
* In the ttf folder, double-click each font file, click “Install font”; to install all at once, select all files, right-click, and choose “Install”
_or_
* Use [chocolatey](https://chocolatey.org): `choco install firacode`
Mac:
In the downloaded TTF folder:
1. Select all font files
2. Right click and select `Open` (alternatively `Open With Font Book`)
3. Select "Install Font"
_or_
* Use [brew](http://brew.sh) and [cask](https://caskroom.github.io):
_Not officially supported, might install outdated version_
<div class="highlight highlight-source-shell">
brew tap caskroom/fonts
brew cask install font-fira-code
Linux:
* Install a package available for your distribution following [the instructions](https://github.com/tonsky/FiraCode/wiki/Linux-instructions#installing-with-a-package-manager)
_or_
* In the ttf folder double-click each font file and click “Install font”; see [“Manual Installation”](https://github.com/tonsky/FiraCode/wiki/Linux-instructions#manual-installation) if double-clicking doesn't work
FreeBSD:
* Using pkg(8): `pkg install firacode`
_or_
* Using ports: `cd /usr/ports/x11-fonts/firacode && make install clean`
### [](#how-to-enable-ligatures)How to enable ligatures
You need to explicitly enable ligatures support in following editors:
* [Atom](https://github.com/tonsky/FiraCode/wiki/Atom-instructions)
* [Brackets](https://github.com/tonsky/FiraCode/wiki/Brackets-Instructions/)
* [Cloud9](https://github.com/tonsky/FiraCode/wiki/cloud9-instructions)
* [Jetbrains' products](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions) (IntelliJ, etc)
* [Emacs](https://github.com/tonsky/FiraCode/wiki/Emacs-instructions)
* [MacVim](https://github.com/tonsky/FiraCode/wiki/MacVim-instructions)
* [VS Code](https://github.com/tonsky/FiraCode/wiki/VS-Code-Instructions)
* [BBEdit](https://github.com/tonsky/FiraCode/wiki/BBEdit-instructions)
* [LightTable](https://github.com/tonsky/FiraCode/wiki/LightTable-instructions)
* [Sublimetext](https://github.com/tonsky/FiraCode/wiki/Sublimetext-Instructions)
For other editors it must be enough to simply select Fira Code as your font of choice. [Full list of supported editors](https://github.com/tonsky/FiraCode#editor-support)
### [](#troubleshooting)Troubleshooting
#### [](#1-make-sure-the-font-your-editor-displays-is-actually-fira-code)1\. Make sure the font your editor displays is actually Fira Code
Easiest way is to compare the shape of `@` `&` and `r` with the reference image:
![](https://user-images.githubusercontent.com/285292/26971424-c609be76-4d15-11e7-8684-23e7b1c08929.png)
Issues: [#393](https://github.com/tonsky/FiraCode/issues/393) [#373](https://github.com/tonsky/FiraCode/issues/373) [#227](https://github.com/tonsky/FiraCode/issues/227)
#### [](#2-make-sure-youve-enabled-ligatures-in-your-editor)2\. Make sure youve enabled ligatures in your editor
Consult this wiki (see above ↑) for instruction on how to do that.
Issues: [#291](https://github.com/tonsky/FiraCode/issues/291)
#### [](#3-make-sure-youre-on-the-latest-version-of-fira-code)3\. Make sure youre on the latest version of Fira Code
Consult [CHANGELOG](https://github.com/tonsky/FiraCode/blob/master/CHANGELOG.md) to see when it was last updated.
#### [](#4-check-the-list-of-known-issues-below-)4\. Check the list of known issues below ↓
### [](#known-issues)Known issues
#### [](#hinting-issues)Hinting issues
* Uneven spacing in `===` and `!==` at certain font sizes, esp. on Windows [#405](https://github.com/tonsky/FiraCode/issues/405) [#243](https://github.com/tonsky/FiraCode/issues/243) [#119](https://github.com/tonsky/FiraCode/issues/119) [#114](https://github.com/tonsky/FiraCode/issues/114)
* Different height of `[]` at certain font sizes [#332](https://github.com/tonsky/FiraCode/issues/332) [#251](https://github.com/tonsky/FiraCode/issues/251)
#### [](#powerline-characters-are-of-slightly-wrong-size)Powerline characters are of slightly wrong size
Unfortunately this cant be fixed for all terminals because they have different ways of calculate font metrics. See [this comment](https://github.com/tonsky/FiraCode/issues/44#issuecomment-187305276)
Issues: [#426](https://github.com/tonsky/FiraCode/issues/426) [#131](https://github.com/tonsky/FiraCode/issues/131) [#44](https://github.com/tonsky/FiraCode/issues/44)
#### [](#some-ligatures-work-while-some-dont)Some ligatures work while some dont
This is an issue with your editor and how it handles tokenization/syntax highlighting. Nothing can be done in a font to work around that. Report your problem to the corresponding editors issue tracker.
* All ligatures with dashes in Visual Studio (not Code) [#422](https://github.com/tonsky/FiraCode/issues/422) [#395](https://github.com/tonsky/FiraCode/issues/395) [#360](https://github.com/tonsky/FiraCode/issues/360) [#273](https://github.com/tonsky/FiraCode/issues/273) [#259](https://github.com/tonsky/FiraCode/issues/259) [#233](https://github.com/tonsky/FiraCode/issues/233) [#220](https://github.com/tonsky/FiraCode/issues/220) [#196](https://github.com/tonsky/FiraCode/issues/196) [#181](https://github.com/tonsky/FiraCode/issues/181) [#157](https://github.com/tonsky/FiraCode/issues/157) [#99](https://github.com/tonsky/FiraCode/issues/99) [#43](https://github.com/tonsky/FiraCode/issues/43) [#32](https://github.com/tonsky/FiraCode/issues/32)
* Ligatures in column 100 in VS Code [#403](https://github.com/tonsky/FiraCode/issues/403) [#397](https://github.com/tonsky/FiraCode/issues/397) [#372](https://github.com/tonsky/FiraCode/issues/372)
* Atom/VS Code are known to break certain ligatures in certain syntaxes [#361](https://github.com/tonsky/FiraCode/issues/361) [#353](https://github.com/tonsky/FiraCode/issues/353) [#348](https://github.com/tonsky/FiraCode/issues/348) [#328](https://github.com/tonsky/FiraCode/issues/328) [#326](https://github.com/tonsky/FiraCode/issues/326) [#235](https://github.com/tonsky/FiraCode/issues/235)
#### [](#corrupted-font-in-intellij-on-windows)Corrupted font in IntelliJ on Windows
Go to `C:\Windows\Fonts` with `cmd.exe`, find and delete everything having Fira in the file name. Its important that you use terminal commands, not Explorer.
Issues: [#589](https://github.com/tonsky/FiraCode/issues/589) [#581](https://github.com/tonsky/FiraCode/issues/581) [#398](https://github.com/tonsky/FiraCode/issues/398) [IDEA-159901](https://youtrack.jetbrains.com/issue/IDEA-159901)
#### [](#anything-related-to-italics)Anything related to italics
Fira Code does not have italics at all. If you see italicized glyphs it means your editor is “faking” them.
Issues: [#375](https://github.com/tonsky/FiraCode/issues/375) [#320](https://github.com/tonsky/FiraCode/issues/320) [#281](https://github.com/tonsky/FiraCode/issues/281)

View File

@ -0,0 +1,40 @@
@font-face {
font-family: 'Fira Code';
src: url('woff2/FiraCode-Light.woff2') format('woff2'),
url("woff/FiraCode-Light.woff") format("woff");
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'Fira Code';
src: url('woff2/FiraCode-Regular.woff2') format('woff2'),
url("woff/FiraCode-Regular.woff") format("woff");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Fira Code';
src: url('woff2/FiraCode-Medium.woff2') format('woff2'),
url("woff/FiraCode-Medium.woff") format("woff");
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'Fira Code';
src: url('woff2/FiraCode-Bold.woff2') format('woff2'),
url("woff/FiraCode-Bold.woff") format("woff");
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Fira Code VF';
src: url('woff2/FiraCode-VF.woff2') format('woff2-variations'),
url('woff/FiraCode-VF.woff') format('woff-variations');
/* font-weight requires a range: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide#Using_a_variable_font_font-face_changes */
font-weight: 300 700;
font-style: normal;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,84 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Fira Code Specimen</title>
<link rel="stylesheet" href="fira_code.css">
<style>
body { font: 14px/1.5em "Fira Code"; }
.code {
font-feature-settings: "calt" 1; /* Enable ligatures for IE 10+, Edge */
text-rendering: optimizeLegibility; /* Force ligatures for Webkit, Blink, Gecko */
width: 30em;
margin: 5em auto;
white-space: pre-wrap;
word-break: break-all;
}
.light { font-weight: 300; }
.regular { font-weight: 400; }
.medium { font-weight: 500; }
.bold { font-weight: 700; }
.variable { font-family: 'Fira Code VF'; font-variation-settings: 'wght' 400; }
i { font-style: normal; color: #c33; }
b { font-weight: inherit; color: #c33; }
</style>
<script type="text/javascript">
function onWeightChange(weight) {
// code_variable.style['font-weight'] = weight;
code_variable.style['font-variation-settings'] = "'wght' " + weight;
span_wght.innerText = weight;
}
</script>
<body>
<div class="code light"><b># Fira Code Light</b>
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
| n <i><=</i> 0 <i>=></i> []
| empty list <i>=></i> []
| otherwise <i>=></i> [x] <i>++</i> take n-1, xs
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
<div class="code regular"><b># Fira Code Regular</b>
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
| n <i><=</i> 0 <i>=></i> []
| empty list <i>=></i> []
| otherwise <i>=></i> [x] <i>++</i> take n-1, xs
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
<div class="code medium"><b># Fira Code Medium</b>
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
| n <i><=</i> 0 <i>=></i> []
| empty list <i>=></i> []
| otherwise <i>=></i> [x] <i>++</i> take n-1, xs
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
<div class="code bold"><b># Fira Code Bold</b>
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
| n <i><=</i> 0 <i>=></i> []
| empty list <i>=></i> []
| otherwise <i>=></i> [x] <i>++</i> take n-1, xs
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
<div id="code_variable" class="code variable"><b># Fira Code Variable</b>
<input type="range" min="300" max="700" value="400" step="10" style="width: 300px;" oninput="onWeightChange(this.value)" onchange="onWeightChange(this.value)"> <span id="span_wght">400</span>
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
| n <i><=</i> 0 <i>=></i> []
| empty list <i>=></i> []
| otherwise <i>=></i> [x] <i>++</i> take n-1, xs
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More