Skip to content

Repo of my personal dotfiles, configs, etc.

License

Notifications You must be signed in to change notification settings

shmcgrath/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

946 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dotfiles

This is a collection of my dotfiles. I am just starting to build them up in March of 2017. I am currently running an Arch Linux pseudo-server and am using an Apple laptop.

I will update this README with more links, tips, and information as I grow my dotfiles.

Dotfile Management with GNU Stow and GitHub

I use GNU Stow to manage my dotfiles. This allows me to easily create symlinks on any *nix-based system I am using. I chose Stow because it is easily and universally available on *nix machines. I do use Windows boxes, but I don"t see myself needing the majority of my dotfiles on those machines. One tool I found when looking for Windows alternatives is stow-lite but I have not used it yet. I also chose stow because I would be able to use it to manage config files that are not in ~/. In the future, I can use stow to deploy centralized config files across my system(s).

GNU Stow and .DS_Store Files

I ran into a bit of an issue when creating the symlinks on Sierra. I kept getting an error message referencing .DS_Store files. After some Googling, I found that if you run Stow with an --ignore flag for .DS_Store, that error will not pop.

$ stow -v --ignore ".DS_Store" -t ~/ folder

You can also create a .stow-global-ignore file in your home directory and add .DS_Store to that file.

When stowing grub, run as sudo with -Rv flags and --target of /

$ sudo stow -Rv -t / grub

Useful Links for Dotfile Management and Creation

These are some of the links that I found useful when figuring out how to manage dotfiles and when setting up the programs they configure.

Dotfiles

Bash

My Config Notes:

neovim setup

  • I am using paq-nvim as a plugin manager on neovim. I tried lazy.vim, but was unable to get it to work with the pack folder from vim-base.

Fonts to Install

Install the following fonts:

  • gnu-free-fonts
  • ttf-liberation
  • ttf-dejavu
  • noto-fonts-emoji
  • otf-commit-mono-nerd
  • ttf-nerd-fonts-symbols
  • ttf-nerd-fonts-symbols-common
  • ttf-nerd-fonts-symbols-mono
  • adwaita-fonts
  • NerdFont in Repo
  • to "install" nerd font from repo, stow it then "fc-cache -f -v"
  • gtk font picker: gtk2fontsel
  • other gtk settings: lxappearance
  • for other systems download fonts from nerdfonts.com

How to choose a nerd font?

  • Pick your font family:
    • If you are limited to monospaced fonts (because of your terminal, etc) then pick a font with Nerd Font Mono (or NFM).
    • If you want to have bigger icons (usually around 1.5 normal letters wide) pick a font without Mono i.e. Nerd Font (or NF). Most terminals support this, but ymmv.
    • If you work in a proportional context (GUI elements or edit a presentation etc) pick a font with Nerd Font Propo (or NFP). This information is from the FiraCode section at this GitHub

Colors and Themes

  • Baskerville El Dorado Dark
  • cyberdream
  • adwaita gtk

User Scripts (Greasemonkey and Violentmonkey)

macOS system tweaks from terminal

  • This article by Paweł Grzybek showed me how to find tweaks I want to set via CLI.

  • macos-defaults.com lists out commands and values

  • To resolve the "permission denied" error when trying to access the Trash in Terminal on macOS, ensure that the Terminal app has Full Disk Access. You can do this by going to System Preferences > Security & Privacy > Privacy tab, unlocking the settings, and adding Terminal to the Full Disk Access list.

Reference Dotfiles for macOS defaults

Installed Packages

offical repo

  • wezterm: terminal
  • ghostty
  • alacritty
  • libqalculate: cli and gui(?) calculator
  • zola: static site generator
  • keepassxc
  • dunst: notificaitons (mako alternative)
  • alsa-utils
  • htop
  • btop
  • calibre
  • docker
  • docker-compose

GUI

  • xfce
  • Hyprland

photography

  • digikam
  • darktable

social

  • discord

xorg

aur packages

  • aurutils

  • ladybird

  • dropbox

  • base linux linux-firmware base-devel dosfstools exfatprogs f2fs-tools e2fsprogs ntfs-3g reflector stow qtile xorg xorg-init rofi firefox kitty uxrvt keepassxc man-db man-pages texinfo less sudo

libqalculate
zola
wezterm
ghostty

