Giter Club home page Giter Club logo

dotfiles's Introduction

      โ–ˆโ–ˆ            โ–ˆโ–ˆ     โ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆ  โ–ˆโ–ˆ
     โ–‘โ–ˆโ–ˆ           โ–‘โ–ˆโ–ˆ    โ–‘โ–ˆโ–ˆโ–‘ โ–‘โ–‘  โ–‘โ–ˆโ–ˆ
     โ–‘โ–ˆโ–ˆ  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆ โ–‘โ–ˆโ–ˆ  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–ˆโ–ˆโ–‘ โ–‘โ–‘โ–‘โ–ˆโ–ˆโ–‘ โ–‘โ–ˆโ–ˆ โ–‘โ–ˆโ–ˆ โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–ˆโ–ˆ โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘
 โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆ   โ–‘โ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆ    โ–‘โ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆ โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
โ–‘โ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆ   โ–‘โ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆ    โ–‘โ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆ โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘  โ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–ˆ
โ–‘โ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ   โ–‘โ–‘โ–ˆโ–ˆ   โ–‘โ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
 โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘  โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘     โ–‘โ–‘    โ–‘โ–‘   โ–‘โ–‘ โ–‘โ–‘โ–‘  โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘

  โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“
 โ–‘โ–“ about  โ–“ custom linux config files
 โ–‘โ–“ author โ–“ xero <[email protected]>
 โ–‘โ–“ code   โ–“ http://code.x-e.ro/dotfiles
 โ–‘โ–“ mirror โ–“ https://git.io/.files
 โ–‘โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“
 โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘

NOTE: if you are looking for my linux wm configs like 2bwm, windowchef, etc. they now live in the classic branch and are not actively maintained since i live in the tty, xorg free, these days.

table of contents

dotfiles

in the unix world programs are commonly configured in two different ways, via shell arguments or text based configuration files. programs with many options like text editors are configured on a per-user basis with files in your home directory ~. in unix like operating systems any file or directory name that starts with a period or full stop character is considered hidden, and in a default view will not be displayed. thus the name dotfiles.

it's been said of every console user:

"you are your dotfiles".

since they dictate how your system will look and function. to many users (see ricers and beaners) these files are very important, and need to be backed up and shared. people who create custom themes have the added challenge of managing multiple versions of them. i have tried many organization techniques. and just take my word for it when i say, keeping a git repo in the root of your home directory is a bad idea. i've written custom shell scripts for moving or symlinking files into place. there are even a few dotfile managers, but they all seem to have lots of dependencies. i knew there had to be a simple tool to help me.

managing

i manage mine with gnu stow, a free, portable, lightweight symlink farm manager. this allows me to keep a versioned directory of all my config files that are virtually linked into place via a single command. this makes sharing these files among many users (root) and computers super simple. and does not clutter your home directory with version control files.

installing

stow is available for all linux and most other unix like distributions via your package manager.

  • apt install stow
  • brew install stow
  • dnf install stow
  • pacman -S stow
  • yum install stow

or clone it from source and build it yourself.

how it works

by default the stow command will create symlinks for files in the parent directory of where you execute the command. since i keep my dots in: ~/.local/src/dotfiles and all stow commands should be executed in that directory and suffixed with -t ~ to target the home directory. otherwise they will end up in ~/.local/. if you wanna make things easier on yourself you can clone the repo to ~/dotfiles then run commands with no flags. but who likes things easy in the unix world ;P

to install configs execute the stow command with the folder name as the first argument, then target your home directory (or wherever you like).

to install my zsh configs use the command:

stow zsh -t ~ this will symlink files like .zshrc to ~/.config/zsh

to install the fun scripts to /usr/local/bin execute the command:

stow fun -t /usr/local/

this will symlink the fun scripts like food to /usr/local/bin. notice that the location of the scripts has appended a bin folder? that's b/c stow creates or uses the exact folder structure of the repo. and the food script is located at /fun/bin/food in this repo.

note: stow can only create a symlink if a config file does not already exist. if a default file was created upon program installation you must delete it first before you can install a new one with stow. this does not apply to directories, only files.

more notes on using/understanding stow in this github issue.

my dotfiles setup

to fully "install" and setup this repo run the setup script or something like this:

