All Projects → wincent → Wincent

wincent / Wincent

Licence: other
💾 Dot-files

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Wincent

Jarvis
Dotfiles for a powerful, web development-focused environment powered by Neovim, iTerm2, tmux, and zsh
Stars: ✭ 617 (-30.05%)
Mutual labels:  tmux, iterm2, dotfiles
Mac Bootstrap
💻 Provision a new Mac for web development with dotfiles + Fish/Zsh, Neovim, and Tmux
Stars: ✭ 96 (-89.12%)
Mutual labels:  tmux, iterm2, dotfiles
Dotfiles
🔘 neovim, zsh, tmux, iTerm2, macOS dotfiles
Stars: ✭ 7 (-99.21%)
Mutual labels:  tmux, iterm2, dotfiles
Dotfiles
📍 My dotfiles for macOS using Fish/Zsh, Neovim, and Tmux
Stars: ✭ 151 (-82.88%)
Mutual labels:  tmux, iterm2, dotfiles
Dotfiles
👾 ~/
Stars: ✭ 91 (-89.68%)
Mutual labels:  tmux, iterm2, dotfiles
dotfiles
My dotfiles for oh-my-zsh, vim and tmux 📟
Stars: ✭ 23 (-97.39%)
Mutual labels:  dotfiles, tmux, iterm2
Dotfiles
My config files
Stars: ✭ 276 (-68.71%)
Mutual labels:  tmux, dotfiles
Dotfiles
●📄 Ryan McGeary's configuration shiznit that makes him productive
Stars: ✭ 278 (-68.48%)
Mutual labels:  tmux, dotfiles
Dotfiles
💾 Ian's dotfiles, utils, and Zsh/Vim/tmux configs
Stars: ✭ 554 (-37.19%)
Mutual labels:  tmux, dotfiles
Takumi
Takumi, clean and elegant dotfiles
Stars: ✭ 22 (-97.51%)
Mutual labels:  tmux, dotfiles
dotfiles
My dot files
Stars: ✭ 25 (-97.17%)
Mutual labels:  dotfiles, tmux
Dotfiles
Dotfiles for unix, managed by GNU stow.
Stars: ✭ 617 (-30.05%)
Mutual labels:  tmux, dotfiles
Dotfiles
My bash, tmux, and vim configs
Stars: ✭ 14 (-98.41%)
Mutual labels:  tmux, dotfiles
Dotfiles
⚙ Dotfiles for Linux &macOS
Stars: ✭ 275 (-68.82%)
Mutual labels:  tmux, dotfiles
.dotfiles
There's no place like ~ !
Stars: ✭ 265 (-69.95%)
Mutual labels:  tmux, dotfiles
Radian
🍉 Dotfiles that marry elegance and practicality.
Stars: ✭ 274 (-68.93%)
Mutual labels:  tmux, iterm2
Dotfiles
dotfiles for vim, git, zsh, cwm, xinit, and many others. Install with: lndir -silent /path/to/dotfiles $HOME
Stars: ✭ 263 (-70.18%)
Mutual labels:  tmux, dotfiles
Dotfiles
A repository that gathered files starting with dot
Stars: ✭ 701 (-20.52%)
Mutual labels:  tmux, dotfiles
Dotfiles
my Vim/Tmux config 💪⚡️
Stars: ✭ 712 (-19.27%)
Mutual labels:  iterm2, dotfiles
Dotfiles
Configurations for the tools I use every day
Stars: ✭ 898 (+1.81%)
Mutual labels:  iterm2, dotfiles

"dotfiles" and system configuration

Features

Dotfiles