base 3-2 cadaver 0.26-1 calcurse 4.8.1-2 cliphist 1:0.6.1-1 cmus (try mpd and ncmpcpp) dart-sass 1.83.4-1 eza 0.20.24-1 fbida 2.14-6 fcron 3.3.1-2 feh 3.10.3-1 firefox 136.0.3-1 firefox-developer-edition 137.0b10-1 flameshot 12.1.0-6 fuzzel 1.11.1-2 ghostty 1.1.3-1 gimp 3.0.2-2 glow 2.1.0-1 gobject-introspection 1.84.0-1 gptfdisk 1.0.10-1 grub 2:2.12.r226.g56ccc5ed-1 gtk2fontsel 0.1-8 gucharmap 15.1.1-1 hexchat 2.16.2-4 hexyl 0.16.0-1 htop 3.4.0-1 hyprland 0.48.0-1 imv 4.5.0-5 incron 0.5.12-6 inetutils 2.5-1 isync 1.5.0-2 kdiff3 1.12.2-1 keepass-plugin-keeagent 0.12.1-4 keychain 2.8.5-3 khal 0.11.3-5 ksh 2020.0.0-3 libsixel 1.10.5-1 lxappearance-gtk3 0.6.4-1 man-pages 6.13-1 materia-gtk-theme 20210322-3 mediainfo 25.03-1 meld 3.22.3-1 msmtp 1.8.28-1 neomutt 20250113-1 newsboat 2.39-1 notmuch 0.38.3-5 nsxiv 33-1 obsidian 1.8.9-2 opendoas 6.8.2-3 otf-commit-mono-nerd 3.3.0-1 pacman-contrib 1.11.0-1 papirus-icon-theme 20250201-1 pavucontrol 1:6.1-1 picocom 3.1-3 picom 12.5-1 polkit-kde-agent 6.3.3-1 python-dbus-next 0.2.3-6 python-gpgme 1.24.2-1 qalculate-gtk 5.5.1-1 qmk 1.1.6-1 rclone 1.69.1-1 reflector 2023-3 remind 5.2.3-1 ristretto 0.13.4-1 rofi-pass 2.0.2-4 rtorrent 0.15.1-4 rxvt-unicode 9.31-7 sassc 3.6.2-5 slock 1.5-3 stalonetray 0.8.5-2 stow 2.4.1-1 sway 1:1.10.1-2 sxhkd 0.6.2-4 sxiv 26-2 testdisk 7.2-2 thunar-dropbox 0.3.1-1 tiny 0.13.0-1 trayer 1.1.8-4 ttf-0xproto-nerd 3.3.0-1 ttf-jetbrains-mono-nerd 3.3.0-1 ttf-noto-nerd 3.3.0-1 udiskie 2.5.7-1 ueberzug 18.3.1-4 vimiv 0.9.1-9 vivaldi 7.2.3621.71-1 vlc 3.0.21-16 vmware-workstation 16.2.1-2 wezterm 20240203.110809.5046fc22-2 wikiman 2.13.2-2 xdg-user-dirs 0.18-2 xf86-video-vesa 2.6.0-2 xfdesktop 4.20.1-1 xfwm4-themes 4.10.0-6 yazi 25.3.2-1 zola 0.20.0-1

Todo

in the .bashrc

Neovim

  • hydra mode in which-key
  • set up a way to generate symbols on open of a workspace? https://github.com/axieax/urlview.nvim - not sure on this?
  • ctags and neovim
  • get learn fugitive and other plugins you have installed Maria icon implementation also look at her fzf-lua and lsp and settings
    • lsp
    • bufferline / statusline
    • dap
    • diffview
    • fzf-lua
    • gitsigns
    • nvim-web-devicons
    • settings.lua
  • snippet for keys and commands nvim - skels?
  • function to copy diagnostic under cursor
  • remove comments from newline in nvim: https://superuser.com/questions/271023/can-i-disable-continuation-of-comments-to-the-next-line-in-vim
  • plain text dict and thesarus lookup especcialy dict in neovim, see blink docs to vimrc: " === Custom commands === command! MakeDir !mkdir -p %:h command! WlCopy w !wl-copy command! XCopy w !xclip -sel cli Also, the quality of life improvements like alias ..='cd ..', or mapping l such that it either opens a pager or lists a dir, depending on the argument. I'd never come up with those, and they're beyond useful.
  • https://github.com/stevearc/conform.nvim

I imagine it's something like:

l() { if [ -d "$1" ] ; then ls -alFh -- "$1" ; else "${PAGER:-pager}" -- "$1" ; fi }

vim.keymap.set("n", "", ":move .+1==", { silent = true }) vim.keymap.set("n", "", ":move .-2==", { silent = true }) vim.keymap.set("v", "", ":move '>+1gv=gv", { silent = true }) vim.keymap.set("v", "", ":move '<-2gv=gv", { silent = true })

combine some pickers -> spell and lsp? help and keys? :lua FzfLua.combine({ pickers = "oldfiles;git_files" }) -- or using the FzfLua vim command: :FzfLua combine pickers=oldfiles;git_files

Neovim LSP

recommendation: don't put the same on_attach for each server, you can use :h LspAttach instead

the actual problem with your code is that :h vim.lsp.enable does not take the config as a 2nd parameter. you have to pass that config into :h vim.lsp.config before enabling.

also strongly recommend reading :h lsp-config

https://vi.stackexchange.com/questions/46749/correct-way-to-utilize-on-attach-in-the-new-vim-lsp-config-setup-in-neovim-v0-11

https://neovim.io/doc/user/lsp.html

THIS ONE PROBABLY BEST: https://stephenvantran.com/posts/2025-10-29-setup-neovim-lsp-011/

https://old.reddit.com/r/neovim/comments/1bljfoi/lspattach_autocommand_vs_on_attach_for_setting/

Neovim 0.12

OMNI BORDER COLOR: neovim/neovim#25541

Software to Learn/Research

Color Palette

I use Cyberdream wherever possible. I may work on a utility to convert Dracula or Catppuccin themes to Cyberdream. For now, I am using the tables below if I have to search and replace.

Notes:

  • backgr/bg = background
  • foregr/fg = foreground

Light Cyberdream

Hex Color
#ffffff bg
#eaeaea bg_alt
#acacac bg_highlight
#16181a fg
#7b8496 gray
#0057d1 blue
#008b0c green
#008c99 cyan
#d11500 red
#997b00 yellow
#d100bf magenta
#f40064 pink
#d17c00 orange
#a018ff purple

Dark Cyberdream

Hex Color
#16181a cd-bg
#1e2124 cd-bg_alt
#3c4048 cd-bg_hi
#ffffff cd-fg
#7b8496 cd-gray
#5ea1ff cd-blue
#5eff6c cd-green
#5ef1ff cd-cyan
#ff6e5e cd-red
#f1ff5e cd-yellow
#ff5ef1 cd-magenta
#ff5ea0 cd-pink
#ffbd5e cd-orange
#bd5eff cd-purple

About

Repo of my personal dotfiles, configs, etc.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published