# clone and stow
git clone [email protected]:xero/dotfiles.git ~/.local/src/dotfiles &&
	cd ~/.local/src/dotfiles &&
	stow bin fun git gpg ssh tmux neovim zsh -t ~

# tmux
mkdir ~/.config/tmux/plugins &&
	git clone --depth=1 https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm &&
	~/.config/tmux/plugins/tpm/scripts/install_plugins.sh &&
	cd ~/.config/tmux/plugins/tmux-thumbs &&
		expect -c "spawn ./tmux-thumbs-install.sh; send \"\r2\r\"; expect complete" 1>/dev/null

# nvim
mkdir ~/.local/nvim &&
  git clone --filter=blob:none --single-branch https://github.com/folke/lazy.nvim.git ~/.local/share/nvim/lazy
nvim --headless "+Lazy! sync" +qa
nvim --headless "+MasonUpdate" +qa

# creating ~src and ~dotfiles aliases"
sudo useradd -g src -d ~/.local/src src
sudo useradd -d ~/.local/src/dotfiles dotfiles

tl;dr

navigate to your home directory

cd ~

clone the repo:

git clone [email protected]:xero/dotfiles.git

enter the dotfiles directory

cd dotfiles

install the zsh settings

stow zsh

install zsh settings for the root user

sudo stow zsh -t /root

uninstall zsh

stow -D zsh

etc, etc, etc...

terminal emulator

recently i've been using an 11" m1 ipad pro and a bluetooth 68% mechanical keyboard, usually on my lap, as my main computer. i use the community edition of the blink shell connected to a vps.

when it comes to fonts i've been using hack (i use a mod w/ extra icons for extended unicode and emoji support.) it's included in base64 encoded css form, along with color schemes, in the blink directory.

run blink config under appearance, set the screen mode set to cover then setup your server identity and keys. beyond that the only command i ever run in blink is mosh x. x being my server alias.

vps & local clipboard

idk why, but i chose debian 11 on aws for some reason. there's a setup script for a fresh vps to install all the packages, tools, & services, create my user, setup keys, etc... that i use, my way. but you the reader don't need them all to run my dots, this is for me. beware there be dragons here.

it builds mosh-server from this pr for osc 52 clipboard support.

i use xvfb to create a headless xorg enviroment for the clipboard. you can then use tools like xsel and xclip to pipe {in/out} of it in the tty. i have a personal fork on clipmenu that uses fzf and a an osc52 yank script to syncromize the x and ipad clipboards. there are other osc52 plugins for neovim and tmux included in these dotfiles to bring the whole thing together.

here's an abbreviated aws ec2 launch template for my arm64 graviton instance:

{
	"LaunchTemplateName": "debian11_dev_box",
	"LaunchTemplateData": {
		"ImageId": "ami-038e5cbebf3138c24",
		"InstanceType": "c6g.medium",
		"EbsOptimized": true,
		"BlockDeviceMappings": [{
			"DeviceName": "/dev/xvda",
			"Ebs": {
				"Encrypted": true,
				"Iops": 8000,
				"VolumeSize": 80,
				"VolumeType": "gp3",
				"Throughput": 125
			}
		}],
		"NetworkInterfaces": [{
			"SecuityGroups": {
				"IpPermissions": [
					{ "protocol": "tcp", "port": 0 },
					{ "protocol": "tcp", "port": 1723 },
					{ "protocol": "tcp", "port": 22 },
					{ "protocol": "tcp", "port": 443 },
					{ "protocol": "tcp", "port": 60806 },
					{ "protocol": "tcp", "port": 80 },
					{ "protocol": "udp", "port": 1701 },
					{ "protocol": "udp", "port": 4500 },
					{ "protocol": "udp", "port": 500 },
					{ "protocol": "udp", "port": 61000 }
				]
			}
		}]
	}
}

shell

i prefer a minimal setup, and choose to interact with my operating system via the so-called "terminal" or "command line", (read that quoting sarcastically). with the web browser and video player among the noted outliers. in my opinion, using your computer should be a very personal experience. your colors, aliases, key-bindings, etc meticulously crafted to your exacting specifications. so for me, the unix shell is the most important part of my environment.

i use zsh as my interactive shell. it's an extensible, bash like shell with awesome completion and correction engines. i manage multiple shell sessions with tmux. it's a feature packed terminal multiplexer with support for buffers, split windows, detached local and remote sessions, etc. i use neovim and a member of the cult of vi. sing phrases to the third reincarnation of the glorious ed! lel.