A set of dotfiles that I've been tweaking and twiddling since the early 2000s (under version control since 2009). Characteristics include:

  • Sane Vim pasting via bracketed paste mode.
  • Write access to local clipboard from local and remote hosts, inside and outside of tmux (via Clipper).
  • Full mouse support (pane/split resizing, scrolling, text selection) in Vim and tmux.
  • Focus/lost events for Vim inside tmux.
  • Cursor shape toggles on entering Vim.
  • Italics in the terminal.
  • Bundles a (not-excessive) number of useful Vim plug-ins.
  • Conservative Vim configuration (very few overrides of core functionality; most changes are unobtrusive enhancements; some additional functionality exposed via <Leader> and <LocalLeader> mappings.
  • Relatively restrained Zsh config, Bash-like but with a few Zsh perks, such as right-side prompt, auto-cd hooks, command elapsed time printing and such.
  • Unified color-handling (across iTerm2 and Vim) via Base16 Shell.
  • Encrypted versioning of files with sensitive content (via git-cipher).
  • Comprehensive Hammerspoon config.

Homebrew

On macOS, the "homebrew" aspect installs a bunch of useful software.

Keyboard customization

On macOS, we use Karabiner-Elements, and on Linux, we use Interception Tools and a few other pieces to make the following changes:

  • Make Caps Lock serve as Backspace (when tapped) and Left Control (when chorded with another key). When held down alone, Caps Lock fires repeated Backspace events.
  • Make Return serve as Return (when tapped) and Right Control (when chorded with another key). When held down alone, Return fires repeated Return events.
  • Maps Control-I to F6 (only in MacVim and the terminal) so that it can be mapped independently from Tab in Vim.
  • Toggle Caps Lock on by tapping both Shift keys simultaneously.
  • Makes the function keys on my external Realforce keyboard behave like the "media" keys on Apple's keyboards.

And these only on macOS:

  • Swap Option and Command keys on my external Realforce keyboard.
  • Make the "application" key (extra modifier key on right-hand side) behave as "fn" on Realforce keyboard.
  • Make "pause" (at far-right of function key row) behave as "power" (effectively, sleep) on Realforce keyboard.
  • Adds a "SpaceFN" layer that can be activated by holding down Space while hitting other keys; I use this to make the cursor keys available on or near the home row in any app.

Zsh

Functions

  • ag: Transparently wraps the ag executable so as to provide a centralized place to set defaults for that command (seeing as it has no "rc" file).
  • bounce: bounce the macOS Dock icon if the terminal is not in the foreground.
  • color: change terminal and Vim color scheme.
  • fd: "find directory" using fast bfs and sk; automatically cds into the selected directory.
  • fh: "find [in] history"; selecting a history item inserts it into the command line but does not execute it.
  • history: overrides the (tiny) default history count.
  • jump (aliased to j): to jump to hashed directories.
  • regmv: bulk-rename files (eg. regmv '/\.tif$/.tiff/' *).
  • scratch: create a random temporary scratch directory and cd into it.
  • tick: moves an existing time warp (eg. tick +1h); see tw below for a description of time warp.
  • tmux: wrapper that reattches to pre-existing sessions, or creates new ones based on the current directory name; additionally, looks for a .tmux file to set up windows and panes (note that the first time a given .tmux file is encountered the wrapper asks the user whether to trust or skip it).
  • tw ("time warp"): overrides GIT_AUTHOR_DATE and GIT_COMMITTER_DATE (eg. tw -1d).

Prompt

Zsh is configured with the following prompt:

Visible here are:

  • Concise left-hand prompt consisting of:
  • Extended right-hand size prompt which auto-hides when necessary to make room for long commands and contains:
    • Duration of previous command in adaptive units (seconds, minutes, hours, days, depending on duration).
    • Current version control branch name.
    • Current version control worktree status using colors that match those used in git status:
      • Green dot indicates staged changes.
      • Red dot indicates unstaged changes.
      • Blue dot indicates untracked files.
    • Full version of current working directory (again, abbreviating $HOME to ~).

Nested shells are indicated with additional prompt characters. For example, one nested shell:

Two nested shells:

Root shells are indicated with a different color prompt character and the word "root":

Nesting within a root shell is indicated like this:

Two nested shells:

If the last command exited with a non-zero status (usually indicative of an error), a yellow exclamation is shown:

If there are background processes, a yellow asterisk is shown:

Dependencies

  • tmux 3.2 or later.
  • Neovim or Vim 8.0 or later with Ruby and Python support (although there's a reasonable amount of feature detection in order to degrade gracefully).
  • Relatively recent Zsh.
  • Relatively recent Git.
  • Clipper for transparent access to the local system clipboard.
  • On macOS, iTerm2. Additionally, only the latest version of macOS (although at the time of writing, I'm still on High Sierra) gets actively tested.
  • Ruby.
  • Adobe Source Code Pro or any other fixed-width font that includes the Powerline glyphs.

Platform status

Platform Status
macOS 🥇 Currently the most tested platform, as well as the one with most aspects (because macOS 10.13 "High Sierra" is my daily driver both at home and at work)
Arch Linux 🥈 Less tested, fewer aspects involved, but likely to evolve in the future as I experiment with moving, at least partially, to Arch Linux
Red Hat Linux and related (eg. CentOS) 🥉 Less tested, fewer aspects involved, but in the past this was the distro I used full-time at work

Installation

Clone

macOS

git clone --recursive https://github.com/wincent/wincent.git

Arch Linux

sudo pacman -Syu
sudo pacman -S git ruby tmux vim
git clone --recursive https://github.com/wincent/wincent.git
  • git: In order to clone the repo.
  • ruby: So that git-cipher can run (also used to build Command-T).
  • tmux: Just for comfort (eg. so you can see scrollback).
  • vim: Because the Vim aspect needs Vim (it runs vim to do a :helptags update).

Install

⚠️ WARNING: There are lots of different things that can be installed or configured (see the "aspects" directory). Unless you want your machine to be exactly like mine — which is unlikely — you probably don't want to install everything. Maybe you don't even want everything in the "dotfiles" and "vim" aspects. Please inspect the contents of each aspect before proceeding to install it; you may even be better off just looking at the configuration files and stealing the bits that you find interesting or useful (everything is in the public domain, unless otherwise indicated).

At the time of writing, these are the aspects, which you can expect to change over time:

  • On macOS only:
    • automator: Scripts for use with Automator
    • automount: Sets up macOS's automount facility
    • backup: Backup scripts
    • cron: Sets up cron files
    • defaults: Sets up defaults (ie. preferences) on macOS
    • fonts: Installs Source Code Pro font files
    • homebrew: Installs and updates Homebrew
    • iterm: Dynamic profiles for iTerm
    • karabiner: Configures Karabiner-Elements (keyboard customization).
    • launchd: Configures launchd
    • node: Installs Node.js
    • ruby: Installs Ruby gems
    • ssh: Manages local SSH config
    • tampermonkey: Sets up UserScripts
  • On Linux only:
    • aur: Installs packages from the Arch User Repository.
    • interception: Sets up Interceptions Tools (keyboard customization).
    • locale: Sets up /etc/locale.conf
    • pacman: Installs packages via the Pacman package manager
    • systemd: Set up services that run from systemd
  • On both macOS and Linux:
    • dotfiles: Creates symlinks in $HOME to the dotfiles in this repo
    • meta: Tests the configuration framework
    • shell: Sets the use shell to zsh
    • terminfo: Sets up terminfo database entries for italics and 256-color support
    • vim: Configures Vim

Examples

./install dotfiles vim      # Just install "dotfiles" and "vim" stuff.
./install dotfiles          # Just install "dotfiles".
./install dotfiles --step   # Prompt for confirmation at each step.
./install dotfiles --check  # Do a dry-run, showing what would be changed.
./install                   # Install everything.
./install --help            # Info on installing specific rol

This sets up a local Node environment using n, and then uses Fig to copy the dotfiles and configure the machine.

Note: Given that ~/.gitconfig is included with these dotfiles, any local modifications or overrides that you apply should be added to ~/.gitconfig.local instead; for example:

git config --file ~/.gitconfig.local user.name "John Doe"
git config --file ~/.gitconfig.local user.email [email protected]

Troubleshooting

General troubleshooting

There are a few useful ./install options:

# Run in "check" (dry-run) mode.
./install --check

# Show debugging information during the run.
./install --debug

# Confirm each task before running it (--step), and begin
# execution from a specific task (--start-at-task) in a
# specific aspect ("dotfiles").
./install --step --start='make directories' dotfiles

License

Unless otherwise noted, the contents of this repo are in the public domain. See the LICENSE for details.

Authors

The repo is written and maintained by Greg Hurrell <[email protected]>. Other contributors that have submitted patches include, in alphabetical order:

  • Anton Kastritskiy
  • Joe Lencioni
  • Jonathan Wilkins
  • Mark Stenglein
  • Matthew Byrne
  • Michael Lohmann
  • Stone C. Lasley
  • Victor Igor
  • Zac Collier

This list produced with:

:read !git shortlog -s HEAD | grep -v 'Greg Hurrell' | cut -f 2-3 | sed -e 's/^/- /'
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].