├── .Xresources ├── .asoundrc ├── .conkyrc ├── .fonts.conf ├── .hushlogin ├── .i3rc ├── .inputrc ├── .mpdrc ├── .ncmpcpprc ├── .picomrc ├── .profile ├── .shrc ├── .vimrc ├── .xinitrc ├── Makefile ├── README ├── config.sh ├── dotfiles.sh └── packages.sh /.Xresources: -------------------------------------------------------------------------------- 1 | ! vim:ft=xdefaults: 2 | 3 | Xft.dpi: 192 4 | Xft.autohint: 0 5 | Xft.hinting: true 6 | Xft.hintstyle: hintslight 7 | Xft.lcdfilter: lcddefault 8 | Xft.antialias: 1 9 | Xft.rgba: rgb 10 | 11 | Xcursor.size: 42 12 | Xcursor.theme: default 13 | 14 | XTerm*termName: xterm-16color 15 | XTerm*geometry: 48x10 16 | XTerm*internalBorder: 90 17 | XTerm*borderWidth: 0 18 | XTerm*utf8: true 19 | XTerm*scrollBar: false 20 | XTerm*cursorBlink: true 21 | XTerm*selectToClipboard: true 22 | XTerm*trimSelection: true 23 | XTerm*renderFont: true 24 | XTerm*wideChars: true 25 | XTerm*visualBell: false 26 | 27 | XTerm.vt100.translations: #override \n\ 28 | Shift Ctrl v:insert-selection(CLIPBOARD) \n\ 29 | Shift Ctrl c:select-set(CLIPBOARD) 30 | 31 | ! pixelsize is relative to screen resolution, size is relative to DPI. 32 | XTerm*faceName: xft:monospace:pixelsize=30 33 | *font: xft:monospace:pixelsize=30 34 | 35 | *foreground: #b2bebf 36 | *background: #1e282c 37 | 38 | *cursorColor: #b2bebf 39 | 40 | *color0: #1e282c 41 | *color8: #566166 42 | 43 | *color1: #b56666 44 | *color9: #b56666 45 | 46 | *color2: #779687 47 | *color10: #779687 48 | 49 | *color3: #b98675 50 | *color11: #b98675 51 | 52 | *color4: #5e828f 53 | *color12: #5e828f 54 | 55 | *color5: #b48291 56 | *color13: #b48291 57 | 58 | *color6: #7ab1b3 59 | *color14: #7ab1b3 60 | 61 | *color7: #b2bebf 62 | *color15: #b2bebf 63 | -------------------------------------------------------------------------------- /.asoundrc: -------------------------------------------------------------------------------- 1 | # 2 | # .asoundrc 3 | # 4 | 5 | pcm.pulse { 6 | type pulse 7 | } 8 | 9 | ctl.pulse { 10 | type pulse 11 | } 12 | -------------------------------------------------------------------------------- /.conkyrc: -------------------------------------------------------------------------------- 1 | conky.config = { 2 | alignment = 'top_right', 3 | background = true, 4 | default_color = '#172124', 5 | font = 'SF Mono:pixelsize=30:style=bold', 6 | draw_shades = false, 7 | draw_outline = false, 8 | draw_borders = false, 9 | border_inner_margin = 6, 10 | border_outer_margin = 0, 11 | border_width = 0, 12 | gap_x = 100, 13 | gap_y = 20, 14 | out_to_x = true, 15 | own_window = true, 16 | own_window_colour = '#b98675', 17 | own_window_type = 'override', 18 | own_window_title = 'conky', 19 | own_window_class = 'Conky', 20 | update_interval = 10, 21 | double_buffer = true, 22 | use_xft = true, 23 | uppercase = false, 24 | } 25 | 26 | conky.text = [[ 27 | ${time %H:%M} • ${wireless_essid wlp2s0} • ${memeasyfree} • ${battery_percent}% \ 28 | 29 | ]]; 30 | -------------------------------------------------------------------------------- /.fonts.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | /usr/share/fonts 5 | ~/.fonts 6 | 7 | 8 | Open Sans 9 | serif 10 | 11 | 12 | 13 | serif 14 | Open Sans 15 | 16 | 17 | 18 | Open Sans 19 | sans-serif 20 | 21 | 22 | 23 | sans-serif 24 | Open Sans 25 | 26 | 27 | 28 | Open Sans 29 | sans 30 | 31 | 32 | 33 | sans 34 | Open Sans 35 | 36 | 37 | 38 | SF Mono 39 | monospace 40 | 41 | 42 | 43 | monospace 44 | SF Mono 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /.hushlogin: -------------------------------------------------------------------------------- 1 | # 2 | # .hushlogin 3 | # 4 | 5 | # Quiet, please. 6 | -------------------------------------------------------------------------------- /.i3rc: -------------------------------------------------------------------------------- 1 | # 2 | # i3-gaps config 3 | # 4 | 5 | set $mod Mod4 6 | floating_modifier $mod 7 | 8 | font pango:SF Mono 10 9 | 10 | gaps inner 15 11 | gaps top 45 12 | 13 | default_border pixel 0 14 | for_window [instance="popup"] border pixel 6 15 | 16 | set $fg_focus #b2bebf 17 | set $bg_focus #172124 18 | set $fg_unfocus #b2bebf 19 | set $bg_unfocus #172124 20 | 21 | # Border Background Foreground Indicator Child Border 22 | client.focused $bg_focus $bg_focus $fg_focus $bg_focus $bg_focus 23 | client.unfocused $bg_unfocus $bg_unfocus $fg_unfocus $bg_unfocus $bg_unfocus 24 | client.focused_inactive $bg_unfocus $bg_unfocus $fg_unfocus $bg_unfocus $bg_unfocus 25 | client.urgent $bg_focus $bg_focus $fg_focus $bg_focus $bg_focus 26 | 27 | focus_follows_mouse no 28 | 29 | assign [class="(?i)firefox"] 4 30 | assign [class="(?i)chromium"] 3 31 | 32 | for_window [instance="popup"] floating enable 33 | for_window [instance="popup"] move scratchpad 34 | exec --no-startup-id xterm -name popup 35 | 36 | bindsym $mod+Shift+c reload 37 | bindsym $mod+Shift+r restart 38 | bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'Quit i3?' -B 'Yes, exit i3' 'i3-msg exit'" 39 | 40 | bindsym $mod+Return exec --no-startup-id xterm 41 | bindsym $mod+Shift+q kill 42 | bindsym $mod+Shift+x exec i3lock -c "#000000" 43 | 44 | bindsym $mod+Control+c exec --no-startup-id chromium 45 | bindsym $mod+Control+g exec --no-startup-id gimp 46 | 47 | bindsym $mod+p exec popterm 48 | bindsym $mod+Shift+p exec scr 49 | bindsym $mod+d exec dmn 50 | 51 | bindsym $mod+h focus left 52 | bindsym $mod+j focus down 53 | bindsym $mod+k focus up 54 | bindsym $mod+l focus right 55 | 56 | bindsym $mod+Control+h move left 57 | bindsym $mod+Control+j move down 58 | bindsym $mod+Control+k move up 59 | bindsym $mod+Control+l move right 60 | 61 | bindsym $mod+b split h 62 | bindsym $mod+v split v 63 | 64 | bindsym $mod+w layout tabbed 65 | bindsym $mod+e layout toggle split 66 | 67 | bindsym $mod+space floating toggle 68 | 69 | set $ws1 "1" 70 | set $ws2 "2" 71 | set $ws3 "3" 72 | set $ws4 "4" 73 | set $ws5 "5" 74 | set $ws6 "6" 75 | set $ws7 "7" 76 | set $ws8 "8" 77 | set $ws9 "9" 78 | 79 | bindsym $mod+1 workspace $ws1 80 | bindsym $mod+2 workspace $ws2 81 | bindsym $mod+3 workspace $ws3 82 | bindsym $mod+4 workspace $ws4 83 | bindsym $mod+5 workspace $ws5 84 | bindsym $mod+6 workspace $ws6 85 | bindsym $mod+7 workspace $ws7 86 | bindsym $mod+8 workspace $ws8 87 | bindsym $mod+9 workspace $ws9 88 | 89 | bindsym $mod+Shift+1 move container to workspace $ws1 90 | bindsym $mod+Shift+2 move container to workspace $ws2 91 | bindsym $mod+Shift+3 move container to workspace $ws3 92 | bindsym $mod+Shift+4 move container to workspace $ws4 93 | bindsym $mod+Shift+5 move container to workspace $ws5 94 | bindsym $mod+Shift+6 move container to workspace $ws6 95 | bindsym $mod+Shift+7 move container to workspace $ws7 96 | bindsym $mod+Shift+8 move container to workspace $ws8 97 | bindsym $mod+Shift+9 move container to workspace $ws9 98 | 99 | bindsym $mod+Tab workspace next 100 | bindsym $mod+Shift+Tab workspace prev 101 | 102 | bindsym $mod+Shift+h resize shrink width 1 px or 1 ppt 103 | bindsym $mod+Shift+j resize shrink height 1 px or 1 ppt 104 | bindsym $mod+Shift+k resize grow height 1 px or 1 ppt 105 | bindsym $mod+Shift+l resize grow width 1 px or 1 ppt 106 | 107 | bindsym XF86MonBrightnessDown exec xbacklight -dec 5 108 | bindsym XF86MonBrightnessUp exec xbacklight -inc 5 109 | 110 | bindsym XF86AudioMute exec pamixer -t 111 | bindsym XF86AudioLowerVolume exec pamixer -d 5 112 | bindsym XF86AudioRaiseVolume exec pamixer -i 5 113 | -------------------------------------------------------------------------------- /.inputrc: -------------------------------------------------------------------------------- 1 | # 2 | # .inputrc 3 | # 4 | 5 | set bell-style none 6 | -------------------------------------------------------------------------------- /.mpdrc: -------------------------------------------------------------------------------- 1 | db_file "~/.mpd/database" 2 | log_file "syslog" 3 | music_directory "~/media/music" 4 | auto_update "yes" 5 | playlist_directory "~/.mpd/playlists" 6 | pid_file "~/.mpd/pid" 7 | state_file "~/.mpd/state" 8 | sticker_file "~/.mpd/sticker.sql" 9 | 10 | audio_output { 11 | type "pulse" 12 | name "pulse audio" 13 | } 14 | 15 | audio_output { 16 | type "fifo" 17 | name "my_fifo" 18 | path "/tmp/mpd.fifo" 19 | format "44100:16:2" 20 | } 21 | 22 | bind_to_address "localhost" 23 | port "6600" 24 | -------------------------------------------------------------------------------- /.ncmpcpprc: -------------------------------------------------------------------------------- 1 | ncmpcpp_directory = "~/.ncmpcpp" 2 | 3 | mpd_host = "localhost" 4 | mpd_port = "6600" 5 | mpd_connection_timeout = "5" 6 | mpd_music_dir = "~/media/music" 7 | mpd_crossfade_time = "5" 8 | 9 | visualizer_data_source = "/tmp/mpd.fifo" 10 | visualizer_output_name = "Visualizer" 11 | visualizer_in_stereo = "yes" 12 | visualizer_type = "ellipse" 13 | visualizer_look = "●●" 14 | visualizer_color = "white, white, black, white, red" 15 | 16 | header_visibility = "no" 17 | header_window_color = "default" 18 | playlist_shorten_total_times = "yes" 19 | volume_color = "default" 20 | state_line_color = "black" 21 | 22 | playlist_display_mode = "classic" 23 | now_playing_prefix = "$b$5" 24 | now_playing_suffix = "$/b$9" 25 | 26 | progressbar_look = "❙❙❙" 27 | progressbar_color = "black" 28 | progressbar_elapsed_color = "white" 29 | statusbar_visibility = "no" 30 | statusbar_color = "default" 31 | 32 | song_library_format = "{%f}" 33 | song_list_format = "{%f}" 34 | song_status_format = "{%f}" 35 | 36 | media_library_primary_tag = artist 37 | empty_tag_color = "black" 38 | 39 | colors_enabled = "yes" 40 | main_window_color = "default" 41 | centered_cursor = "yes" 42 | enable_window_title = "yes" 43 | external_editor = "vim" 44 | follow_now_playing_lyrics = yes 45 | -------------------------------------------------------------------------------- /.picomrc: -------------------------------------------------------------------------------- 1 | corner-radius = 8.0; 2 | rounded-corners-exclude = [ "class_g = 'dmenu'" ]; 3 | shadow = false; 4 | popup_menu = { shadow = false; }; 5 | dropdown_menu = { shadow = false; }; 6 | utility = { shadow = false; }; 7 | blur-background = false; 8 | fading = false; 9 | vsync = true; 10 | -------------------------------------------------------------------------------- /.profile: -------------------------------------------------------------------------------- 1 | # 2 | # .profile 3 | # 4 | 5 | export GOPATH=~/go 6 | export GOBIN=~/bin 7 | export PATH=~/bin:~/.local/bin:~/.yarn/bin:~/.npm-global/bin:~/.dotnet/tools:$PATH 8 | export ENV=~/.shrc 9 | -------------------------------------------------------------------------------- /.shrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # .shellrc 5 | # 6 | 7 | export EDITOR=vim 8 | export VISUAL=vim 9 | export TERMINAL=xterm 10 | export BROWSER=chromium 11 | export LC_ALL=en_US.UTF-8 12 | export FONTCONFIG_FILE=~/.fonts.conf 13 | export DOTNET_CLI_TELEMETRY_OPTOUT=1 14 | export TODO_DIR=~/github/todo 15 | export BKM_DIR=~/.bookmarks 16 | export WPP_LIB=~/.wallpapers 17 | export SHEE_IGNORE_DIRS=".git:node_modules" 18 | 19 | DRT_PATH=~/dotfiles:~/github/shee:~/github/bkm 20 | DRT_PATH=$DRT_PATH:~/github/bin:~/github/rpg 21 | DRT_PATH=$DRT_PATH:~/.vim/plugged/sc.vim:~/.vim/plugged/sl.vim 22 | export DRT_PATH 23 | 24 | # shellcheck disable=1090 25 | [ -f ~/.aliases ] && . ~/.aliases 26 | 27 | alias la='ls -AF1' 28 | alias al='la | less -R' 29 | alias ll='ls -lAFGh | less -R' 30 | alias las='stat -c "%A %a %n" *' 31 | alias gc='git commit' 32 | alias gcm='git commit -m' 33 | alias gp='git push' 34 | alias gs='git status' 35 | alias gss='git status -s' 36 | alias glog='git log --graph' 37 | alias glogc='git shortlog -s -n -e --all' 38 | alias gh='cd ~/github/' 39 | alias dot='cd ~/dotfiles/' 40 | alias doc='cd ~/documents/' 41 | alias pro='cd ~/projects/' 42 | alias pks='cd ~/packages/' 43 | 44 | export PS1='$ ' 45 | -------------------------------------------------------------------------------- /.vimrc: -------------------------------------------------------------------------------- 1 | if empty(glob('~/.vim/autoload/plug.vim')) 2 | silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs 3 | \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 4 | autocmd VimEnter * PlugInstall --sync | source ~/.vimrc 5 | endif 6 | 7 | call plug#begin('~/.vim/plugged') 8 | 9 | Plug 'dense-analysis/ale' 10 | Plug 'scrooloose/nerdtree' 11 | Plug 'leafgarland/typescript-vim' 12 | Plug 'maxmellon/vim-jsx-pretty' 13 | Plug 'fehawen/sc.vim' 14 | Plug 'fehawen/sl.vim' 15 | 16 | call plug#end() 17 | 18 | syntax on 19 | filetype on 20 | filetype plugin on 21 | filetype indent on 22 | 23 | set t_md= 24 | set t_Co=16 25 | 26 | scriptencoding utf-8 27 | set encoding=utf-8 28 | 29 | set title 30 | set noshowmode 31 | set autoread 32 | set ruler 33 | set showmatch 34 | set mat=2 35 | set magic 36 | set signcolumn=no 37 | set hlsearch 38 | set tabstop=4 39 | set softtabstop=4 40 | set expandtab 41 | set shiftwidth=4 42 | set autoindent 43 | set nonumber 44 | set lazyredraw 45 | set cursorline 46 | set nocursorcolumn 47 | set ffs=unix,dos,mac 48 | set wrap 49 | set pumheight=10 50 | set nobackup 51 | set nowritebackup 52 | set noswapfile 53 | set maxmempattern=20000 54 | set completeopt-=preview 55 | set omnifunc=syntaxcomplete#Complete 56 | 57 | set path+=** 58 | set wildmenu 59 | set wildignore+=**/node_modules/** 60 | set wildignore+=**/.git/** 61 | 62 | set list 63 | set listchars= 64 | set listchars+=tab:│\ , 65 | set listchars+=trail:•, 66 | set fillchars+=vert:\ , 67 | 68 | let g:ale_sign_info = "•" 69 | let g:ale_sign_error = "•" 70 | let g:ale_sign_warning = "•" 71 | let g:ale_sign_style_error = "•" 72 | let g:ale_sign_style_warning = "•" 73 | let g:ale_completion_enabled = 1 74 | 75 | let g:NERDTreeMinimalUI = 1 76 | let g:NERDTreeShowHidden = 1 77 | let g:NERDTreeShowLineNumbers = 0 78 | let g:NERDTreeCascadeSingleChildDir = 0 79 | let g:NERDTreeNodeDelimiter = "\u00a0" 80 | let g:NERDTreeDirArrowExpandable = "•" 81 | let g:NERDTreeDirArrowCollapsible = "•" 82 | let g:NERDTreeWinSize = 31 83 | 84 | let g:sc_background_light = 1 85 | let g:sc_highlight_comments_only = 0 86 | let g:sl_hide_syntax_item = 1 87 | let g:sl_hide_file_type = 1 88 | 89 | colorscheme sc 90 | 91 | au VimResized * wincmd= 92 | au BufWritePre * %s/\s\+$//e 93 | au StdinReadPre * let s:std_in=1 94 | au VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif 95 | au WinEnter,BufEnter * call matchadd('ColorColumn', '\%81v', 100) 96 | au WinLeave,BufLeave * call clearmatches() 97 | au FileType c,cpp setlocal noexpandtab softtabstop=4 shiftwidth=4 98 | au FileType python setlocal textwidth=79 99 | 100 | augroup SyntaxSettings 101 | autocmd! 102 | autocmd BufNewFile,BufRead *.tsx set filetype=typescript 103 | augroup END 104 | 105 | inoremap pumvisible() ? "\" : "\" 106 | map :NERDTreeToggle 107 | map :find 108 | map :vert ter 109 | nmap (ale_previous_wrap) 110 | nmap (ale_next_wrap) 111 | nmap :ALEHover 112 | nmap :ALEGoToDefinition 113 | map :noh 114 | tnoremap 115 | map § 116 | map! § 117 | nnoremap py :!python3 % 118 | -------------------------------------------------------------------------------- /.xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # .xinitrc 5 | # 6 | 7 | xset b off 8 | xset m 1/1 9 | xset +fp ~/.fonts 10 | xset r rate 200 60 11 | xrdb ~/.Xresources 12 | xrandr --dpi 192 13 | xsetroot -solid "#172124" 14 | hsetroot -solid "#172124" 15 | setxkbmap -layout se 16 | 17 | conky -q -d -c ~/.conkyrc & 18 | picom --config="$HOME/.picomrc" -b & 19 | 20 | exec i3 -c ~/.i3rc 21 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .SILENT: 2 | 3 | all: 4 | @echo Run \'make dotfiles\' to set up dotfiles. 5 | @echo Run \'make config\' to set up configurations. 6 | @echo Run \'make packages\' to install packages. 7 | 8 | dotfiles: 9 | ./dotfiles.sh 10 | 11 | config: 12 | ./config.sh 13 | 14 | packages: 15 | ./packages.sh 16 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | "Oh, beauty is a beguiling call to death and I'm addicted to the sweet pitch of 2 | its siren. That that starts sweet ends bitter, and that which starts bitter ends 3 | sweet." 4 | -------------------------------------------------------------------------------- /config.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | configure_touchpad() { 4 | read -r -p "Configure touchpad? [y/N] " answer 5 | if [[ "$answer" != y ]] && [[ "$answer" != Y ]]; then 6 | printf 'Skipping touchpad configuration...\n' 7 | else 8 | printf 'Configuring touchpad...\n' 9 | printf 'Writing content to "/usr/share/X11/xorg.conf.d/40-libinput.conf"...' 10 | 11 | sudo tee -a /usr/share/X11/xorg.conf.d/40-libinput.conf >> /dev/null << EOT 12 | 13 | Section "InputClass" 14 | Identifier "libinput touchpad catchall" 15 | MatchIsTouchpad "on" 16 | MatchDevicePath "/dev/input/event*" 17 | Option "Tapping" "true" 18 | Option "TappingDrag" "false" 19 | Option "NaturalScrolling" "true" 20 | Option "AccelProfile" "linear" 21 | Option "AccelSpeed" "0.25" 22 | Option "DisableWhileTyping" "true" 23 | Driver "libinput" 24 | EndSection 25 | 26 | EOT 27 | 28 | printf "Done.\n" 29 | fi 30 | } 31 | 32 | enable_docker() { 33 | read -r -p "Start and enable Docker? [y/N] " answer 34 | if [[ "$answer" != y ]] && [[ "$answer" != Y ]]; then 35 | printf "\nSkipping Docker systemctl setup...\n" 36 | else 37 | printf "\nStarting Docker through systemctl..." 38 | systemctl start docker 39 | 40 | printf "\nStarting Docker through systemctl..." 41 | systemctl enable docker 42 | 43 | printf "DONE.\n" 44 | fi 45 | } 46 | 47 | configure_docker() { 48 | read -r -p "Manage Docker as a non-root user? [y/N] " answer 49 | if [[ "$answer" != y ]] && [[ "$answer" != Y ]]; then 50 | printf 'Skipping Docker non-root configuration...\n' 51 | else 52 | printf "\nAdding 'docker' group..." 53 | sudo groupadd docker 54 | 55 | printf '\nAdding user %s to docker group...' "$USER" 56 | sudo usermod -aG docker "$USER" 57 | 58 | printf "DONE.\n" 59 | fi 60 | } 61 | 62 | configure_npm() { 63 | read -r -p "Manage NPM as a non-root user? [y/N] " answer 64 | if [[ "$answer" != y ]] && [[ "$answer" != Y ]]; then 65 | printf "\nSkipping NPM non-root configuration...\n" 66 | else 67 | local npm_dir="$HOME/.npm-global" 68 | 69 | if [[ ! -d "$npm_dir" ]]; then 70 | printf '\nCreating dir %s...\n' "$npm_dir" 71 | mkdir -p "$npm_dir" 72 | else 73 | printf '\nDirectory %s exists...\n' "$npm_dir" 74 | fi 75 | 76 | printf '\nAdding to %s npm config...' "$npm_dir" 77 | npm config set prefix "$HOME/.npm-global" 78 | printf "DONE.\n" 79 | fi 80 | } 81 | 82 | configure_touchpad 83 | enable_docker 84 | configure_docker 85 | configure_npm 86 | 87 | printf "Configuration completed.\n" 88 | -------------------------------------------------------------------------------- /dotfiles.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # dotfiles.sh 5 | # 6 | 7 | sym() { 8 | for file in .*; do 9 | case $file in 10 | .) ;; 11 | ..) ;; 12 | *) [ -f "$file" ] && ln -sfv "$PWD/$file" "$HOME/$file" ;; 13 | esac 14 | done 15 | 16 | [ -d "$HOME/.mpd/playlists" ] || mkdir -p "$HOME/.mpd/playlists" 17 | 18 | [ -d "$HOME/.ncmpcpp" ] || mkdir -p "$HOME/.ncmpcpp" 19 | 20 | printf '\nDone.\n' 21 | } 22 | 23 | ask() { 24 | printf '%s\n' "Symlink dotfiles?: Press Enter to continue or Ctrl+C to abort." 25 | read -r _ 26 | } 27 | 28 | main() { 29 | ask 30 | sym 31 | } 32 | 33 | main 34 | -------------------------------------------------------------------------------- /packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | package_list() { 4 | printf '%s ' \ 5 | "xorg-server" \ 6 | "xorg-xinit" \ 7 | "xorg-xrandr" \ 8 | "xorg-xsetroot" \ 9 | "xorg-xbacklight" \ 10 | "xf86-video-intel" \ 11 | "xf86-input-libinput" \ 12 | "gnu-free-fonts" \ 13 | "mesa" \ 14 | "man-db" \ 15 | "man-pages" \ 16 | "texinfo" \ 17 | "imagemagick" \ 18 | "alsa-utils" \ 19 | "alsa-lib" \ 20 | "pulseaudio" \ 21 | "pamixer" \ 22 | "dmenu" \ 23 | "w3m" \ 24 | "firefox" \ 25 | "chromium" \ 26 | "zip" \ 27 | "unzip" \ 28 | "p7zip" \ 29 | "npm" \ 30 | "docker" \ 31 | "docker-compose" \ 32 | "openssh" \ 33 | "zathura" \ 34 | "poppler" \ 35 | "zathura-pdf-poppler" \ 36 | "python-pip" \ 37 | "python-pillow" \ 38 | "jq" \ 39 | "noto-fonts-emoji" \ 40 | "gnu-netcat" \ 41 | "tree" 42 | } 43 | 44 | install_packages() { 45 | printf 'Installing packages for Arch Linux...\n' 46 | 47 | sudo pacman -Syu "$(package_list)" 48 | 49 | printf "Done.\n" 50 | } 51 | 52 | install_packages 53 | --------------------------------------------------------------------------------