clean home

i'm all about living a comfy and clean digital life, so that means a tidy and organized home directory. my ~ and this repo, follow the XDG spec. here's a generalized breakdown:

.
โ”œโ”€โ”€ .config/ $XDG_CONFIG_HOME --> app specific configs
โ”‚   โ”œโ”€โ”€ nvim
โ”‚   โ”œโ”€โ”€ tmux
โ”‚   โ”œโ”€โ”€ zsh       --> each app has a folder
โ”‚   โ”‚   โ””โ”€โ”€ zshrc --> config files
โ”‚   โ””โ”€โ”€ etc...
โ”œโ”€โ”€ .local/
โ”‚   โ”œโ”€โ”€ bin/   $PATH            --> my scripts
โ”‚   โ”œโ”€โ”€ cache/ $XDG_CACHE_HOME  --> runtime files
โ”‚   โ”œโ”€โ”€ docs/  ~docs            --> my documents
โ”‚   โ”œโ”€โ”€ lib/   $pkgManger_HOME  --> app libraries
โ”‚   โ”œโ”€โ”€ share/ $XDG_DATA_HOME   --> shared app files
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ dotfiles/   --> this repo
โ”‚   โ”‚   โ””โ”€โ”€ other_code/
โ”‚   โ””โ”€โ”€ state/ $XDG_STATE_HOME  --> app state files
โ”‚       โ””โ”€โ”€ zsh/
โ”‚           โ””โ”€โ”€ history --> app created files
โ”œโ”€โ”€ .ssh/
โ”‚   โ”œโ”€โ”€ authorized_keys
โ”‚   โ”œโ”€โ”€ config
โ”‚   โ””โ”€โ”€ known_hosts
โ””โ”€โ”€ โ–„โ–ˆโ–€ โ–ˆโ–ฌโ–ˆ โ–ˆ โ–€โ–ˆโ–€

to make this all work, (esp ~/.local/lib) i have a ton of XDG directives in my zsh environment file. the one tricky bit it getting your zshrc outta home. you need to export the ZDOTDIR globally somewhere like /etc/zsh/zshenv or /etc/zlogin that is globally sourced. other options like using systemd discussed here. i suggest running these two commands from my setup script to get things ready:

# create directory skeleton
mkdir -p ~/.local/{bin,docs,cache,lib,share,src,state} ~/.local/state/zsh

# export ZDOTDIR globally
echo 'export ZDOTDIR="$HOME"/.config/zsh' >>/etc/zsh/zshenv

i like to run these before cloning my dotfiles and using stow, to prevent these dirs from being symlinks.

neovim

with it's tight integration to the unix shell, vim has been my editor of choice for years. once you start to grok movements and operators you quickly begin manipulating, not just editing text files. and in the shell, everything is just text ;D these days i'm a full time neovim user. it's just better than normal vim at this point imho. using a community built embedded language like lua5 makes way more sense than a custom/proprietary one.

with my asliases e is $EDITOR and se is sudo $EDITOR

e ~dotfiles/README.md is nvim ~/.local/src/dotfiles/README.md

se /etc/hosts is sudo nvim /etc/hosts

you can also start neovim using ec or editor clean, to run nvim --cmd ":lua vim.g.noplugins=1". which is kinda like nvim --clean with the added bonus of still loading some sane defaults. i use this as my MANPAGER with +MAN! as well.

my neovim setup is written in lua, uses lazy.vim, and a bunch of plugins. you can enable/disable them selectivly from plugins.lua. here's the structure of configs:

