{"id":17058751,"url":"https://github.com/smkent/dotfiles","last_synced_at":"2025-04-12T17:51:04.765Z","repository":{"id":150156487,"uuid":"59168558","full_name":"smkent/dotfiles","owner":"smkent","description":"🐧 🐚 smkent's dotfiles","archived":false,"fork":false,"pushed_at":"2025-04-03T03:17:33.000Z","size":2355,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-03T04:23:32.529Z","etag":null,"topics":["bash","bashrc","dotfiles","git","github-actions","gnupg","linux","mutt","powerline-fonts","pre-commit","python","screenshot","tmux","vim","vimrc"],"latest_commit_sha":null,"homepage":"","language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smkent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-05-19T02:49:54.000Z","updated_at":"2025-04-03T03:17:37.000Z","dependencies_parsed_at":"2023-12-25T09:21:12.103Z","dependency_job_id":"833e1aa2-6fd8-41d3-84ba-7f2b679f4fb6","html_url":"https://github.com/smkent/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smkent%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smkent%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smkent%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smkent%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smkent","download_url":"https://codeload.github.com/smkent/dotfiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248610407,"owners_count":21132920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","bashrc","dotfiles","git","github-actions","gnupg","linux","mutt","powerline-fonts","pre-commit","python","screenshot","tmux","vim","vimrc"],"created_at":"2024-10-14T10:30:46.400Z","updated_at":"2025-04-12T17:51:04.742Z","avatar_url":"https://github.com/smkent.png","language":"Vim Script","funding_links":[],"categories":[],"sub_categories":[],"readme":"# smkent's dotfiles\n\nMy Linux environment configuration\n\nQuick jump: [shell](#shell), [git](#git), [mutt](#mutt), [tmux](#tmux),\n[vim](#vim)\n\n## Design\n\nThis repository contains flat files meant to be used in place within `${HOME}`.\n\nMy dotfiles are designed be portable with minimal required dependencies (git,\nbash/zsh, Python, and the\n[Powerline fonts](https://github.com/powerline/fonts)).\n\n## Installation\n\nI recommend looking at the code and trying out individual parts you are\ninterested in before installing the entire set of dotfiles.\n\nTo install these dotfiles in your home directory, first clone the repository:\n\n```shell\n$ cd ~\n$ git clone https://github.com/smkent/dotfiles\n$ mv dotfiles/.git .\n$ rm -rf dotfiles/\n```\n\nNext, review changes to any existing dotfiles using `git status` and `git diff`.\nWhen satisfied, complete installation with:\n\n```shell\n$ git checkout .\n```\n\n### Configuration\n\nTo configure your git email address and username to be hidden from shell\nprompts, run [`dotfiles-config`](/.dotfiles/bin/dotfiles-config).\n\nTo use a different profile picture, remove or replace `.face`.\n\n### Dependency installation\n\nMy [vim-airline](https://github.com/vim-airline/vim-airline) and\n[tmux](https://github.com/tmux/tmux) configurations require the [Powerline\nfonts](https://github.com/powerline/fonts), which can be installed using\n[`install-fonts`](/.dotfiles/bin/install-fonts) after installing this\nrepository.\n\nMore features become available when optional dependencies are installed:\n\n* [shellcheck](https://github.com/koalaman/shellcheck) and\n  [flake8](https://pypi.python.org/pypi/flake8) (for\n  [ALE](https://github.com/w0rp/ale))\n* `ctags` (for\n  [vim-gutentags](https://github.com/ludovicchabant/vim-gutentags),\n  typically available as the `exuberant-ctags` package)\n* `xclip` (for copying to the system clipboard in tmux)\n* [terminal_markdown_viewer](https://github.com/axiros/terminal_markdown_viewer)\n  (for previewing Markdown files with\n  [vim-pipe-preview](https://github.com/smkent/vim-pipe-preview))\n\nRun [`dotfiles-deps`](/.dotfiles/bin/dotfiles-deps) to see the executable path\nand version information for programs that this repository configures or depends\non.\n\n## Features\n\n### Shell\n\nMy shell configuration primarily supports Bash, but has also been set up to work\nwith zsh on OS X.\n\nPrompt features:\n\n* Display username if different from the value of `prompt_hide_user` configured\n  via [`dotfiles-config`](/.dotfiles/bin/dotfiles-config).\n* Display current directory name if different from `${HOME}`\n* Display exit code of the previous command if nonzero (or `bg` / `^C` when\n  backgrounding a job or typing Ctrl-C, respectively)\n* Display runtime of the previous command if longer than 10 seconds\n* Display size of the directory stack if not empty\n* Display number of background jobs if any\n* Display git branch (or hash on detached HEAD) if the current directory is a\n  git repository\n\nAutomatic update and reload:\n\n* Changes to shell [`rc`](/.dotfiles/shell/rc) and any dependent files (such as\n  shell [`aliases`](/.dotfiles/shell/aliases)) cause the environment to be\n  automatically reloaded.\n* Home directory repository updates are checked and fetched automatically via\n  [`dotfiles-auto-update`](/.dotfiles/bin/dotfiles-auto-update).\n\n![shell screenshot](/.dotfiles/img/screenshot-bashrc.png)\n\n### Tmux\n\nFor a more detailed tmux configuration summary, see\n[`.dotfiles/doc/tmux.md`](/.dotfiles/doc/tmux.md)\n\n* Use Ctrl+a as the prefix key (similar to GNU screen)\n* Use vi-style mode keys\n* Additional vim-style key bindings:\n  * Ctrl+h/j/k/l for traversing panes (using\n    [vim-tmux-navigator](https://github.com/christoomey/vim-tmux-navigator))\n  * Create window splits with Ctrl+a s (horizontal) or Ctrl+a v (vertical)\n* Move between windows with F7/F8\n* Alt+\u0026lt;arrow keys\u0026gt; for resizing panes\n* Custom status bar configuration\n  * Window ID highlight inspired by [the screenshot in this\n    thread](http://crunchbang.org/forums/viewtopic.php?id=20504)\n* Automatic environment variable updates in shell (ex. `SSH_AUTH_SOCK`) after\n  reattaching to a session (changes to the tmux session socket's ctime cause\n  the shell to reload tmux session environment variable values)\n* Shell helper aliases:\n  * `tn`: New session. Takes an optional session name argument.\n  * `ta`: Attach to session. Takes an optional session name argument.\n  * `tl`: List sessions.\n\n![tmux screenshot](/.dotfiles/img/screenshot-tmux.png)\n\n### Vim\n\nFor more detailed vim configuration summary, see\n[`.dotfiles/doc/vim.md`](/.dotfiles/doc/vim.md)\n\nBasic settings:\n\n* The usual basic settings (line numbers, syntax highlighting, etc.)\n* Quit vim using `q` in normal mode\n* Save files by pressing F2 or Ctrl+S, or save and quit with `Q` in normal mode\n* Highlight 81st column (via Vim 7.3+'s `colorcolumn` feature)\n* Plugins managed by [vim-plug](https://github.com/junegunn/vim-plug)\n\nDevelopment plugins:\n\n* Real-time linting with [ALE](https://github.com/w0rp/ale)\n* Code navigation and completion using\n  [jedi-vim](https://github.com/davidhalter/jedi-vim) and\n  [completor](https://github.com/maralla/completor.vim)\n* File, tags, etc. searching via [fzf](https://github.com/junegunn/fzf.vim)\n\nMisc:\n\n* Custom [vim-airline](https://github.com/vim-airline/vim-airline) color scheme\n* Some basic and [vim-surround](https://github.com/tpope/vim-surround) keymaps\n  from [YADR (Yet Another Dotfile Repo)](https://github.com/skwp/dotfiles/)\n\n![vim screenshot](/.dotfiles/img/screenshot-vim.png)\n\n### Git\n\n#### Basic settings\n\n* Use `less` with 4-column tab stops\n* Set push default to `upstream`\n* Enable `diff3` conflict resolution style\n* Disable `git status` hints\n* Enable rename and copy detection by default\n* Enable mnemonic prefixes in `git diff`\n\n#### Custom colors\n\n* `git branch`: Current branch in brighter green, remote branches in brighter\n  red, upstream branches in blue bold\n* `--decorate` (with `git log`, etc.): HEAD in red bold, remote branches in\n  blue bold, tags in yellow bold\n* `git diff`: Brighter green and red for added and removed, hunk header (line\n  numbers changed) in brighter blue bold, hunk function header in magenta bold\n* `git grep`: Matches in orange, matching filenames in purple, line numbers in\n  brighter green, function names in yellow, and separators in gray\n* `git status`: Branch name in bold and underlined, added files in brighter\n  green, changed files in brighter red, files with conflicts in yellow, and\n  untracked files in blue\n\n![git colors screenshot](/.dotfiles/img/screenshot-git-colors.png)\n\n#### Aliases\n\nSee my [.gitconfig](/.gitconfig) for the full list of aliases. Some of the more\nuseful aliases are:\n\n* `ca`: \"commit amend\" (`git commit --amend`)\n* `cb`: \"create branch\" (Creates a new branch at either the specified point or\n  current HEAD, copying remote tracking branch information if available)\n* `cf`: \"commit fixup\" (`git commit --amend --no-edit`)\n* `ds`: \"diff staged\" (`git diff --staged`)\n* `dw`: \"word diff\" (`git diff --word-diff=color`)\n* `fa`: \"find alias,\" based on [the \"finda\" alias from\n  here](http://brettterpstra.com/2014/08/04/shell-tricks-one-git-alias-to-rule-them-all/)\n  (Type \"git fa\" followed by an optional grep term to see all configured\n  aliases, or aliases matching the specified search term)\n* log aliases:\n  * `l`: \"log\" (Similar to basic `git log`, but with extra colors, commit date\n    and relative date instead of author date)\n  * `lc`: \"log compact\" (Log format with commit and metadata on one line\n    followed by full commit messages)\n  * `lf`: \"log files\" (One line per commit followed by the changed file list\n    produced by `--numstat`)\n  * `lo`: \"log oneline\" (One line per commit, with the relative commit date on\n    the left)\n  * `lx`: \"log eXtra\" (Similar to the `l` alias, but with both author and\n    committer information)\n* `ri`: \"rebase interactive\" (Specify a base commit, number of commits such as\n  `git ri 3`, or no argument to rebase all commits on on the current branch's\n  remote tracking branch)\n* `ub`: \"upstream branch\" (Shows the output of `git show-branch` for the\n  current branch and its upstream tracking branch)\n\n### Mutt\n\n* Configure the sidebar but hide it by default (requires Mutt 1.7.0+ or the\n  sidebar patch)\n* Sort and display messages by thread\n* Message index color highlights, including highlighting messages sent only to\n  me and PGP-encrypted messages\n* Compose mail using vim\n* Vim-style navigation keybindings (`gg`, `G`, `Ctrl+b`, `Ctrl+f`)\n* [`format=flowed`](http://joeclark.org/ffaq.html) support when composing and\n  reading mail\n* PGP support with outgoing message signing enabled by default\n* Custom status bar formats\n\n![mutt screenshot](/.dotfiles/img/screenshot-mutt.png)\n\n## Development\n\nStatic checks are managed by [pre-commit][pre-commit].\n\nInstallation via [`pipx`][pipx]:\n\n```console\npip install pipx\npipx install pre-commit\npre-commit install\n```\n\nInstallation via `pip`:\n\n```console\npip install pre-commit\npre-commit install\n```\n\n## Licensing and attribution\n\nParts of this repository contain third-party code, which is copyright their\nrespective owners and bound by the license terms specified by each original\nsource. Every effort has been made to identify third-party code within this\nrepository; sources are cited within the code base and/or in the commit(s) in\nwhich pieces of third-party code were added to the repository.\n\nOriginal code in this repository is published under the MIT license. See\n[`.dotfiles/doc/LICENSE`](/.dotfiles/doc/LICENSE) for licensing information.\n\n\n[pipx]: https://pypa.github.io/pipx/\n[pre-commit]: https://pre-commit.com/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmkent%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmkent%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmkent%2Fdotfiles/lists"}