| 1 | # Overview # |
| 2 | |
| 3 | These are my notes for installation of Debian Linux on my personal workstation. They are intended as a high level checklist rather than a step by step installation guide. I tend to start from a minimal, text-only Debian install. |
| 4 | |
| 5 | # Installation # |
| 6 | |
| 7 | ## Hardware ## |
| 8 | |
| 9 | ### NVMe SSD ### |
| 10 | |
| 11 | As of 20160903, the version of GRUB included with the Debian installer contains a bug preventing it from working with NVMe drives. Also, the 3.16 kernel included with Debian 8 predates some important NVMe improvements. Perform an expert installation, enable backports and, before installing a bootloader, drop to a shell and chroot to the install. |
| 12 | |
| 13 | cd /target |
| 14 | mount -t proc /proc proc/ |
| 15 | mount --rbind /sys sys/ |
| 16 | mount --rbind /dev dev/ |
| 17 | mount --rbind /run run/ |
| 18 | chroot . /bin/bash |
| 19 | |
| 20 | Now install the kernel and grub from backports. |
| 21 | |
| 22 | apt-get update |
| 23 | apt-get -t jessie-backports install linux-image-amd64 |
| 24 | apt-get -t jessie-backports install grub-pc |
| 25 | update-grub |
| 26 | grub-install |
| 27 | |
| 28 | The last two steps may not be necessary. GRUB has automatically detected installed OSes and installed itself with most of my configurations. If EFI ever offers a compelling benefit, install the package grub-efi instead of grub-pc. |
| 29 | |
| 30 | ### SSD Hard Drive ### |
| 31 | |
| 32 | Use a TRIM enabled filesystem such as ext4. |
| 33 | |
| 34 | Locate partitions so they match the SSD block size. To check under Windows, execute `msinfo32` and check under Components -> Storage -> Disks, looking for "Partition Starting Offset". If it is divisible by 4096, all is well. If not, use the GParted Live CD and follow [these instructions](http://lifehacker.com/5837769/make-sure-your-partitions-are-correctly-aligned-for-optimal-solid-state-drive-performance lifehacker). |
| 35 | |
| 36 | Set AHCI mode in the BIOS |
| 37 | |
| 38 | Install package `hdparm` and check for TRIM support with |
| 39 | |
| 40 | hdparm -I /dev/<your device> |
| 41 | |
| 42 | under "Data Set Management TRIM supported". |
| 43 | |
| 44 | Create daily TRIM cronjob by creating the following file in `/etc/cron.daily/fstrim` (remember to make it executable) |
| 45 | |
| 46 | #!/bin/sh |
| 47 | # Perform manual filesystem TRIM |
| 48 | # |
| 49 | LOG=/var/log/trim.log |
| 50 | echo "*** $(date -R) ***" >> $LOG |
| 51 | fstrim -v / >> $LOG |
| 52 | |
| 53 | To reduce disk writes, mount the SSD filesystems with the relatime option in /etc/fstab to reduce file and directory access time updates. |
| 54 | |
| 55 | ### USB Automounting ### |
| 56 | |
| 57 | Install package `usbmount` and add `ntfs` to valid partition types in `/etc/usbmount/usbmount.conf` so the line reads |
| 58 | |
| 59 | FILESYSTEMS="ntfs vfat ext2 ext3 ext4 hfsplus" |
| 60 | |
| 61 | ### Graphics Drivers ### |
| 62 | |
| 63 | Add the `contrib` and `non-free` repositories to `/etc/apt/sources.list` and then install the `linux-headers-amd64`, `fglrx-driver` and `fglrx-control` packages. If you installed the backports kernel earlier for NVMe support, be sure to use backports for the video drivers so they compile the kernel module correctly. Ignore this and you will be chasing very misleading error messages again. |
| 64 | |
| 65 | As root, execute `aticonfig --initial` to generate an initial Xorg config file. |
| 66 | |
| 67 | For my dual head configuration (40" 3840x2160 in landscape and 30" 2560x1600 in portrait) create new file `~/.xinitrc` with the following contents: |
| 68 | |
| 69 | #!/bin/sh |
| 70 | xrandr --output DFP9 --mode 3840x2160 --pos 0x0 --output DFP10 --rotate left --mode 2560x1600 --pos 3840x-150 |
| 71 | . /etc/X11/Xsession |
| 72 | |
| 73 | Add a `Virtual` line to `/etc/X11/xorg.conf` in the `Display` section defining a large enough virtual desktop. |
| 74 | |
| 75 | Section "Screen" |
| 76 | Identifier "aticonfig-Screen[0]-0" |
| 77 | Device "aticonfig-Device[0]-0" |
| 78 | Monitor "aticonfig-Monitor[0]-0" |
| 79 | DefaultDepth 24 |
| 80 | SubSection "Display" |
| 81 | Viewport 0 0 |
| 82 | Depth 24 |
| 83 | Virtual 5440 2560 |
| 84 | EndSubSection |
| 85 | EndSection |
| 86 | |
| 87 | Note: The open source radeon driver is getting better. If you go this route in the future, remember that apt does not remove the radeon blacklist installed by fglrx-driver in /etc/modprobe.d and it must be done manually. |
| 88 | |
| 89 | ### Audio ### |
| 90 | |
| 91 | Install relevant packages and then use `alsamixer` to set audio levels. Later, after fluxbox is installed, can add key bindings for volume control. |
| 92 | |
| 93 | apt-get install libasound2 libasound2-doc alsa-base alsa-utils alsa-oss alsamixergui |
| 94 | |
| 95 | ### Printer ### |
| 96 | |
| 97 | Install packages cups and cups-client |
| 98 | |
| 99 | /etc/init.d/cups start |
| 100 | usermod -a -G lpadmin ataylor |
| 101 | |
| 102 | In a browser, visit [http://localhost:631](http://localhost:631) and add printer via this interface (autodetects the networked HP LJ4). Go to "Printers" tab, then click printer name. From "Administration" dropdown, make this printer the default for this server. From "Maintenance" dropdown, print a test page. |
| 103 | |
| 104 | ### Scanner ### |
| 105 | |
| 106 | Install relevant packages: |
| 107 | |
| 108 | apt-get install xsane sane sane-utils xsltproc libtiff-tools |
| 109 | |
| 110 | Download Epson ImageScan software and install |
| 111 | |
| 112 | dpkg -i iscan-data_1.22.0-1_all.deb |
| 113 | dpkg -i iscan_2.29.1-5~usb0.1.ltdl7_amd64.deb |
| 114 | dpkg -i iscan-plugin-gt-x770_2.1.2-1_amd64.deb |
| 115 | |
| 116 | ## Basic Services ## |
| 117 | |
| 118 | ### Install basic packages ### |
| 119 | |
| 120 | apt-get install openssh-server bzip2 zip |
| 121 | |
| 122 | ### Email Forwarding ### |
| 123 | |
| 124 | The minimal OS install includes `exim4`. Execute `dpkg-reconfigure exim4-config` and select "mail sent by smarthost; no local mail" unless you intend to host a mail server on this machine. |
| 125 | |
| 126 | Create file `~/.forward` that contains destination email address. |
| 127 | |
| 128 | Check `/etc/aliases` to make sure system/daemon users are routed the way you want. |
| 129 | |
| 130 | ### NTP Configuration ### |
| 131 | |
| 132 | Install package `ntp` and check servers with `ntpq -p`. Default configuration should cause daemon to start at boot and sync automatically. |
| 133 | |
| 134 | ### SMB Client ### |
| 135 | |
| 136 | Install `cifs-utils`. |
| 137 | |
| 138 | Create `/etc/smb_credentials` as root with permissions 0600. Do not include spaces around the equal sign. |
| 139 | |
| 140 | username=windows_username |
| 141 | password=windows_password |
| 142 | |
| 143 | Create a new mount point in the filesystem and add it to `/etc/fstab`. |
| 144 | |
| 145 | //192.168.1.5/zfs_stripe_0 /mnt/talisker_stripe_0 cifs credentials=/etc/smb_credentials,file_mode=0664, \ |
| 146 | dir_mode=0775,iocharset=utf8,sec=ntlm,uid=1000,gid=1000,noserverino 0 0 |
| 147 | |
| 148 | ## GUI ## |
| 149 | ### X, Fluxbox ### |
| 150 | |
| 151 | Install the following packages: |
| 152 | |
| 153 | apt-get install xorg fluxbox |
| 154 | |
| 155 | Overwrite existing ~/.fluxbox/keys file with the following key shortcuts: |
| 156 | |
| 157 | # click on the desktop to get menus |
| 158 | OnDesktop Mouse1 :HideMenus |
| 159 | OnDesktop Mouse2 :WorkspaceMenu |
| 160 | OnDesktop Mouse3 :RootMenu |
| 161 | |
| 162 | # scroll on the desktop to change workspaces |
| 163 | OnDesktop Mouse4 :PrevWorkspace |
| 164 | OnDesktop Mouse5 :NextWorkspace |
| 165 | |
| 166 | # alt + left/right click to move/resize a window |
| 167 | OnWindow Mod1 Mouse1 :MacroCmd {Raise} {Focus} {StartMoving} |
| 168 | OnWindowBorder Move1 :StartMoving |
| 169 | |
| 170 | OnWindow Mod1 Mouse3 :MacroCmd {Raise} {Focus} {StartResizing NearestCorner} |
| 171 | OnLeftGrip Move1 :StartResizing bottomleft |
| 172 | OnRightGrip Move1 :StartResizing bottomright |
| 173 | |
| 174 | # control-click a window's titlebar and drag to attach windows |
| 175 | OnTitlebar Control Mouse1 :StartTabbing |
| 176 | |
| 177 | # double click on the titlebar to shade |
| 178 | OnTitlebar Double Mouse1 :Shade |
| 179 | |
| 180 | # left click on the titlebar to move the window |
| 181 | OnTitlebar Mouse1 :MacroCmd {Raise} {Focus} {ActivateTab} |
| 182 | OnTitlebar Move1 :StartMoving |
| 183 | |
| 184 | # middle click on the titlebar to lower |
| 185 | OnTitlebar Mouse2 :Lower |
| 186 | |
| 187 | # right click on the titlebar for a menu of options |
| 188 | OnTitlebar Mouse3 :WindowMenu |
| 189 | |
| 190 | # open a terminal |
| 191 | Mod1 F1 :Exec xterm |
| 192 | # open a dialog to run programs |
| 193 | Mod1 F2 :Exec fbrun |
| 194 | # Open file manager |
| 195 | Mod1 F3 :Exec spacefm |
| 196 | # current window commands |
| 197 | Mod1 F4 :Close |
| 198 | |
| 199 | # Take a screenshot |
| 200 | 107 :Exec /home/ataylor/bin/take_screenshot.sh |
| 201 | |
| 202 | # Start screensaver, lock screen |
| 203 | 127 :Exec xscreensaver-command -lock |
| 204 | |
| 205 | # Window sizing commands |
| 206 | Control F1 :Minimize |
| 207 | Control F2 :Shade |
| 208 | Control F3 :Maximize |
| 209 | Control F4 :Fullscreen |
| 210 | |
| 211 | Control F5 :MacroCmd {ResizeTo 1600 1250} {Moveto 0 0 UpperLeft} |
| 212 | Control F6 :MacroCmd {ResizeTo 1600 1250} {Moveto 0 0 LowerLeft} |
| 213 | |
| 214 | Control F7 :MacroCmd {ResizeTo 1905 2160} {Moveto 0 0 UpperLeft} |
| 215 | Control F8 :MacroCmd {ResizeTo 1905 2160} {Moveto 0 0 UpperRight} |
| 216 | |
| 217 | Control F9 :MacroCmd {ResizeTo 1920 1080} {Moveto 0 0 UpperLeft} |
| 218 | Control F10 :MacroCmd {ResizeTo 1920 1080} {Moveto 0 0 UpperRight} |
| 219 | Control F11 :MacroCmd {ResizeTo 1920 1080} {Moveto 0 0 LowerLeft} |
| 220 | Control F12 :MacroCmd {ResizeTo 1920 1080} {Moveto 0 0 LowerRight} |
| 221 | |
| 222 | Use "meta" style in fluxbox |
| 223 | |
| 224 | Install `numlockx` package and add `numlockx &` to `~/.fluxbox/startup`. |
| 225 | |
| 226 | Ensure `~/.xinitrc` ends in `. /etc/X11/Xsession` if the file doesn't already exist. |
| 227 | |
| 228 | Add any apps that I want to autostart in `~/.fluxbox/startup` (`pidgin`, `deluge-gtk`, etc) |
| 229 | |
| 230 | Set "focus on mouse" and NOT "raise on focus" in the right-click menu. |
| 231 | |
| 232 | Add the following to `~/.fluxbox/startup` if not already present. |
| 233 | |
| 234 | # Set numlock |
| 235 | numlockx & |
| 236 | # Chat software |
| 237 | pidgin & |
| 238 | # Get colors for xterms |
| 239 | xrdb ~/.Xresources & |
| 240 | # Wallpaper rotation |
| 241 | # /home/ataylor/bin/wallpaper_rotation.sh & |
| 242 | # Xscreensaver |
| 243 | xscreensaver -nosplash & |
| 244 | # Change your keymap: |
| 245 | xmodmap "/home/ataylor/.Xmodmap" |
| 246 | |
| 247 | ### Control/Capslock Swap ### |
| 248 | |
| 249 | Create or edit `~/.Xmodmap` to contain: |
| 250 | |
| 251 | ! |
| 252 | ! Swap Caps_Lock and Control_L |
| 253 | ! |
| 254 | remove Lock = Caps_Lock |
| 255 | remove Control = Control_L |
| 256 | keysym Control_L = Caps_Lock |
| 257 | keysym Caps_Lock = Control_L |
| 258 | add Lock = Caps_Lock |
| 259 | add Control = Control_L |
| 260 | |
| 261 | ### Screensaver ### |
| 262 | |
| 263 | Install the following packages: |
| 264 | |
| 265 | xscreensaver xscreensaver-gl xscreensaver-gl-extra xscreensaver-screensaver-bsod xscreensaver-screensaver-webcollage |
| 266 | |
| 267 | Execute `xscreensaver-demo` to configure the screensaver. |
| 268 | |
| 269 | Add `xscreensaver -nosplash &` to `~/.fluxbox/startup`. |
| 270 | |
| 271 | ### Wallpaper Rotation ### |
| 272 | |
| 273 | |
| 274 | Install `nitrogen` package. Execute `nitrogen` once and set wallpaper manually to create initial config files. |
| 275 | |
| 276 | Create file `~/bin/wallpaper_rotation.sh` as shown below and add to `~/.fluxbox/startup` as `/home/ataylor/bin/wallpaper_rotation.sh &`. |
| 277 | |
| 278 | #!/usr/bin/python |
| 279 | # This script creates a wallpaper slideshow. |
| 280 | |
| 281 | ##### Configuration |
| 282 | |
| 283 | # List of image source directories |
| 284 | # Each sublist is of the form: |
| 285 | # [monitor ID, absolute path to directory containing images for this monitor] |
| 286 | source_dir = [ |
| 287 | [0,"/mnt/talisker_mirror_0/wallpaper/ratio_16_9"], |
| 288 | [1,"/mnt/talisker_mirror_0/wallpaper/ratio_10_16"] |
| 289 | ] |
| 290 | |
| 291 | # This list will be populated during runtime. |
| 292 | # Each sublist is of the form: |
| 293 | # [monitor ID, absolute path to image file to display on this monitor] |
| 294 | current_wallpaper = [ |
| 295 | [0,""], |
| 296 | [1,""] |
| 297 | ] |
| 298 | |
| 299 | # Path to nitrogen configuration file |
| 300 | nitrogen_config = "/home/ataylor/.config/nitrogen/bg-saved.cfg" |
| 301 | |
| 302 | ##### Dependencies |
| 303 | |
| 304 | from subprocess import call |
| 305 | from os import listdir |
| 306 | from os.path import isfile, join |
| 307 | from random import choice |
| 308 | from time import sleep |
| 309 | |
| 310 | ##### Source Code |
| 311 | |
| 312 | def write_config(): |
| 313 | config_file = open(nitrogen_config, 'w') |
| 314 | for monitor in current_wallpaper: |
| 315 | # Indenting the following triple-quoted text inserts leading whitespace in the |
| 316 | # nitrogen config file. However, nitrogen strips leading whitespace before |
| 317 | # processing its config file and the extra whitespace makes this Python script |
| 318 | # more readable. |
| 319 | template = """[xin_{monitor_n}] |
| 320 | file={wallpaper_file} |
| 321 | mode=0 |
| 322 | bgcolor=#000000 |
| 323 | """ |
| 324 | context = { |
| 325 | "monitor_n":monitor[0], |
| 326 | "wallpaper_file":monitor[1] |
| 327 | } |
| 328 | config_file.write(template.format(**context)) |
| 329 | config_file.close() |
| 330 | |
| 331 | def refresh_wallpaper(): |
| 332 | write_config() |
| 333 | call(["/usr/bin/nitrogen", "--restore"]) |
| 334 | |
| 335 | def get_rand_from_dir(): |
| 336 | file_choices = [x for x in listdir(source_dir[current_monitor][1]) if isfile(join(source_dir[current_monitor][1], x))] |
| 337 | filename = choice(file_choices) |
| 338 | filename = join(source_dir[current_monitor][1], filename) |
| 339 | current_wallpaper[current_monitor][1] = filename |
| 340 | |
| 341 | # Put something up on all monitors |
| 342 | for i in range(len(source_dir)): |
| 343 | current_monitor = i |
| 344 | get_rand_from_dir() |
| 345 | refresh_wallpaper() |
| 346 | |
| 347 | # Eternal slideshow loop |
| 348 | while 1: |
| 349 | current_monitor = (current_monitor + 1) % len(source_dir) |
| 350 | get_rand_from_dir() |
| 351 | refresh_wallpaper() |
| 352 | sleep(10) |
| 353 | |
| 354 | ### Screenshots ### |
| 355 | |
| 356 | Create screenshot directory `~/screenshots`. |
| 357 | |
| 358 | Install packages `x11-apps` (for xwd) and `netpbm` (for xwdtopnm and pnmtopng) |
| 359 | |
| 360 | Write the following to `~/bin/take_screenshot.sh` |
| 361 | |
| 362 | #!/bin/bash |
| 363 | |
| 364 | SAVEDIR="$HOME/screenshots" |
| 365 | DATE=`date +%Y%m%d-%T` |
| 366 | |
| 367 | if [! -d ${SAVEDIR} ] |
| 368 | then |
| 369 | mkdir -p {$SAVEDIR} |
| 370 | fi |
| 371 | |
| 372 | xwd | xwdtopnm | pnmtopng > "${SAVEDIR}"/"${DATE}".png |
| 373 | |
| 374 | Update `~/.fluxbox/keys` with line `107 :Exec /home/ataylor/documents/screenshots/take_screenshot.sh` or use `xev` to select a different key. |
| 375 | |
| 376 | ### xterm ### |
| 377 | |
| 378 | Set xterm fonts and colors by creating `~/.Xresources` with contents shown below. Add the line `xrdb ~/.Xresources &` to `~/.fluxbox/startup` and restart X. |
| 379 | |
| 380 | xterm*faceName: Liberaqtion Mono:size=12:antialias=true |
| 381 | xterm*font: 7x13 |
| 382 | |
| 383 | ! Solarized color scheme for the X Window System |
| 384 | ! |
| 385 | ! http://ethanschoonover.com/solarized |
| 386 | ! Common |
| 387 | #define S_yellow #b58900 |
| 388 | #define S_orange #cb4b16 |
| 389 | #define S_red #dc322f |
| 390 | #define S_magenta #d33682 |
| 391 | #define S_violet #6c71c4 |
| 392 | #define S_blue #268bd2 |
| 393 | #define S_cyan #2aa198 |
| 394 | #define S_green #859900 |
| 395 | ! Dark |
| 396 | !#define S_base03 #002b36 |
| 397 | !#define S_base02 #073642 |
| 398 | !#define S_base01 #586e75 |
| 399 | !#define S_base00 #657b83 |
| 400 | !#define S_base0 #839496 |
| 401 | !#define S_base1 #93a1a1 |
| 402 | !#define S_base2 #eee8d5 |
| 403 | !#define S_base3 #fdf6e3 |
| 404 | ! Light |
| 405 | #define S_base03 #fdf6e3 |
| 406 | #define S_base02 #eee8d5 |
| 407 | #define S_base01 #93a1a1 |
| 408 | #define S_base00 #839496 |
| 409 | #define S_base0 #657b83 |
| 410 | #define S_base1 #586e75 |
| 411 | #define S_base2 #073642 |
| 412 | #define S_base3 #002b36 |
| 413 | ! To only apply colors to your terminal, for example, prefix |
| 414 | ! the color assignment statement with its name. Example: |
| 415 | ! |
| 416 | ! URxvt*background: S_base03 |
| 417 | *background: S_base03 |
| 418 | *foreground: S_base0 |
| 419 | *fading: 40 |
| 420 | *fadeColor: S_base03 |
| 421 | *cursorColor: S_base1 |
| 422 | *pointerColorBackground: S_base01 |
| 423 | *pointerColorForeground: S_base1 |
| 424 | *color0: S_base02 |
| 425 | *color1: S_red |
| 426 | *color2: S_green |
| 427 | *color3: S_yellow |
| 428 | *color4: S_blue |
| 429 | *color5: S_magenta |
| 430 | *color6: S_cyan |
| 431 | *color7: S_base2 |
| 432 | *color9: S_orange |
| 433 | *color8: S_base03 |
| 434 | *color10: S_base01 |
| 435 | *color11: S_base00 |
| 436 | *color12: S_base0 |
| 437 | *color13: S_violet |
| 438 | *color14: S_base1 |
| 439 | *color15: S_base3 |
| 440 | |
| 441 | ### vim ### |
| 442 | |
| 443 | Install packages `vim`, `vim-gtk`, `vim-addon-manager`. |
| 444 | |
| 445 | Install file `~/.vim/colors/solarized.vim` |
| 446 | |
| 447 | Create `~/.vimrc` as shown below. |
| 448 | |
| 449 | set nocompatible " be iMproved, required |
| 450 | filetype off " required |
| 451 | |
| 452 | set number |
| 453 | syntax on |
| 454 | set tabstop=4 |
| 455 | set expandtab |
| 456 | set background=dark |
| 457 | colorscheme solarized |
| 458 | |
| 459 | "Folding |
| 460 | "http://vim.wikia.com/wiki/Folding_for_plain_text_files_based_on_indentation |
| 461 | "set foldmethod=expr |
| 462 | "set foldexpr=(getline(v:lnum)=~'^$')?-1:((indent(v:lnum)<indent(v:lnum+1))?('>'.indent(v:lnum+1)):indent(v:lnum)) |
| 463 | "set foldtext=getline(v:foldstart) |
| 464 | "set fillchars=fold:\ "(there's a space after that \) |
| 465 | "highlight Folded ctermfg=DarkGreen ctermbg=Black |
| 466 | "set foldcolumn=6 |
| 467 | |
| 468 | " Color the 100th column. |
| 469 | set colorcolumn=100 |
| 470 | highlight ColorColumn ctermbg = darkgray |
| 471 | |
| 472 | " Support for tags, currently for Moodle sanity |
| 473 | set tags=tags;/ |
| 474 | |
| 475 | ## Desktop Applications ## |
| 476 | |
| 477 | ### Web Browser ### |
| 478 | |
| 479 | Install `iceweasel` package |
| 480 | |
| 481 | Install plugins: Adblock Plus, NoScript, Image Zoom, Save Image in Folder, Thumbnail Zoom Plus, Enhanced Steam. |
| 482 | |
| 483 | In about:config, set browser.newtabpage.enabled = False. |
| 484 | |
| 485 | Since Firefox follows the freedesktop.org guidelines, tell it to stop creating stupid directories in my homedir. Create `~/.null` in homedir. Edit `~/.config/user-dirs.dirs` and change all values to point to `$HOME/.null`. Example below. |
| 486 | |
| 487 | # This file is written by xdg-user-dirs-update |
| 488 | # If you want to change or add directories, just edit the line you're |
| 489 | # interested in. All local changes will be retained on the next run |
| 490 | # Format is XDG_xxx_DIR="$HOME/.null/yyy", where yyy is a shell-escaped |
| 491 | # homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an |
| 492 | # absolute path. No other format is supported. |
| 493 | # |
| 494 | XDG_DESKTOP_DIR="$HOME/.null" |
| 495 | XDG_DOWNLOAD_DIR="$HOME/.null" |
| 496 | XDG_TEMPLATES_DIR="$HOME/.null" |
| 497 | XDG_PUBLICSHARE_DIR="$HOME/.null" |
| 498 | XDG_DOCUMENTS_DIR="$HOME/.null" |
| 499 | XDG_MUSIC_DIR="$HOME/.null" |
| 500 | XDG_PICTURES_DIR="$HOME/.null" |
| 501 | XDG_VIDEOS_DIR="$HOME/.null" |
| 502 | |
| 503 | ### Email ### |
| 504 | |
| 505 | Install package `mutt-patched` since it includes the sidebar-folder-path. |
| 506 | |
| 507 | Installed solarized colorscheme to `~/.mutt/colors_solarized` |
| 508 | |
| 509 | Configure `.muttrc` |
| 510 | |
| 511 | # .muttrc configuration file |
| 512 | |
| 513 | # General Configuration |
| 514 | set editor='vim' |
| 515 | set imap_check_subscribed=yes |
| 516 | set print_cmd="muttprint" |
| 517 | set print_split |
| 518 | set certificate_file=".mutt_certs" |
| 519 | source /home/ataylor/.mutt/colors_solarized/mutt-colors-solarized-light-16.muttrc |
| 520 | |
| 521 | # Sidebar |
| 522 | set sidebar_width=20 |
| 523 | set sidebar_visible=yes |
| 524 | set sidebar_sort=yes |
| 525 | |
| 526 | # View URLs inside mutt |
| 527 | macro index \cd "|urlview\n" |
| 528 | macro pager \cd "|urlview\n" |
| 529 | |
| 530 | # Handle HTML emails |
| 531 | auto_view text/html |
| 532 | alternative_order text/plain text/enriched text/html |
| 533 | |
| 534 | ### Account: ataylor@subgeniuskitty.com |
| 535 | source "~/.mutt/ataylor_subgeniuskitty_com" |
| 536 | folder-hook 'imaps://ataylor\@subgeniuskitty.com@mail.subgeniuskitty.com:993' 'source ~/.mutt/ataylor_subgeniuskitty_com' |
| 537 | |
| 538 | # Macros to handle multiple accounts |
| 539 | macro index <f2> '<sync-mailbox><enter-command>source ~/.mutt/ataylor_subgeniuskitty_com<enter><change-folder>!<enter>' |
| 540 | |
| 541 | # ~/.mutt/ataylor_subgeniuskitty_com |
| 542 | |
| 543 | # Read from IMAP server |
| 544 | set imap_user="ataylor@subgeniuskitty.com" |
| 545 | set imap_pass="pass" |
| 546 | set folder="imaps://ataylor\@subgeniuskitty.com@mail.subgeniuskitty.com:993" |
| 547 | set spoolfile="+INBOX" |
| 548 | |
| 549 | # Send through SMTP server |
| 550 | set smtp_url="smtps://ataylor\@subgeniuskitty.com@mail.subgeniuskitty.com:465" |
| 551 | set smtp_pass="pass" |
| 552 | set from="ataylor@subgeniuskitty.com" |
| 553 | set realname="Aaron Taylor" |
| 554 | set postponed="=Drafts" |
| 555 | set record="=Sent" |
| 556 | |
| 557 | # Account Hook -- Important |
| 558 | account-hook $folder "set imap_user=ataylor@subgeniuskitty.com imap_pass=pass" |
| 559 | |
| 560 | Install package `elinks` and add following line to `.mailcap` |
| 561 | |
| 562 | text/html; elinks -dump %s ; copiousoutput |
| 563 | |
| 564 | Install packages `muttprint` and `ospics`, and create `.muttprintrc` file with contents shown below. |
| 565 | |
| 566 | # Muttprint Configuration File |
| 567 | |
| 568 | PRINT_COMMAND="lp" |
| 569 | PENGUIN=/usr/share/ospics/Debian_color.eps |
| 570 | |
| 571 | Install package `urlview`. |
| 572 | |
| 573 | ### IRC ### |
| 574 | |
| 575 | Install package `irssi` and add relevant nick/pass/channel/server for autostart with |
| 576 | |
| 577 | /server add -auto -network freenode chat.freenode.net 6667 <password> |
| 578 | /network add -nick <nickname> freenode |
| 579 | /channel add -auto #hoggit freenode |
| 580 | |
| 581 | Cut down on the chatter |
| 582 | |
| 583 | /ignore * JOINS QUITS PARTS |
| 584 | |
| 585 | Enable autologging and quasi-rotation by making log dir and setting ownership. Then, in irssi, |
| 586 | |
| 587 | /set autolog_path /path/to/logdir/$tag/$0.%Y%m%d.log |
| 588 | /set autolog on |
| 589 | /save |
| 590 | |
| 591 | Add the following scripts to `~/.irssi/scripts` and symlink to `~/.irssi/scripts/autostart`: |
| 592 | adv_windowlist |
| 593 | nickcolor |
| 594 | trackbar |
| 595 | |
| 596 | Add to `~/.xinitrc` but for some reason, must manually specify xterm colors otherwise they default to black text on white background rather than system defaults. |
| 597 | |
| 598 | xterm -fg AliceBlue -bg Black irssi & |
| 599 | |
| 600 | ### Misc Software ### |
| 601 | |
| 602 | A list of misc packages in the Debian repository to install. |
| 603 | |
| 604 | Text Editor - vim vim-gtk vim-addon-manager |
| 605 | Science/Data - texlive texlive-science texlive-math-extra gnuplot scilab octave dx python-scitools paraview |
| 606 | Document Viewers - okular okular-extra-backends |
| 607 | Communication - pidgin |
| 608 | Office Suite - libreoffice gnumeric abiword scribus |
| 609 | System Tools - dvd+rw-tools spacefm virtualbox-ose cellwriter wine smartmontools |
| 610 | Graphics - gimp rawtherapee inkscape geeqie |
| 611 | Media - vlc browser-plugin-vlc quodlibet ffmpeg |
| 612 | Programming - valgrind libgmp-dev libplot-dev plotutils glade libncurses5-dev libmysqlclient-dev |
| 613 | Misc - kicad golly |
| 614 | |
| 615 | # Misc # |
| 616 | |
| 617 | ## Sun Microsystems Keyboard Codes ## |
| 618 | |
| 619 | name sun code sun name usb code usb name alternative alt USB code alt windows vkey |
| 620 | |
| 621 | help 0x76 lf(16) 0x75 help f13 0x68 124 |
| 622 | stop 0x01 buckybits+systembit 0x78 stop f14 0x69 125 |
| 623 | again 0x03 lf(2) 0x79 again f15 0x6A 126 |
| 624 | props 0x19 lf(3) 0x76 keyboard menu f16 0x6B 127 |
| 625 | undo 0x1A lf(4) 0x7A undo f17 0x6C 128 |
| 626 | front 0x31 lf(5) 0x77 select f18 0x6D 129 |
| 627 | copy 0x33 lf(6) 0x7C copy f19 0x6E 130 |
| 628 | open 0x48 lf(7) 0x74 execute f20 0x6F 131 |
| 629 | paste 0x49 lf(8) 0x7D paste f21 0x70 132 |
| 630 | find 0x5F lf(9) 0x7E find f22 0x71 133 |
| 631 | cut 0x61 lf(10) 0x7B cut f23 0x72 134 |
| 632 | |
| 633 | mute 0x2D rf(4) 0x7F mute f24 0x73 135 |
| 634 | vol down 0x02 - 0x81 volume down intl'1 0x87 193 |
| 635 | vol up 0x04 - 0x80 volume up intl'6 0x8C 234 |
| 636 | power 0x30 bf(13) 0x66 keyboard power* - - - |
| 637 | |
| 638 | compose 0x43 COMPOSE 0x65 app right gui |
| 639 | left meta 0x78 BUCKYBITS+METABIT 0xE3 left gui left alt |
| 640 | right meta 0x7A BUCKYBITS+METABIT 0xE7 right gui right alt |
| 641 | escape** 0x1D ESC 0x29 escape tilde |
| 642 | tilde** 0x2A ` 0x35 tilde escape |
| 643 | caps lock** 0x77 SHIFTKEYS+CAPSLOCK 0x39 caps lock control |
| 644 | control** 0x4C SHIFTKEYS+LEFTCTRL 0xE0 control caps lock |
| 645 | alt 0x13 SHIFTKEYS+ALT 0xE2 left alt left gui |
| 646 | alt graph 0x0D - 0xE6 right alt right control |
| 647 | |
| 648 | ## Keyboard Shortcuts: mutt ## |
| 649 | |
| 650 | D ~A - Delete all in folder |
| 651 | $ - Purge |
| 652 | c - Change folder |
| 653 | T ~A - Tag all in folder |
| 654 | ;s - Save all tagged messages |
| 655 | Ctrl-B - Show URLs |
| 656 | |
| 657 | ## Burning CD/DVD ## |
| 658 | |
| 659 | Create ISO from filesystem(maximizing compatiblity with long filenames): |
| 660 | |
| 661 | genisoimage -r -J -l -d -joliet-long -allow-multidot -V undergrad_files -o target.iso /path/to/source/directory |
| 662 | |
| 663 | For DVD ISO burning: |
| 664 | |
| 665 | growisofs -dvd-compat -Z /dev/sro=name.of.iso |
| 666 | |
| 667 | For CD ISO burning: |
| 668 | |
| 669 | wodim -v -sao dev=/dev/sr0 name.of.iso |
| 670 | |
| 671 | ## Multipage PDFs ## |
| 672 | |
| 673 | First scan and get everything ready as TIFFs |
| 674 | |
| 675 | tiffcp scan_???.tiff multipage.tiff |
| 676 | tiff2pdf -j -o output.pdf multipage.tiff |
| 677 | |
| 678 | # Files # |
| 679 | |
| 680 | * [vim solarized theme](debian_8.files/vim_solarized.tar.gz) |
| 681 | * [mutt solarized theme](debian_8.files/mutt_solarized.tar.gz) |