~/.config/nvim
โ”œโ”€โ”€ lua/
โ”‚   โ”œโ”€โ”€ utils/        --> shared helper functions
โ”‚   โ”œโ”€โ”€ plugins/
โ”‚   โ”‚   โ”œโ”€โ”€ alpha.lua --> each plugin has it's own config
โ”‚   โ”‚   โ”œโ”€โ”€ cmp.lua
โ”‚   โ”‚   โ”œโ”€โ”€ lsp/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ init.lua   --> main lsp setup logic
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ remaps.lua --> lsp key-bindings
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ servers/
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ bashls.lua --> language server specific configs
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ luals.lua
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ etc...
โ”‚   โ”‚   โ”œโ”€โ”€ mason.lua
โ”‚   โ”‚   โ””โ”€โ”€ etc...
โ”‚   โ”œโ”€โ”€ ui.lua       --> ui related options
โ”‚   โ”œโ”€โ”€ commands.lua --> custom commands and key-bindings
โ”‚   โ”œโ”€โ”€ general.lua  --> general settings
โ”‚   โ””โ”€โ”€ plugins.lua  --> lazy.nvim entrypoint
โ”œโ”€โ”€ nvim-logo*       --> k-rad ansi art
โ””โ”€โ”€ init.lua         --> calls other files

as of writing this, i use ~50 plugins and an average startup time of 90-150ms. plugin highlights include:

my leader key is set to , and you can checkout all my custom key-bindings by calling :WhichKey

license

kopimi logo

all files and scripts in this repo are released CC0 / kopimi! in the spirit of freedom of information, i encourage you to fork, modify, change, share, or do whatever you like with this project! ^c^v

dotfiles's People

Contributors

xero avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dotfiles's Issues

unable install

 git clone [email protected]:xero/dotfiles.git
Cloning into 'dotfiles'...
The authenticity of host 'github.com (140.82.121.4)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

then

git clone --filter=blob:none --single-branch https://github.com/folke/lazy.nvim.git ~/.local/share/nvim/lazy 
fatal: destination path '/home/u/.local/share/nvim/lazy' already exists and is not an empty directory.

aliases

small thing bothering me :|
alias vi="vim" and alias mkdir="mkdir -p" are present twice in the .zsh/aliases.zsh file.
๐Ÿ‘

understanding gnu stow

Hi,
I'm new to Stow and I'm having difficulties understanding how to manage the dotfiles properly.
My quest is: If you have to add a file, do you create it in the repo and then relaunch stow every time?
I know my question is off topic and I will remove it if you don't want to answare me but I really appreciate any kind of help.

Merge xinitrc

Hello xero,

Saw that you've been using two different xinitrc files that can be merged:

#!/bin/sh
#
#          โ–ˆโ–ˆ          โ–ˆโ–ˆ   โ–ˆโ–ˆ                 
#         โ–‘โ–‘          โ–‘โ–‘   โ–‘โ–ˆโ–ˆ                 
#  โ–ˆโ–ˆ   โ–ˆโ–ˆ โ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ  โ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ 
# โ–‘โ–‘โ–ˆโ–ˆ โ–ˆโ–ˆ โ–‘โ–ˆโ–ˆโ–‘โ–‘โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–ˆโ–ˆโ–‘ โ–‘โ–‘โ–ˆโ–ˆโ–‘โ–‘โ–ˆ โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–ˆโ–ˆ
#  โ–‘โ–‘โ–ˆโ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆ โ–‘โ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆ   โ–‘โ–ˆโ–ˆ โ–‘ โ–‘โ–ˆโ–ˆ  โ–‘โ–‘ 
#   โ–ˆโ–ˆโ–‘โ–ˆโ–ˆ โ–‘โ–ˆโ–ˆ โ–‘โ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆ   โ–‘โ–ˆโ–ˆ   โ–‘โ–ˆโ–ˆ   โ–ˆโ–ˆ
#  โ–ˆโ–ˆ โ–‘โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆ  โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆ  โ–‘โ–‘โ–ˆโ–ˆ โ–‘โ–ˆโ–ˆโ–ˆ   โ–‘โ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ 
# โ–‘โ–‘   โ–‘โ–‘ โ–‘โ–‘ โ–‘โ–‘โ–‘   โ–‘โ–‘ โ–‘โ–‘    โ–‘โ–‘  โ–‘โ–‘โ–‘     โ–‘โ–‘โ–‘โ–‘โ–‘  
#
#  โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“
# โ–‘โ–“ author โ–“ xero <[email protected]>
# โ–‘โ–“ code   โ–“ http://code.xero.nu/dotfiles
# โ–‘โ–“ mirror โ–“ http://git.io/.files
# โ–‘โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“
# โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘

# merge custom x resources
xrdb -merge "${HOME}/.Xdefaults" &

# start the terminal emulator daemon
urxvtd -q -f -o &

# keyring
gnome-keyring-daemon &

