├── .gitignore ├── README.md ├── Xresources ├── bashrc ├── bootstrap.sh ├── i3_config ├── mirrorlist ├── terminator_config ├── tmux.conf ├── vimrc └── xinitrc /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Arch Linux 2 | ====================== 3 | 4 | > John Hammond | September 29th, 2019 5 | 6 | These are my notes and scripts while installing and setting up my Arch Linux environment. 7 | 8 | I did this on my DELL XPS 15 laptop on September 29th, 2019. Following that, 9 | I began to set up a virtual machine for use at work. The virtual machine required 10 | a little bit of a different setup, so I decided to write these things down 11 | and try and automate the procedure. 12 | 13 | -------------------------- 14 | 15 | The `bootstrap.sh` script 16 | ================= 17 | 18 | This script is still in development, but it can be used to quickly take a 19 | freshly installed Arch Linux system to a fleshed-out and working state (per my own 20 | idea of "usable"). 21 | 22 | > **NOTE:** The script is INCOMPLETE, and I will be continuously adding to it. 23 | 24 | As of right now, the script will 25 | 26 | * Set the locale, "arch" hostname, and EDT5EST timezone 27 | * Create a new user (or use an existing one) you supply 28 | * Configure `pacman` to use close mirrors 29 | * Install: 30 | - sudo 31 | - pulseaudio (and pavucontrol) 32 | - git 33 | - vim 34 | - tmux 35 | - X (and xrandr) 36 | - base-devel 37 | - i3 (and gnu-free-fonts) 38 | - terminator 39 | - dmenu 40 | - firefox 41 | - yay 42 | * Configure Terminator to use my prefered theme 43 | * Configure tmux to run on start of a shell 44 | * Configure X to start i3 and for the first TTY to start the desktop 45 | * Configure Vim to use the Sublime Text Monokai colorscheme 46 | * Configure git with my preferred name and e-mail (change this if you use this) 47 | * Made the /opt directory writeable by the user (I like to store tools there) 48 | 49 | 50 | You can run the script right after a fresh install and you set up GRUB. Replace 51 | `john` with whatever username you want to be the one managing your system, that 52 | you use from here on out. 53 | 54 | ``` 55 | ./bootstrap.sh 56 | ``` 57 | 58 | 59 | Installing 60 | ------------ 61 | 62 | **Downloading the ISO** 63 | 64 | I downloaded the `archlinux-2019.09.01-x86_64.iso` from here: [https://www.archlinux.org/download/](https://www.archlinux.org/download/). 65 | I searched for a United States mirror and chose one: specifically, I used: [http://mirrors.acm.wpi.edu/archlinux/iso/2019.09.01/](http://mirrors.acm.wpi.edu/archlinux/iso/2019.09.01/) 66 | 67 | 68 | **Burning the ISO to a Disc** 69 | 70 | I still had Ubuntu at the time, so I burned the Arch Linux ISO to a disc with [Brasero]. 71 | **Booting the Arch Linux Live Disc** 72 | 73 | On my DELL XPS 15, I needed to spam the `F12` key when booting to get to the menu and choose "Boot from CD". **I made sure to boot in UEFI**. 74 | 75 | Once I got into the Arch Linux prompt, I followed the instructions from their [Installation Guide](https://wiki.archlinux.org/index.php/installation_guide). 76 | 77 | I didn't need to change the keyboard layout, so I went on just to verify the UEFI boot mode: 78 | 79 | ``` 80 | ls /sys/firmware/efi/efivars 81 | ``` 82 | 83 | This had results, so I knew I successfully booted with UEFI. Good enough! 84 | 85 | When I did this on the virtual machine, I did not have results -- it had not booted 86 | in UEFI. This did not end up mattering much. 87 | 88 | 89 | **Connecting to the Internet** 90 | 91 | On my DELL XPS 15, I wanted to connect to the Internet right away. To get started, I needed to know the name of the 92 | interface I was working with. 93 | 94 | ``` 95 | ip link 96 | ``` 97 | 98 | In my case, my interface name was `wlp59s0`. 99 | 100 | Now I needed to actually connect to my Wi-Fi. I used `netctl` to keep it easy. 101 | 102 | ``` 103 | cp /etc/netctl/examples/wireless-wpa /etc/netctl/home 104 | vim /etc/netctl/home 105 | ``` 106 | 107 | With that configuration file, I could fill in the interface name, SSID, and Wi-Fi password. 108 | 109 | ``` 110 | net start home 111 | ``` 112 | 113 | At that point, I could connect to the Internet! 114 | 115 | On the virtual machine, I did not need to set any of this up. Because the VM was 116 | either bridged or NAT-d, it should have Internet. I did run these commands to 117 | snag an IP address (and I often need to do this on boot for the VM): 118 | 119 | ``` 120 | dhcpcd 121 | dhcpcd -4 122 | ``` 123 | 124 | **Updating the Time Service** 125 | 126 | ``` 127 | timedatectl set-ntp true 128 | ``` 129 | 130 | **Partitioning the Disks** 131 | 132 | I used this command to determine which devices are set up already. 133 | 134 | ``` 135 | fdisk -l 136 | ``` 137 | 138 | In my case of my DELL XPS 15, I had `/dev/nvmen1p1`, `/dev/nvmen1p2` and `/dev/nvmen1p3` all set up (because I did have Ubuntu installed on this previously). 139 | 140 | My `/dev/nvmen1p1` was the EFI partition for GRUB, `/dev/nvmen1p2` was my EXT4 filesystem, and `/dev/nvmen1p3` was my swapspace. 141 | 142 | _If you needed to partition the drive manually, like you were setting up in a virtual machine, I would recommend using `cfdisk`._ 143 | 144 | In my case, I needed to format these partitions with their appropriate purposes. 145 | 146 | ``` 147 | mkfs.ext4 /dev/nvmen1p2 148 | mkswap /dev/nvmen1p3 149 | swapon /dev/nvmen1p3 150 | ``` 151 | 152 | I handled the `/dev/nvmen1p1` EFI partition later, when I would install GRUB. 153 | 154 | In the case of the virtual machine, I would need to create these partitions "manually" 155 | with 156 | 157 | ``` 158 | cfdisk 159 | ``` 160 | 161 | I created a 1 GB partition for swap space and another 1 GB for the boot loader (probably don't need that much...) and the rest I reserved for the filesystem. 162 | 163 | I would then run the appropriate commands with `/dev/sda1`, `/dev/sda2`, etc. 164 | 165 | 166 | **Mounting the Filesystem** 167 | 168 | ``` 169 | mount /dev/nvmen1p2 /mnt 170 | ``` 171 | 172 | **Installing Arch** 173 | 174 | ``` 175 | pacstrap /mnt base 176 | ``` 177 | 178 | **Configure the system** 179 | 180 | ``` 181 | genfstab -U /mnt >> /mnt/etc/fstab 182 | ``` 183 | 184 | **Chroot into the new filesystem** 185 | 186 | ``` 187 | arch-chroot /mnt 188 | ``` 189 | 190 | **Setting the root password** 191 | 192 | ``` 193 | passwd 194 | ``` 195 | 196 | **Install GRUB** 197 | 198 | ``` 199 | pacman -Sy grub os-prober 200 | ``` 201 | 202 | _When I was installing via virtual machine, I just needed to:_ 203 | 204 | ``` 205 | grub-install /dev/sda 206 | grub-mkconfig -o /boot/grub/grub.cfg 207 | ``` 208 | 209 | _When I was installing on my hard drive I did:_ 210 | 211 | ``` 212 | grub-install /dev/nvmen1p3 213 | grub-mkconfig -o /boot/grub/grub.cfg 214 | ``` 215 | 216 | **DO NOT forget to copy over a network profile for `netctl` and install `netctl` and `network-manager` 217 | so you still have internet access when you reboot into the real system** 218 | 219 | 220 | At this point, the `bootstrap.sh` script could be used. 221 | 222 | -------------------------------------------------------------------------------- /Xresources: -------------------------------------------------------------------------------- 1 | 2 | ! special 3 | 4 | *.foreground: #f8f8f2 5 | 6 | *.background: #272822 7 | 8 | *.cursorColor: #f8f8f2 9 | 10 | 11 | 12 | ! black 13 | 14 | *.color0: #272822 15 | 16 | *.color8: #75715e 17 | 18 | 19 | 20 | ! red 21 | 22 | *.color1: #f92672 23 | 24 | *.color9: #f92672 25 | 26 | 27 | 28 | ! green 29 | 30 | *.color2: #a6e22e 31 | 32 | *.color10: #a6e22e 33 | 34 | 35 | 36 | ! yellow 37 | 38 | *.color3: #f4bf75 39 | 40 | *.color11: #f4bf75 41 | 42 | 43 | 44 | ! blue 45 | 46 | *.color4: #66d9ef 47 | 48 | *.color12: #66d9ef 49 | 50 | 51 | 52 | ! magenta 53 | 54 | *.color5: #ae81ff 55 | 56 | *.color13: #ae81ff 57 | 58 | 59 | 60 | ! cyan 61 | 62 | *.color6: #a1efe4 63 | 64 | *.color14: #a1efe4 65 | 66 | 67 | 68 | ! white 69 | 70 | *.color7: #f8f8f2 71 | 72 | *.color15: #f9f8f5 73 | 74 | 75 | -------------------------------------------------------------------------------- /bashrc: -------------------------------------------------------------------------------- 1 | # ~/.bashrc: executed by bash(1) for non-login shells. 2 | # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) 3 | # for examples 4 | 5 | # If not running interactively, don't do anything 6 | case $- in 7 | *i*) ;; 8 | *) return;; 9 | esac 10 | 11 | # don't put duplicate lines or lines starting with space in the history. 12 | # See bash(1) for more options 13 | HISTCONTROL=ignoreboth 14 | 15 | # append to the history file, don't overwrite it 16 | shopt -s histappend 17 | 18 | # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) 19 | HISTSIZE=1000 20 | HISTFILESIZE=2000 21 | 22 | # check the window size after each command and, if necessary, 23 | # update the values of LINES and COLUMNS. 24 | shopt -s checkwinsize 25 | 26 | # If set, the pattern "**" used in a pathname expansion context will 27 | # match all files and zero or more directories and subdirectories. 28 | #shopt -s globstar 29 | 30 | # make less more friendly for non-text input files, see lesspipe(1) 31 | [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" 32 | 33 | # set variable identifying the chroot you work in (used in the prompt below) 34 | if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then 35 | debian_chroot=$(cat /etc/debian_chroot) 36 | fi 37 | 38 | # set a fancy prompt (non-color, unless we know we "want" color) 39 | case "$TERM" in 40 | xterm-color|*-256color) color_prompt=yes;; 41 | esac 42 | 43 | # uncomment for a colored prompt, if the terminal has the capability; turned 44 | # off by default to not distract the user: the focus in a terminal window 45 | # should be on the output of commands, not on the prompt 46 | #force_color_prompt=yes 47 | 48 | if [ -n "$force_color_prompt" ]; then 49 | if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then 50 | # We have color support; assume it's compliant with Ecma-48 51 | # (ISO/IEC-6429). (Lack of such support is extremely rare, and such 52 | # a case would tend to support setf rather than setaf.) 53 | color_prompt=yes 54 | else 55 | color_prompt= 56 | fi 57 | fi 58 | 59 | if [ "$color_prompt" = yes ]; then 60 | PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' 61 | else 62 | PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' 63 | fi 64 | unset color_prompt force_color_prompt 65 | 66 | # If this is an xterm set the title to user@host:dir 67 | case "$TERM" in 68 | xterm*|rxvt*) 69 | PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" 70 | ;; 71 | *) 72 | ;; 73 | esac 74 | 75 | # enable color support of ls and also add handy aliases 76 | if [ -x /usr/bin/dircolors ]; then 77 | test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" 78 | alias ls='ls --color=auto' 79 | #alias dir='dir --color=auto' 80 | #alias vdir='vdir --color=auto' 81 | 82 | alias grep='grep --color=auto' 83 | alias fgrep='fgrep --color=auto' 84 | alias egrep='egrep --color=auto' 85 | fi 86 | 87 | # colored GCC warnings and errors 88 | #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' 89 | 90 | # some more ls aliases 91 | alias ll='ls -alF' 92 | alias la='ls -A' 93 | alias l='ls -CF' 94 | 95 | # Add an "alert" alias for long running commands. Use like so: 96 | # sleep 10; alert 97 | alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' 98 | 99 | # Alias definitions. 100 | # You may want to put all your additions into a separate file like 101 | # ~/.bash_aliases, instead of adding them here directly. 102 | # See /usr/share/doc/bash-doc/examples in the bash-doc package. 103 | 104 | if [ -f ~/.bash_aliases ]; then 105 | . ~/.bash_aliases 106 | fi 107 | 108 | # enable programmable completion features (you don't need to enable 109 | # this, if it's already enabled in /etc/bash.bashrc and /etc/profile 110 | # sources /etc/bash.bashrc). 111 | if ! shopt -oq posix; then 112 | if [ -f /usr/share/bash-completion/bash_completion ]; then 113 | . /usr/share/bash-completion/bash_completion 114 | elif [ -f /etc/bash_completion ]; then 115 | . /etc/bash_completion 116 | fi 117 | fi 118 | 119 | 120 | if [ $XDG_VTNR -eq 1 ] 121 | then 122 | if [ $(tty | grep tty) ] 123 | then 124 | # on startup.... 125 | startx 126 | fi 127 | fi 128 | 129 | if [ $SHLVL -eq 3 ] 130 | then 131 | tmux 132 | exit 133 | fi 134 | 135 | 136 | -------------------------------------------------------------------------------- /bootstrap.sh: -------------------------------------------------------------------------------- 1 | # Arch Linux Bootstrap script 2 | # 3 | # Author: John Hammond 4 | # Date: October 1st, 2019 5 | # 6 | # This script is meant to help set up and install all the tools 7 | # and configuration that I need to get Arch Linux up and running 8 | # quickly and easily. 9 | 10 | NEW_USER=$1 11 | 12 | # Define some colors for quick use... 13 | COLOR_RED=$(tput setaf 1) 14 | COLOR_GREEN=$(tput setaf 2) 15 | COLOR_YELLOW=$(tput setaf 3) 16 | COLOR_BLUE=$(tput setaf 4) 17 | COLOR_MAGENTA=$(tput setaf 5) 18 | COLOR_CYAN=$(tput setaf 6) 19 | COLOR_WHITE=$(tput setaf 7) 20 | BOLD=$(tput bold) 21 | COLOR_RESET=$(tput sgr0) 22 | 23 | function echo_red(){ 24 | echo "${COLOR_RED}${BOLD}$1${COLOR_RESET}" 25 | } 26 | 27 | function echo_green(){ 28 | echo "${COLOR_GREEN}${BOLD}$1${COLOR_RESET}" 29 | } 30 | 31 | function echo_yellow(){ 32 | echo "${COLOR_YELLOW}${BOLD}$1${COLOR_RESET}" 33 | } 34 | 35 | ############################################################### 36 | 37 | 38 | SUDO_DEPENDENCIES="sudo" 39 | AUDIO_DEPENDENCES="pulseaudio pavucontrol" 40 | GIT_DEPENDENCIES="git" 41 | VIM_DEPENDENCIES="vim" 42 | TMUX_DEPENDENCIES="tmux" 43 | X_DEPENDENCIES="xorg-xinit xorg-server xorg-xrandr" 44 | YAY_DEPENDENCINES="base-devel" 45 | I3_DEPENDENCIES="i3 gnu-free-fonts" 46 | TERMINATOR_DEPENDENCIES="terminator" 47 | DMENU_DEPENDENCIES="dmenu" 48 | FIREFOX_DEPENDENCIES="firefox" 49 | 50 | DEPENDENCIES="\ 51 | $SUDO_DEPENDENCIES \ 52 | $AUDIO_DEPENDENCIES \ 53 | $GIT_DEPENDENCIES \ 54 | $VIM_DEPENDENCIES \ 55 | $TMUX_DEPENDENCIES \ 56 | $X_DEPENDENCIES \ 57 | $YAY_DEPENDENCIES \ 58 | $I3_DEPENDENCIES \ 59 | $TERMINATOR_DEPENDENCIES \ 60 | $DMENU_DEPENDENCIES \ 61 | $FIREFOX_DEPENDENCES \ 62 | 63 | " 64 | 65 | 66 | ############################################################# 67 | 68 | POLYBAR_DEPENDENCIES="polybar" 69 | 70 | YAY_INSTALL="\ 71 | $POLYBAR_DEPENDENCIES \ 72 | " 73 | 74 | ############################################################## 75 | 76 | function create_new_user(){ 77 | pacman -Sy sudo --noconfirm 78 | id -u $NEW_USER > /dev/null 79 | 80 | if [ $? -eq 1 ] 81 | then 82 | echo_green "Creating new user $COLOR_BLUE$NEW_USER" 83 | 84 | mkdir /home/$NEW_USER 85 | useradd $NEW_USER 86 | echo_yellow "Please set the password for $COLOR_BLUE$NEW_USER:" 87 | passwd $NEW_USER 88 | else 89 | echo_green "New user already exists, using that account for everything" 90 | fi 91 | 92 | groupadd sudo 93 | usermod -aG sudo $NEW_USER 94 | sed -i 's/# %sudo/%sudo/g' /etc/sudoers 95 | echo "$NEW_USER ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 96 | 97 | chown $NEW_USER:$NEW_USER /home/$NEW_USER 98 | chown -R $NEW_USER:$NEW_USER $(pwd) 99 | mv $(pwd) /home/$NEW_USER/archlinux 100 | cd /home/$NEW_USER/archlinux 101 | } 102 | 103 | function cleanup(){ 104 | sed -i "s/$NEW_USER ALL=(ALL) NOPASSWD: ALL//g" /etc/sudoers 105 | } 106 | 107 | ############################################################### 108 | 109 | 110 | function configure_x(){ 111 | echo_green "Configuring X" 112 | sudo -u $NEW_USER bash -c 'echo "exec i3" > ~/.xinitrc' 113 | sudo -u $NEW_USER bash -c 'cp Xresources ~/.Xresources' 114 | 115 | 116 | cp /etc/X11/xinit/.xinitrc 117 | echo "needs_root_rights=yes" >> /etc/X11/Xwrapper.config 118 | } 119 | 120 | function configure_terminator(){ 121 | echo_green "Configuring Terminator" 122 | sudo -u $NEW_USER bash -c 'mkdir -p ~/.config/terminator' 123 | sudo -u $NEW_USER bash -c 'cp terminator_config ~/.config/terminator/config' 124 | } 125 | 126 | function configure_bashrc(){ 127 | echo_green "Getting default .bashrc" 128 | 129 | sudo -u $NEW_USER bash -c 'cp bashrc ~/.bashrc' 130 | sudo -u $NEW_USER bash -c '. ~/.bashrc' 131 | cp bashrc /etc/bash.bashrc 132 | } 133 | 134 | function configure_tmux(){ 135 | sudo -u $NEW_USER bash -c "echo 'source \"\$HOME/.bashrc\"' > ~/.bash_profile" 136 | sudo -u $NEW_USER bash -c 'cp tmux.conf ~/.tmux.conf' 137 | } 138 | 139 | function configure_vim(){ 140 | echo_green "Configuring vim..." 141 | sudo -u $NEW_USER bash -c 'curl -sfLo ~/.vim/autoload/plug.vim --create-dirs "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"' 142 | 143 | sudo -u $NEW_USER bash -c 'cp vimrc ~/.vimrc' 144 | sudo -u $NEW_USER bash -c 'vim ~/.vimrc +PlugInstall +q +q' 145 | sudo -u $NEW_USER bash -c 'rm ~/.vimrc' 146 | 147 | # Add for the root user as well.. 148 | curl -sfLo ~/.vim/autoload/plug.vim --create-dirs "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" 149 | cp vimrc /etc/vimrc 150 | vim /etc/vimrc +PlugInstall +q +q 151 | } 152 | 153 | function configure_git(){ 154 | sudo -u $NEW_USER bash -c 'git config --global core.editor "vim"' 155 | sudo -u $NEW_USER bash -c 'git config --global user.email "johnhammond010@gmail.com"' 156 | sudo -u $NEW_USER bash -c 'git config --global user.name "John Hammond"' 157 | } 158 | 159 | function configure_pacman(){ 160 | cp mirrorlist /etc/pacman.d/mirrorlist 161 | } 162 | 163 | ############################################################## 164 | 165 | function prepare_opt(){ 166 | chown $NEW_USER:$NEW_USER /opt 167 | } 168 | 169 | function install_yay(){ 170 | pacman -Sy --needed base-devel --noconfirm 171 | pushd /opt/ 172 | git clone https://aur.archlinux.org/yay.git 173 | 174 | chown $NEW_USER:$NEW_USER /opt/yay 175 | cd yay 176 | sudo -u $NEW_USER bash -c 'cd /opt/yay/ && yes|makepkg -si' 177 | popd 178 | sudo -u $NEW_USER bash -c 'yes|yay' 179 | } 180 | 181 | ############################################################### 182 | 183 | function set_timezone(){ 184 | echo_green "Setting timezone to EST5EDT" 185 | 186 | ln -sf /usr/share/zoneinfo/EST5EDT /etc/localtime 187 | hwclock --systohc 188 | } 189 | 190 | function set_locale(){ 191 | echo_green "Setting locale" 192 | sed -i 's/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen 193 | echo "LANG=en_US.UTF-8" > /etc/locale.conf 194 | locale-gen 195 | } 196 | 197 | function set_hostname(){ 198 | echo_green "Setting hostname" 199 | 200 | echo arch > /etc/hostname 201 | cat </etc/hosts 202 | 127.0.0.1 localhost 203 | ::1 localhost 204 | 127.0.1.1 arch.localdomain arch 205 | EOF 206 | 207 | } 208 | 209 | function pre_install(){ 210 | set_timezone 211 | set_locale 212 | set_hostname 213 | } 214 | 215 | 216 | function install_niceties(){ 217 | pacman -Sy $DEPENDENCIES --noconfirm --color=always 218 | } 219 | 220 | function install_more_niceties(){ 221 | yay -Sy $YAY_INSTALL --noconfirm 222 | } 223 | 224 | if [ "$1" == "" ] 225 | then 226 | echo_red "You must supply a username to use." 227 | echo "usage: $0 " 228 | exit 229 | fi 230 | 231 | pre_install 232 | create_new_user 233 | configure_pacman 234 | install_niceties 235 | configure_x 236 | configure_terminator 237 | configure_bashrc 238 | configure_tmux 239 | configure_vim 240 | configure_git 241 | prepare_opt 242 | 243 | install_yay 244 | install_more_niceties 245 | 246 | 247 | cleanup 248 | -------------------------------------------------------------------------------- /i3_config: -------------------------------------------------------------------------------- 1 | # This file has been auto-generated by i3-config-wizard(1). 2 | # It will not be overwritten, so edit it as you like. 3 | # 4 | # Should you change your keyboard layout some time, delete 5 | # this file and re-run i3-config-wizard(1). 6 | # 7 | 8 | # i3 config file (v4) 9 | # 10 | # Please see https://i3wm.org/docs/userguide.html for a complete reference! 11 | 12 | set $mod Mod4 13 | 14 | # Font for window titles. Will also be used by the bar unless a different font 15 | # is used in the bar {} block below. 16 | # set this to zero so the titles for windows are gone 17 | font pango:monospace 0 18 | 19 | # This font is widely installed, provides lots of unicode glyphs, right-to-left 20 | # text rendering and scalability on retina/hidpi displays (thanks to pango). 21 | #font pango:DejaVu Sans Mono 8 22 | 23 | # The combination of xss-lock, nm-applet and pactl is a popular choice, so 24 | # they are included here as an example. Modify as you see fit. 25 | 26 | # xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the 27 | # screen before suspend. Use loginctl lock-session to lock your screen. 28 | exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork 29 | 30 | # NetworkManager is the most popular way to manage wireless networks on Linux, 31 | # and nm-applet is a desktop environment-independent system tray GUI for it. 32 | exec --no-startup-id nm-applet 33 | 34 | # Use pactl to adjust volume in PulseAudio. 35 | set $refresh_i3status killall -SIGUSR1 i3status 36 | bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status 37 | bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status 38 | bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status 39 | bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status 40 | 41 | # Use Mouse+$mod to drag floating windows to their wanted position 42 | floating_modifier $mod 43 | 44 | # start a terminal 45 | bindsym Control+mod1+t exec i3-sensible-terminal 46 | 47 | # kill focused window 48 | bindsym $mod+Shift+q kill 49 | 50 | # start dmenu (a program launcher) 51 | bindsym $mod+Return exec dmenu_run 52 | # There also is the (new) i3-dmenu-desktop which only displays applications 53 | # shipping a .desktop file. It is a wrapper around dmenu, so you need that 54 | # installed. 55 | # bindsym $mod+d exec --no-startup-id i3-dmenu-desktop 56 | 57 | 58 | # alternatively, you can use the cursor keys: 59 | bindsym $mod+Left focus left 60 | bindsym $mod+Down focus down 61 | bindsym $mod+Up focus up 62 | bindsym $mod+Right focus right 63 | 64 | # move focused window 65 | bindsym $mod+Shift+j move left 66 | bindsym $mod+Shift+k move down 67 | bindsym $mod+Shift+l move up 68 | bindsym $mod+Shift+semicolon move right 69 | 70 | # alternatively, you can use the cursor keys: 71 | bindsym $mod+Shift+Left move left 72 | bindsym $mod+Shift+Down move down 73 | bindsym $mod+Shift+Up move up 74 | bindsym $mod+Shift+Right move right 75 | 76 | # split in horizontal orientation 77 | bindsym $mod+h split h 78 | 79 | # split in vertical orientation 80 | bindsym $mod+v split v 81 | 82 | # enter fullscreen mode for the focused container 83 | bindsym $mod+f fullscreen toggle 84 | 85 | # change container layout (stacked, tabbed, toggle split) 86 | bindsym $mod+s layout stacking 87 | bindsym $mod+w layout tabbed 88 | bindsym $mod+e layout toggle split 89 | 90 | # toggle tiling / floating 91 | bindsym $mod+Shift+space floating toggle 92 | 93 | # change focus between tiling / floating windows 94 | bindsym $mod+space focus mode_toggle 95 | 96 | # focus the parent container 97 | bindsym $mod+a focus parent 98 | 99 | # focus the child container 100 | #bindsym $mod+d focus child 101 | 102 | # Define names for default workspaces for which we configure key bindings later on. 103 | # We use variables to avoid repeating the names in multiple places. 104 | set $ws1 "1" 105 | set $ws2 "2" 106 | set $ws3 "3" 107 | set $ws4 "4" 108 | set $ws5 "5" 109 | set $ws6 "6" 110 | set $ws7 "7" 111 | set $ws8 "8" 112 | set $ws9 "9" 113 | set $ws10 "10" 114 | 115 | # switch to workspace 116 | bindsym $mod+1 workspace number $ws1 117 | bindsym $mod+2 workspace number $ws2 118 | bindsym $mod+3 workspace number $ws3 119 | bindsym $mod+4 workspace number $ws4 120 | bindsym $mod+5 workspace number $ws5 121 | bindsym $mod+6 workspace number $ws6 122 | bindsym $mod+7 workspace number $ws7 123 | bindsym $mod+8 workspace number $ws8 124 | bindsym $mod+9 workspace number $ws9 125 | bindsym $mod+0 workspace number $ws10 126 | 127 | # move focused container to workspace 128 | bindsym $mod+Shift+1 move container to workspace number $ws1 129 | bindsym $mod+Shift+2 move container to workspace number $ws2 130 | bindsym $mod+Shift+3 move container to workspace number $ws3 131 | bindsym $mod+Shift+4 move container to workspace number $ws4 132 | bindsym $mod+Shift+5 move container to workspace number $ws5 133 | bindsym $mod+Shift+6 move container to workspace number $ws6 134 | bindsym $mod+Shift+7 move container to workspace number $ws7 135 | bindsym $mod+Shift+8 move container to workspace number $ws8 136 | bindsym $mod+Shift+9 move container to workspace number $ws9 137 | bindsym $mod+Shift+0 move container to workspace number $ws10 138 | 139 | # reload the configuration file 140 | bindsym $mod+Shift+c reload 141 | # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) 142 | bindsym $mod+Shift+r restart 143 | # exit i3 (logs you out of your X session) 144 | bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'" 145 | 146 | # resize window (you can also use the mouse for that) 147 | mode "resize" { 148 | # These bindings trigger as soon as you enter the resize mode 149 | 150 | # Pressing left will shrink the window’s width. 151 | # Pressing right will grow the window’s width. 152 | # Pressing up will shrink the window’s height. 153 | # Pressing down will grow the window’s height. 154 | bindsym j resize shrink width 10 px or 10 ppt 155 | bindsym k resize grow height 10 px or 10 ppt 156 | bindsym l resize shrink height 10 px or 10 ppt 157 | bindsym semicolon resize grow width 10 px or 10 ppt 158 | 159 | # same bindings, but for the arrow keys 160 | bindsym Left resize shrink width 10 px or 10 ppt 161 | bindsym Down resize grow height 10 px or 10 ppt 162 | bindsym Up resize shrink height 10 px or 10 ppt 163 | bindsym Right resize grow width 10 px or 10 ppt 164 | 165 | # back to normal: Enter or Escape or $mod+r 166 | bindsym Return mode "default" 167 | bindsym Escape mode "default" 168 | bindsym $mod+r mode "default" 169 | } 170 | 171 | bindsym $mod+r mode "resize" 172 | 173 | # Start i3bar to display a workspace bar (plus the system information i3status 174 | # finds out, if available) 175 | 176 | 177 | # Force dialogue boxes to a fine size 178 | floating_minimum_size 3000 x 2000 179 | floating_maximum_size 3000 x 2000 180 | 181 | # setup screenshot 182 | bindsym $mod+Print exec gnome-screenshot -a 183 | bindsym $mod+l exec i3lock --color=#000000 184 | 185 | # Run Polybar by default 186 | exec_always --no-startup-id $HOME/.config/polybar/launch.sh 187 | -------------------------------------------------------------------------------- /mirrorlist: -------------------------------------------------------------------------------- 1 | # Server list generated by rankmirrors on 2019-10-01 2 | ## 3 | ## Arch Linux repository mirrorlist 4 | ## Filtered by mirror score from mirror status page 5 | ## Generated on 2019-09-01 6 | ## 7 | Server = http://mirrors.evowise.com/archlinux/$repo/os/$arch 8 | Server = http://mirrors.advancedhosters.com/archlinux/$repo/os/$arch 9 | Server = http://mirror.vtti.vt.edu/archlinux/$repo/os/$arch 10 | Server = http://mirror.cs.vt.edu/pub/ArchLinux/$repo/os/$arch 11 | Server = http://mirror.pit.teraswitch.com/archlinux/$repo/os/$arch 12 | Server = http://mirrors.gigenet.com/archlinux/$repo/os/$arch 13 | -------------------------------------------------------------------------------- /terminator_config: -------------------------------------------------------------------------------- 1 | [global_config] 2 | hide_from_taskbar = True 3 | [keybindings] 4 | [layouts] 5 | [[default]] 6 | [[[child1]]] 7 | parent = window0 8 | type = Terminal 9 | [[[window0]]] 10 | parent = "" 11 | type = Window 12 | [plugins] 13 | [profiles] 14 | [[default]] 15 | cursor_color = "#aaaaaa" 16 | font = Source Code Pro Medium 11 17 | foreground_color = "#ffffff" 18 | palette = "#2e3436:#ef2929:#8ae234:#fce94f:#729fcf:#ad7fa8:#06989a:#d3d7cf:#555753:#ef2929:#8ae234:#fce94f:#729fcf:#ad7fa8:#34e2e2:#eeeeec" 19 | scrollback_infinite = True 20 | scrollbar_position = hidden 21 | show_titlebar = False 22 | use_system_font = False 23 | -------------------------------------------------------------------------------- /tmux.conf: -------------------------------------------------------------------------------- 1 | set -g default-terminal "xterm-256color" 2 | set -g mouse on #For tmux version 2.1 and up 3 | -------------------------------------------------------------------------------- /vimrc: -------------------------------------------------------------------------------- 1 | call plug#begin("~/.vim/plugged") 2 | 3 | Plug 'erichdongubler/vim-sublime-monokai' 4 | 5 | call plug#end() 6 | 7 | set number 8 | syntax on 9 | colorscheme sublimemonokai 10 | 11 | let &t_8f="\[38;2;%lu;%lu:lum" 12 | let &t_8b="\[48;2;%lu;%lu:lum" 13 | 14 | " tmux will send xterm-style keys when its xterm-keys option is on 15 | execute "set =\e[1;*A" 16 | execute "set =\e[1;*B" 17 | execute "set =\e[1;*C" 18 | execute "set =\e[1;*D" 19 | 20 | nnoremap :m-2 21 | nnoremap :m+ 22 | inoremap :m-2 23 | inoremap :m+ 24 | 25 | " Because Python messes up tabs 26 | autocmd FileType python setlocal noexpandtab 27 | autocmd FileType python setlocal tabstop=4 28 | 29 | set autoindent 30 | set copyindent 31 | set noexpandtab 32 | set tabstop=4 33 | set shiftwidth=4 34 | set softtabstop=4 35 | -------------------------------------------------------------------------------- /xinitrc: -------------------------------------------------------------------------------- 1 | 2 | # Environment setup 3 | export GDK_SCALE=1 4 | export GDK_DPI_SCALE=0.95 5 | export QT_SCREEN_SCALE_FACTOR=0.9 6 | export QT_AUTO_SCREEN_SCALE_FACTOR=1 7 | export QT_SCALE_FACTOR=1 8 | 9 | xrandr --dpi 220 10 | xrdb -merge ~/.Xresources 11 | 12 | exec i3 13 | --------------------------------------------------------------------------------