################################################################################ # Unix Home Configuration # # Author: P. Neidhardt # # Date: 2013-04-13 # ################################################################################ Synopsis ******** This repository contains scripts configuration files for various Unix programs. It targets Arch Linux and FreeBSD (might work for most Unices as well). ################################################################################ Highlights ********** * Smart audio transcoding: implemented as shell functions. It will convert, tag and move the input tracks in a dynamic, yet customizable manner. It features a smart title case AWK function that will print almost any audio tag the proper way. It will copy cover files when found. You can preview the changes without writing data. Using FFmpeg. * Video transcoding: batch conversion of any kind of videos. Using FFmpeg. * Plain TeX: partial unicode support (borrowed from LaTeX). * Emacs LaTeX home-made environment, dynamic compilation, custom variable support, SyncTeX working with Zathura, PDF compression, and much more. * Mutt Sidebar with multiple accounts on non-local IMAP (using Mutt's IMAP client). * Awesome widgets: nice functions, like dynamic network speed (it checks for different interfaces), CPU speed, dynamic battery that will not show up if no battery is detected, and sound volume. * Pacman functions: a lot of handy functions for the pacman package manager, like sorting by size, dependency listing, etc. ################################################################################ Generic Comments **************** The only purpose is to be a source of inspiration. Examples are always a good technical support. (Especially for applications that do not provide examples in their documentation.) There is no use in blind-copying the content of any file into your personal home folder. At best it might break things. In case you still want to copy some files -- for quick and dirty testing purpose -- do not forget that most of the files are in hidden folders. Also note that in some shells, the '*' joker will NOT match hidden files, that is cp -r source-dir/* dest-dir/ will copy non-hidden folders only. To match all folders, use the following joker instead: cp -r source-dir/{.*,*} dest-dir/ # zsh cp -r source-dir/{.??*,*} dest-dir/ # bash Still, the solution for bash is not perfect as it affects 3 characters files only. A more convenient solution: # bash only. shopt -s dotglob cp -r source-dir/* dest-dir/ Git makes it possible to use your home folder as a git repo, thus versioning all files directly. To fetch source from Git repo: cd git init git remote add origin git fetch git branch master origin/master git checkout master Some applications will need extra dependencies other than the default ones. You might have a look at the .pkg-* files to see what software I've been using. Final word: do not forget to read the manpages! ################################################################################ Awesome ******* Extra deps: Vicious (Linux only) Configuration is very close to the default one, which mostly fits my needs. Most of the work I've done is for the status bar, but since I'm using the Vicious plugin, it is quite straightforward. dwb *** Some custom options, download location, search engines, etc. Emacs ***** Extra deps: emacs-bison-mode emacs-flex-mode emacs-glsl-mode emacs-lua-mode emacs-make-regexp emacs-mediawiki-bzr emacs-multiple-cursors emacs-nox emacs-xclip emacs-yasnippet Emacs daemon is integrated flawlessly thanks to a small script. See homeinit. Configuration for C programming. Bindings to compile either from makefile or from a custom command if no makefile is found. TeX and LaTeX full-featured home made environment: no AucTeX required, snippets, dynamic compilation with various engines, dynamic configuration, proper PDF view, temp files clean function, PDF compression, SyncTeX support. Custom color theme with 256 colors. Extended file support (shell files, Mutt mails, Arch Linux PKGBUILDs). Some customization: columns, kill whole line, etc. Some custom functions: duplicate line, unfill-paragraph, etc. A lot of code snippets, especially for LaTeX. Contains document template, plot generation, pie chart generation, and others. Mutt **** Compile options: IMAP and SMTP support. Extra deps: antiword, ccrypt, fortune, sxiv, w3m. This one is not easy to get into it. I managed to get multiple accounts with encrypted passwords working, which means there is no plain password stored on the disk. As a result, I just get prompted for a main password on Mutt startup, then everything works out of the box. I use ccrypt for password management because it is much more simple than gnupg. I'm using embedded IMAP and SMTP services which need appropriate compilation options. Some customization: custom index view, good Emacs integration (see .emacs), custom theme (matches Emacs colors), various tweaks. Thanks to the colorset.sh script, Mutt will check terminal color support and load colors appropriately. Therefore this configuration should work on any terminal, should it have 256-colors support or not. URxvt has an URL support that works also for Mutt. For other terminals, you might consider using the 'urlview' plugin for Mutt. Ranger ****** Extra deps: antiword, atool, highlight, img2txt, mediainfo, odt2txt, pdftotext, unrtf, w3m. Custom bindings, file association, tweaked a few options. Scripts ******* abs-*: helper scripts to compile pacman-based packages (using makepkg). With these scripts you can recompile your whole system. archive: simple tar wrapper to create archive for files and folders. asciify: convert many non-ASCII characters to their nearest ASCII counterpart. ediff: diff with Emacs. formatc: wrapper for 'indent' to prettify C source code. homeinit: initialize a new home configuration, i.e. get needed files, create symlinks, etc. netinit: network setup. Works with wpa_supplicant. May replace any network manager. pkggen: generates lists of installed with pacman, FreeBSD's pkg and tlmgr (TeX Live manager). Shell ***** Target: zsh, bash Probably the most interesting part here. A lot of stuff: aliases, functions, shell options, etc. Please note that this config is mainly intended -- and tested -- for zsh. It should be mostly compatible with Bourne shell though. When incompabilities have been encountered, it has been reported into the configuration files. Hence the shared folder .shell.d/, whose files get sourced by both bash and zsh. Bash-specific and zsh-specific options are in dedicated files ending with the appropriate shell name. TeX *** Plain TeX macros, most importantly a partial UTF-8 support (taken from LaTeX). A lot of LaTeX macros. Among others: pie charts, dynamic plots with input file and trend. Plain TeX macros are in the '.texmf' folder. LaTeX macros are all bundled into Emacs snippets so that .tex documents do not rely on any external file. URxvt ***** Extra deps: Muennich's perl extensions (keyboard-select, clipboard, url-matcher) Custom font and colors, no scroll bar, url-matcher, clipboard, and keyboard-select. Vim *** I've only been a casual Vim user, so do not expect too much from it. ################################################################################ Known issues ************ Emacs From times to times Emacs daemon will 'break' after a while: indentation and colors will stop work properly. Investigation in progress. URxvt Using the paste function from Muennich's clipboard on the same terminal where text was copied will make it crash. ################################################################################ Noteworthy apps *************** aalib abook aircrack-ng antiword apvlv asciidoc astyle atool awesome awk bashmount bc cal calc catdvi ccrypt cdrtools centerim chrpath cmus column comm cppcheck cut dash diff doxygen dropbox dtach dvtm dwb emacs fbpdf fbv fdisk feh ffmpeg file finch fmt fortune gaupol gcolor2 gdb gimp gnumeric gnuplot gparted graphicsmagick grep groff hdparm highlight htop id3v2 imagemagick indent inkscape iotop irssi latex2html latex2rtf lrzip lshw ltrace luakit lynx mediainfo mercurial mkfs mkvtoolnix movgrab mplayer2 mutt nasm ncdu nethogs newsbeuter ngrep nmap numlockx octave od odt2txt okular openshot openssh oss p7zip pari parted patch poppler pstotext pwgen qpdf ranger re2c rsync rtorrent rxvt-unicode scrot sdparm sed shred slock sort splint strace subdl submarine sudo sxiv syslinux task tcc tcpdump texi2html texinfo texlive textadept tig trash-cli tree udiskie unrtf upx valgrind vim vlock w3m weechat wipe wireshark wmfs wv x264 xclip yasm zathura zsh