# wifi
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
(sleep 2s && nm-applet --sm-disable) &

# power management
(sleep 2s && xfce4-power-manager) &

# sound mixer
(sleep 2s && pnmixer) &

# volume keys daemon
(sleep 2s && xfce4-volumed) &

# compositing manager
#compton -b --config ~/.config/compton.conf &

# start thunar daemon
thunar --daemon &

# wallpaper
nitrogen --restore &

# configure touchpad
syndaemon -i 0.8 -d &
if egrep -iq 'touchpad' /proc/bus/input/devices; then
    synclient VertEdgeScroll=0 &
    synclient TapButton1=1 &
    synclient HorizTwoFingerScroll=1 &
fi

# clipboard manager
(sleep 3s && clipit) &

# keyboard settings - 250 ms delay and 25 cps (characters per second) repeat rate.
xset r rate 250 25 &

# disable system beep
xset b off &

# start the rock
mpd &

# setup fonts
xset +fp ~/.fonts &
xset fp rehash &

session=${1:-awesome}

case $session in
    awesome)
        Xdefaults
        # fix cursors. for a minute :/
        xsetroot -cursor_name left_ptr
        exec awesome
        ;;
    herbstluftwm)
        exec herbstluftwm --locked
        ;;
    *)
        printf '%s\n' 'System failure, abandon the ship!'
        ;;
esac

Replace startx in your zprofile with

exec xinit awesome -- :0 -nolisten tcp vt1

Also in your shell configuration file you can point another location for xinitrc

export XINITRC="$HOME/.config/xinitrc"

Is there are any reason why there are so many sleep in there ?

Cheers

License of scripts in this repo

Some of your scripts are pretty impressive to a shell novice like me. (Others a bit silly ๐Ÿ˜‰ ).
Under what license are these scripts available? Can I reuse and adapt them?

installer

decide on a methodology / implementation to auto install dotfiles.

  • bash file that creates symlinks?
  • homeshick?
  • something else?

'Rusto' figlet font

I noticed in xero_shell.gif and in aliases.zsh that you used a font called Rusto, but I can't find it anywhere, and it did not come installed with toilet on my system (Arch). Did you make it yourself? It's really pretty and I want it. :p

Consider making an install script

Hi,

I like your setup and colors, especially nord colors :) Very nice job.
I would like to use it but it still requires quite a bit of manual work to install all the packages, etc. Would you consider making a shell script to bootstrap everything?
Thanks!

question - where did you get the unicode in the tmux and nvim

I love what you have here, and I have taken some things from it, thank you. I have been looking for a good place to find some good unicode for a few things while customizing my own tmux and nvim. Where did you get yours from?
Specifically, I am looking for angle brackets, half circles and such that are full line height.

Useful Tip & Future Optimizations

Regarding: https://github.com/xero/dotfiles/blob/3b05bdfc36346f8d92a5af0a317c7f769bf7754a/bin/bin/epoch

In BASH 5.0, $EPOCHSECONDS was introduced, which stores seconds since Epoch, saving the need for all that stuff. Even in >= BASH 4.2, the printf builtint itself can already show SSE:

printf '%(%s)T\n' -1

The %(...)T format specification is just for most of the usual gubbins you'd give date(1) and other utilities and functions from other languages (e.g., strftime()).

Regarding formatting SSE, that's also easy with printf in BASH:

printf '%(%F_%X)T\n' SSE

The above would format the given SSE as a common timestamp.

You most likely want to store the date and/or time into a variable for later usage, but using command substitution and a subshell for this isn't fun. Believe it or not, printf has you covered there as well, as of BASH 3.1 (4.1 for array subscripts):

printf -v Timestamp '%(%F_%X)T\n' SSE

The above will grab a suitable timestamp, then shove it into a shell variable.

Essentially, date(1) is almost always redundant in BASH, with some obscure exceptions, such as date -d tomorrow, although this could easily be done with BASH as well. As I've been saying for years: "if you're using BASH, use BASH!" ;) This will help optimize your scripts in the future.

GNU Stow

Hello,

I have one question about GNU Stow. I learned, thanks to you, how to use GNU Stow with the -t option like this stow -t / my_folder. I am wondering how can I unstow it? I tried stow -D my_folder and stow -D / my_folder, but it doesn't work. Do you have any idea how to do this?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.