2017-01-18 00:00:05 +01:00
|
|
|
# My P(ersonal) C(omputer) Settings
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
I'm documenting this primarily for personal use. This reposity contains shell
|
|
|
|
configs, vim configs, emacs configs, a list of commonly used applications, and
|
|
|
|
other items.
|
2016-12-17 23:45:50 +01:00
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
The overall goal of this repository is to reduce the time it takes to adopt a
|
|
|
|
new computer and equip it with the necessary tooling to do meaningful work.
|
2016-12-17 23:45:50 +01:00
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Ironically, I prefer to use a Mac or a Linux as my personal computer, so
|
|
|
|
hopefully the connotation associated with "PCs" as Windows boxes isn't
|
|
|
|
misleading.
|
2017-07-30 04:27:36 +02:00
|
|
|
|
|
|
|
|
2017-07-30 18:13:42 +02:00
|
|
|
# SSH
|
|
|
|
|
|
|
|
Here are a few useful tips for working with SSH.
|
|
|
|
|
|
|
|
## ssh_config
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Instead of creating shell aliases and functions for conveniently accessing
|
|
|
|
remote nodes over SSH, edit your `~/.ssh/config` file.
|
2017-07-30 18:13:42 +02:00
|
|
|
|
|
|
|
Instead of doing this...
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ alias ec2='ssh -i /path/to/identity_file.pem ubuntu@<ec2-instance-public-ip>'
|
|
|
|
```
|
|
|
|
|
|
|
|
...edit your `~/.ssh/config`:
|
|
|
|
|
|
|
|
```
|
|
|
|
Host ec2
|
|
|
|
User ubuntu
|
|
|
|
HostName <ec2-instance-public-ip>
|
|
|
|
IdentityFile /path/to/identity_file.pem
|
|
|
|
|
|
|
|
# Host * configuration below...
|
|
|
|
```
|
|
|
|
|
|
|
|
## sshfs
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
SSHFS enables seamless file transfers from your local machine to a remote
|
|
|
|
machine.
|
2017-07-30 18:13:42 +02:00
|
|
|
|
|
|
|
To install, run:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ brew cask install osxfuse
|
|
|
|
$ brew install sshfs
|
|
|
|
```
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Assuming your remote machine is configured in your `~/.ssh/config` (see above),
|
|
|
|
you can mount your remote machine's home directory on your local machine like
|
|
|
|
so:
|
2017-07-30 18:13:42 +02:00
|
|
|
|
|
|
|
```bash
|
|
|
|
$ mkdir ~/ec2
|
|
|
|
$ sshfs ec2:/home/ubuntu ~/ec2 -o reconnect,follow_symlinks
|
|
|
|
```
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Now your remote machine's home directory can be accessed using the `~/ec2`
|
|
|
|
directory. This directory can be transparently treated as if it were an ordinary
|
|
|
|
local directory. To illustrate how easy it is to use, let's install `Vundle`, a
|
|
|
|
Vim package manager, on our remote machine.
|
2017-07-30 18:13:42 +02:00
|
|
|
|
|
|
|
```bash
|
|
|
|
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/ec2/.vim/bundle/Vundle.vim
|
|
|
|
```
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Voila! We now have `Vundle` installed on our ec2 instance without needing to SSH
|
|
|
|
into that machine ourselves. That's all there is to it.
|
2017-07-30 18:13:42 +02:00
|
|
|
|
|
|
|
|
2017-06-20 13:46:58 +02:00
|
|
|
# GnuPG
|
|
|
|
|
|
|
|
1. Download public key from keyserver
|
|
|
|
2. Transfer backed-up private key information from secure disk
|
|
|
|
3. Create `[E]` encrypting and `[S]` signing subkeys for personal computer
|
|
|
|
|
|
|
|
## Commentary
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
By default `gpg2` interfaces with `gpg-agent`. `gpg` does not unless
|
|
|
|
`--use-agent` is specified. I suggest using `gpg2`, but if you must use `gpg`,
|
|
|
|
add the following entry to `~/.gnupg/gpg.conf`:
|
2017-06-20 13:46:58 +02:00
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
``` use-agent
|
2017-06-20 13:46:58 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
## GnuPG + Git
|
|
|
|
|
|
|
|
1. Register newly created `[S]` signing subkey as `signingkey`
|
|
|
|
2. Enforce commit-signing
|
|
|
|
3. Opt into `gpg2` usage
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ git config --global user.signingkey <SIGNING_KEY>
|
|
|
|
$ git config --global commit.gpgsign true
|
|
|
|
$ git config --global gpg.program gpg2
|
|
|
|
```
|
|
|
|
|
|
|
|
## GnuPG + GPG-Agent
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Setup `gpg-agent` to use password caching by adding the following entries to
|
|
|
|
`~/.gnupg/gpg-agent.conf`:
|
2017-06-20 13:46:58 +02:00
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
``` default-cache-ttl 300 max-cache-ttl 3600
|
2017-06-20 13:46:58 +02:00
|
|
|
```
|
|
|
|
|
2016-05-24 17:37:51 +02:00
|
|
|
|
2016-12-16 19:26:10 +01:00
|
|
|
# Neovim
|
|
|
|
|
|
|
|
The following snippet fixes the `<C-h>` issue in neovim on macOS.
|
|
|
|
|
|
|
|
```
|
|
|
|
$ infocmp $TERM | sed 's/kbs=^[hH]/kbs=\\177/' > $TERM.ti
|
|
|
|
$ tic $TERM.ti
|
|
|
|
```
|
|
|
|
|
2016-12-17 23:45:50 +01:00
|
|
|
|
2017-01-04 06:02:53 +01:00
|
|
|
## True Color and Italics in tmux and vim
|
|
|
|
|
|
|
|
### TrueColor
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Note: make sure that the terminal you are using supports TrueColor (hint: recent
|
|
|
|
version of iTerm2 do). Also make sure that the tmux version you are using
|
|
|
|
supports TrueColor (hint: versions north of 2.2 should).
|
2017-01-04 06:02:53 +01:00
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
At each step of the way, test TrueColor using the following shell pipeline
|
|
|
|
(hint: the gradients should be smooth):
|
2017-01-04 06:10:33 +01:00
|
|
|
|
|
|
|
```bash
|
|
|
|
$ curl https://raw.githubusercontent.com/JohnMorales/dotfiles/master/colors/24-bit-color.sh | bash
|
|
|
|
```
|
|
|
|
|
2017-01-04 06:02:53 +01:00
|
|
|
* Terminal: recent versions of iTerm 2 should support TrueColor
|
|
|
|
* Tmux: versions 2.2 and after should support TrueColor
|
|
|
|
* NeoVim: recent versions of NeoVim should support TrueColor
|
|
|
|
|
|
|
|
Enable TrueColor in your `~/.vimrc` (already done in this repository):
|
|
|
|
|
|
|
|
```viml
|
|
|
|
set termguicolors
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Enable TrueColor in your `~/.tmux.conf` (already done in this repository):
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Note: This may conflict with the setting for italics. Need to verify to confirm
|
|
|
|
/ disconfirm this (pending).
|
2017-01-04 06:02:53 +01:00
|
|
|
|
|
|
|
```
|
|
|
|
set -ga terminal-overrides ",xterm-256color-italic:Tc"
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Italics
|
2016-12-17 22:20:27 +01:00
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
In the file `/configs/shared/.tmux.conf` there is a line to add italics support
|
|
|
|
to tmux:
|
2016-12-17 22:20:27 +01:00
|
|
|
|
|
|
|
```
|
|
|
|
set -g default-terminal "tmux-256color-italic"
|
|
|
|
```
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
The `$TERM` entry, `tmux-256color-italic`, will be unavailable until you add the
|
|
|
|
file, `tmux-256color-italic`, to your terminal database. You can do this with
|
|
|
|
the following command:
|
2016-12-17 22:20:27 +01:00
|
|
|
|
|
|
|
```bash
|
2017-07-31 05:09:09 +02:00
|
|
|
$ tic ~/pc_settings/tmux-256color-italic
|
2016-12-17 22:20:27 +01:00
|
|
|
```
|
|
|
|
|
2016-12-17 23:45:50 +01:00
|
|
|
|
2017-09-15 17:50:14 +02:00
|
|
|
### Powerline
|
|
|
|
|
|
|
|
Install Powerline...
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ pip install powerline-status
|
|
|
|
```
|
|
|
|
|
|
|
|
Install the Powerline fonts...
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ hub clone 'powerline/fonts'
|
|
|
|
$ cd fonts && ./install.sh && cd ../ && rm -rf fonts
|
|
|
|
```
|
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
Lastly, ensure that the line in `.tmux.conf` that sources the `powerline.conf`
|
|
|
|
is uncommented:
|
2017-09-15 17:50:14 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
run-shell "powerline-daemon -q"
|
|
|
|
source "/usr/local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf"
|
|
|
|
```
|
|
|
|
|
|
|
|
|
2017-06-20 13:46:58 +02:00
|
|
|
## Commonly used applications (Mac)
|
2018-04-23 20:55:33 +02:00
|
|
|
|
|
|
|
Thankfully `brew cask` simplifies the installation of many of my commonly used
|
|
|
|
applications:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ brew cask install alfred dash slack 1password slack emacs dropbox iterm2 flux docker
|
|
|
|
```
|
|
|
|
|
|
|
|
The following applications need to be downloaded / installed manually:
|
|
|
|
|
|
|
|
* oh-my-zsh: a full suite of z-shell extensions
|
|
|
|
* homebrew: CLI for procuring third-party applications
|
|
|
|
* slate.js: resize and move your windows with keyboard shortcuts
|
2016-05-24 18:23:48 +02:00
|
|
|
|
2016-05-25 17:36:01 +02:00
|
|
|
|
2017-06-20 13:46:58 +02:00
|
|
|
## Commonly used fonts
|
|
|
|
* Install [Hasklig](https://github.com/i-tu/Hasklig) for ligature support in Elm, Elixir, etc
|
|
|
|
* Install [Operator Mono](http://www.typography.com/blog/introducing-operator) for expressive monospaced font
|
|
|
|
* Install powerline fonts
|
2018-04-23 20:55:33 +02:00
|
|
|
* Install Adobe Source Code Pro font for shell and text editors
|
2016-05-27 16:04:20 +02:00
|
|
|
|
2017-06-20 13:46:58 +02:00
|
|
|
### Ligature Support
|
2016-05-27 16:04:20 +02:00
|
|
|
|
2018-04-23 20:55:33 +02:00
|
|
|
To support ligatures make sure Hasklig is installed (link at the bottom). Ensure
|
|
|
|
that you are using an terminal emulator that supports ligatures. With both of
|
|
|
|
these tasks completed, ligatures should function in Neovim.
|
2016-06-23 17:15:29 +02:00
|
|
|
|
|
|
|
|
2017-06-20 13:46:58 +02:00
|
|
|
## Miscellaneous notes
|
|
|
|
* Map `<CAPS_LOCK>` key to `<ESC>`
|
|
|
|
* Increase key-repeat rate
|
|
|
|
* Decrease key-repeat-delay
|
2018-04-23 20:55:33 +02:00
|
|
|
* Increase mouse speed
|