From 224f475a46b6c6868d9313f8da9b72e7a141c9b1 Mon Sep 17 00:00:00 2001 From: "Collin J. Doering" Date: Sat, 2 Nov 2013 23:18:16 -0400 Subject: [PATCH] A variety of accumulated changes/fixes Notable changes include: * .Xdefaults: - added comments - switched from url-select to url-picker (for urxvt) * .bashrc: added some alias' and changed PATH * .bin/vol.sh: *depreciated* * .bin/xmonadClose.sh: added experimental timed-action support * .config/dunst/dunstrc: - changed transparency to 15% - issue with getting "follow = v" to work; where v = mouse or keyboard * .config/systemd/user/emacs.service: - added a Environment property because it is required with a recent(ish?) update of systemd * .config/systemd/user/xbindkeys.service: - added Environment property - made ExecStart more specific * .conkerorrc: - added support for magnet urls - added firebug-lite support * .emacs: - disabled tabs - enabled column-number-mode * .ghci: added ghci config file * .gnus: Many changes to make gnus more usable as a email client (multiple email support) * .mpdconf: added password for admin and control access * .ncmpcpp/config: use new mpd password * .screenrc: use weechat in place of irssi * .xbindkeysrc: - use new mpd password - pulseaudio_ctl merged with pulseaudio-ctl in AUR. Now using the new version *BROKEN* * .xinitrc: running "systemd --user" is depreciated (automatically run by logind) * .xmobarrc: use DynNetwork in place of Network * .xmonad/xmonad.hs: code clean-up * .zshrc: - added new function 'disable_unit_run' which can be used to run a program temporarily disabling a systemd user unit file - added alias' - changed PATH --- .Xdefaults | 26 +- .bashrc | 6 +- .bin/vol.sh | 9 +- .bin/xmonadClose.sh | 25 +- .config/dunst/dunstrc | 5 +- .config/mc/hotlist | 15 +- .config/mc/ini | 8 +- .config/systemd/user/emacs.service | 1 + .config/systemd/user/xbindkeys.service | 3 +- .conkerorrc | 22 +- .emacs | 376 ++++++++++++++++++------- .emacs.d/templates/php-template.php | 5 + .eshell/alias | 8 +- .ghci | 10 + .gnus | 31 +- .mpdconf | 70 ++--- .ncmpcpp/config | 11 +- .screenrc | 7 +- .xbindkeysrc | 30 +- .xinitrc | 2 +- .xmobarrc | 6 +- .xmonad/xmonad.hs | 111 ++++---- .zshrc | 24 +- 23 files changed, 540 insertions(+), 271 deletions(-) diff --git a/.Xdefaults b/.Xdefaults index a1a8f77..3ab46fd 100644 --- a/.Xdefaults +++ b/.Xdefaults @@ -1,24 +1,32 @@ +! General URxvt visual options URxvt.buffered: true URxvt.foreground: white URxvt.cursorColor: green URxvt.underlineColor: yellow URxvt.font: xft:Bitstream Vera Sans Mono:pixelsize=12:antialias=false URxvt.boldFont: xft:Bitstream Vera Sans Mono:bold:pixelsize=13:antialias=false -URxvt.matcher.button: 1 URxvt.scrollstyle: plain - -URxvt.perl-ext-common: default,clipboard,tabbedex,url-select,keyboard-select,matcher - -URxvt.keysym.M-u: perl:url-select:select_next -URxvt.urlLauncher: /usr/bin/conkeror +URxvt.depth: 32 +URxvt.background: rgba:0000/0000/0000/cccc +urxvt.urgentOnBell: true URxvt.underlineURLs: true +! Perl-exts to use +URxvt.perl-ext-common: default,clipboard,tabbedex,url-picker,keyboard-select,matcher + +! Setup matcher perl-ext +URxvt.keysym.M-u: perl:url-picker +URxvt.urlLauncher: /usr/bin/conkeror +URxvt.matcher.button: 1 + URxvt.keysym.M-Escape: perl:keyboard-select:activate URxvt.keysym.M-s: perl:keyboard-select:search -URxvt.depth: 32 -URxvt.background: rgba:0000/0000/0000/cccc +! Setup tabbedex perl-ext URxvt.tabbed.tabbar-bg: -1 -urxvt.urgentOnBell: true + +! Force vncviewer to show a password dialog vncviewer.passwordDialog: true + +! Set default emacs font Emacs.font: Terminus-12 diff --git a/.bashrc b/.bashrc index 54623d6..b09a2a8 100644 --- a/.bashrc +++ b/.bashrc @@ -8,12 +8,12 @@ alias grep='grep --color=auto' alias fgrep='fgrep --color-auto' alias egrep='egrep --color-auto' alias ncmpc='ncmpc -c' -alias pacman='pacman-color' -alias spacman='sudo pacman-color' +alias spacman='sudo pacman' # Alias' to make some commands a little less terse alias skreen='screen -c /dev/null' alias tranr='transmission-remote' +alias ctl='systemctl' alias ctlu='systemctl --user' alias sctl='sudo systemctl' alias qemu='qemu-system-x86_64 -enable-kvm' @@ -47,7 +47,7 @@ stty stop undef # * mathematica / tools # * nxclient / associated tools # * maven tools -export PATH=${PATH}:/usr/local/bin:/opt/maven/bin:/opt/NX/bin:/home/collin/.cabal/bin:/home/collin/.bin +export PATH=${PATH}:/opt/maven/bin:/opt/NX/bin:/home/collin/.cabal/bin:/home/collin/.gem/ruby/2.0.0/bin:/home/collin/.bin # start keychain eval `keychain --eval --timeout 10 --quiet --agents ssh id_rsa` diff --git a/.bin/vol.sh b/.bin/vol.sh index 149e40a..375ebc0 100755 --- a/.bin/vol.sh +++ b/.bin/vol.sh @@ -21,9 +21,12 @@ #TODO: fix this horrible code..the obvious issues being multiple calls to amixer..have the needed data stored in VOL_DATA and then further parse the needed data from there -#VOL_DATA="$(amixer get Master | sed -n '5p')" -VOLUME="$(amixer get Master | sed -n '5p' | cut -f6 -d' ' | sed 's/^.\(.*\).$/\1/')" -VOL_STATUS="$(amixer get Master | sed -n '5p' | cut -f8 -d' ' | sed 's/^.\(.*\).$/\1/')" +# VOL_DATA="$(amixer get Master | sed -n '6p')" +# VOLUME="$(echo $VOL_DATA | cut -f7 -d' ' | sed 's/^.\(.*\).$/\1/')" # assumes left and right are tied together +# VOL_STATUS="$(echo $VOL_DATA | cut -f8 -d' ' | sed 's/^.\(.*\).$/\1/')" + +VOLUME="$(amixer get Master | sed -n '6p' | cut -f7 -d' ' | sed 's/^.\(.*\).$/\1/')" +VOL_STATUS="$(amixer get Master | sed -n '6p' | cut -f8 -d' ' | sed 's/^.\(.*\).$/\1/')" if [ "$VOL_STATUS" == "off" ]; then echo "Vol: Mute" diff --git a/.bin/xmonadClose.sh b/.bin/xmonadClose.sh index 81facd5..1600a4e 100755 --- a/.bin/xmonadClose.sh +++ b/.bin/xmonadClose.sh @@ -24,7 +24,7 @@ # * Needs to check whether a reboot/shutdown is allowed (user must be in the group # 'power' and must be the only user logged in or they will be prompted for sudo's # password to override) -# * Add support for the user to specify a timer +# * Add support for the user to specify a timer *needs some work yet* # - Needs to provide a way to cancel the time # - Would be nice if there was some notification when there's n min left in the timer # * re-write in haskell direct into ~/.xmonad/xmonad.hs using the dmenu extension(?) @@ -33,9 +33,8 @@ # so that the second argument could be used as a 'logout command' and thus # this script could be used with any wm -actionNames=(cancel logout suspend hibernate hybrid-sleep shutdown restart) -actionExecs=("" - "xdotool key super+control+shift+End" +actionNames=(logout suspend hibernate hybrid-sleep shutdown restart) +actionExecs=("xdotool key super+control+shift+End" "xscreensaver-command -lock && systemctl suspend" "xscreensaver-command -lock && systemctl hibernate" "xscreensaver-command -lock && systemctl hybrid-sleep" @@ -43,11 +42,20 @@ actionExecs=("" "reboot") # Ask the user whether they want to logout, cancel, suspend, hibernate, hybrid-sleep, shutdown -ask=`echo ${actionNames[*]} | tr ' ' '\n' | dmenu -b -i -nb '#040404' -nf '#525252' -sf '#ffa0ff' -sb '#000000'` +ask=`echo "cancel ${actionNames[*]} timed-action" | tr ' ' '\n' | dmenu -b -i -nb '#040404' -nf '#525252' -sf '#ffa0ff' -sb '#000000'` case "$ask" in - logout|suspend|hibernate|hybrid-sleep|shutdown) - if [[ `echo "" | dmenu -b -i -nb '#040404' -nf '#525252' -sf '#ffa0ff' -sb '#000000' -p "Are you sure you want to $ask? [yes/no] "` == 'yes' ]]; then + logout|suspend|hibernate|hybrid-sleep|shutdown|restart|timed-action) + if [[ "$ask" == "timed-action" ]]; then + time=`echo "1m 3m 5m 10m 15m 20m 30m 45m 1h 1.5h 2h 3h" | tr ' ' '\n' | dmenu -b -i -nb '#040404' -nf '#525252' -sf '#ffa0ff' -sb '#000000' -p "How long?"` + # TODO: validate input to ensure form: +(s|m|h|d)? + for ((i=0; i < ${#actionNames[*]}; i++)); do + actionExecs[$i]="sleep $time && notify-send 'WARNING! Computer set to ${actionNames[$i]} in 15 seconds!' -u critical && sleep 15s && ${actionExecs[$i]}" + done + ask=`echo "cancel ${actionNames[*]}" | tr ' ' '\n' | dmenu -b -i -nb '#040404' -nf '#525252' -sf '#ffa0ff' -sb '#000000'` + fi + + if [[ "$ask" != "cancel" && `echo "" | dmenu -b -i -nb '#040404' -nf '#525252' -sf '#ffa0ff' -sb '#000000' -p "Are you sure you want to $ask? [yes/no] "` == 'yes' ]]; then for ((i=0; i < ${#actionNames[*]}; i++)); do if [[ "$ask" == "${actionNames[$i]}" ]]; then sh -c "${actionExecs[$i]}" @@ -60,3 +68,6 @@ case "$ask" in # Do nothing; the user entered cancel or a invalid input ;; esac + +# Exit successfully +exit 0 diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc index 2ef8c54..f27b4d9 100644 --- a/.config/dunst/dunstrc +++ b/.config/dunst/dunstrc @@ -36,7 +36,6 @@ # ignore newlines '\n' in notifications ignore_newline = no - # the geometry of the window # geometry [{width}]x{height}][+/-{x}+/-{y}] # The geometry of the message window. @@ -52,7 +51,7 @@ # The transparency of the window. range: [0; 100] # This option will only work if a compositing windowmanager is present (e.g. xcompmgr, compiz, etc..) - transparency = 35 + transparency = 15 # Don't remove messages, if the user is idle (no mouse or keyboard input) # for longer than idle_threshold seconds. @@ -72,7 +71,7 @@ # # If this option is set to mouse or keyboard, the monitor option will be # ignored. - follow = keyboard + follow = none # should a notification popped up from history be sticky or # timeout as if it would normally do. diff --git a/.config/mc/hotlist b/.config/mc/hotlist index 32499c2..0a8f54b 100644 --- a/.config/mc/hotlist +++ b/.config/mc/hotlist @@ -1,5 +1,14 @@ -ENTRY "/home/collin" URL "/home/collin" +ENTRY "~/" URL "/home/collin" +ENTRY "/media" URL "/media" ENTRY "/media/dm" URL "/media/dm" -GROUP "Local Network" - ENTRY "sh:alpha/~" URL "/home/collin/#sh:alpha/~" +ENTRY "/media/dm/Downloads" URL "/media/dm/Downloads" +ENTRY "/home/collin/.code" URL "/home/collin/.code" +ENTRY "/home/collin/.scratch" URL "/home/collin/.scratch" +GROUP "Network" + ENTRY "/sh://omicron/home/collin" URL "/sh://omicron/home/collin" + ENTRY "/sftp://rekah742@ftp.rekahsoft.ca:22/home/rekah742" URL "/sftp://rekah742@ftp.rekahsoft.ca:22/home/rekah742" + GROUP "Local Network" + ENTRY "sh:alpha/~" URL "/home/collin/#sh:alpha/~" + ENTRY "/ftp://rekah742@ftp.rekahsoft.ca/" URL "/ftp://rekah742@ftp.rekahsoft.ca/" + ENDGROUP ENDGROUP diff --git a/.config/mc/ini b/.config/mc/ini index 16a3170..3f1c320 100644 --- a/.config/mc/ini +++ b/.config/mc/ini @@ -99,6 +99,10 @@ preallocate_space=0 editor_cursor_after_inserted_block=0 editor_group_undo=0 +editor_ask_filename_before_edit=0 + +editor_filesize_threshold=64M + [Layout] message_visible=1 keybar_visible=1 @@ -111,9 +115,9 @@ free_space=1 horizontal_split=0 vertical_equal=1 -left_panel_size=122 +left_panel_size=81 horizontal_equal=1 -top_panel_size=113 +top_panel_size=20 [Misc] timeformat_recent=%b %e %H:%M diff --git a/.config/systemd/user/emacs.service b/.config/systemd/user/emacs.service index d5b5074..d43540e 100644 --- a/.config/systemd/user/emacs.service +++ b/.config/systemd/user/emacs.service @@ -5,6 +5,7 @@ Description = Emacs: the extensible, self-documenting text editor Type = forking ExecStart = /usr/bin/emacs --daemon ExecStop = /usr/bin/emacsclient --eval "(progn (setq kill-emacs-hook 'nil) (kill-emacs))" +Environment = PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/android-sdk/platform-tools:/opt/android-sdk/tools:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib/smlnj/bin:/opt/maven/bin:/opt/NX/bin:/home/collin/.cabal/bin:/home/collin/.bin Restart = always [Install] diff --git a/.config/systemd/user/xbindkeys.service b/.config/systemd/user/xbindkeys.service index dca2432..76c070c 100644 --- a/.config/systemd/user/xbindkeys.service +++ b/.config/systemd/user/xbindkeys.service @@ -2,7 +2,8 @@ Description = A grabbing keys program for X [Service] -ExecStart = /usr/bin/xbindkeys -n +ExecStart = /usr/bin/xbindkeys -n -f %h/.xbindkeysrc +Environment=DISPLAY=:0 Restart = always [Install] diff --git a/.conkerorrc b/.conkerorrc index ef02e68..ca74e2b 100644 --- a/.conkerorrc +++ b/.conkerorrc @@ -47,6 +47,8 @@ external_content_handlers.set("application/pdf", "zathura"); external_content_handlers.set("video/*", "urxvtc -e mplayer"); external_content_handlers.set("application/x-bittorrent", "transmission-remote -a"); +set_protocol_handler("magnet", find_file_in_path("transmission-remote -a")); + // use emacsclient as external editor. editor_shell_command = "emacsclient"; @@ -158,6 +160,11 @@ define_key(content_buffer_normal_keymap, "k", "cmd_scrollLineUp"); define_key(content_buffer_normal_keymap, "J", "follow-new-buffer-background"); define_key(default_global_keymap, "C-x C-b", "switch-to-buffer"); +// TODO: fix a bug in conkeror-git 120527.1.100.g7994dfa-1 where M-< is bound to scroll-top-left which is either +// broken or is being depreciated? M-> uses cmd_scrollBottom and internally scroll-top-left uses cmd_scrollTop (then scrolls left). +// Until this issue is fixed just use cmd_scrollTop for M-< +define_key(content_buffer_normal_keymap, "M-<", "cmd_scrollTop"); + // Some code thanks to retroj on #conkeror@irc.freenode.net define_browser_object_class( "history-url", null, @@ -188,5 +195,18 @@ interactive("history-clear", "Clear the history.", history_clear); +define_variable("firebug_url", + "http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js"); + +function firebug (I) { + var doc = I.buffer.document; + var script = doc.createElement('script'); + script.setAttribute('type', 'text/javascript'); + script.setAttribute('src', firebug_url); + script.setAttribute('onload', 'firebug.init();'); + doc.body.appendChild(script); +} +interactive("firebug", "open firebug lite", firebug); + // Disable whitelist (Causes extensions from unknown/unsigned sites to silently fail if not enabled!) -session_pref("xpinstall.whitelist.required", false); +//session_pref("xpinstall.whitelist.required", false); diff --git a/.emacs b/.emacs index f0ff9ad..f345c9c 100644 --- a/.emacs +++ b/.emacs @@ -12,6 +12,7 @@ ;; the package ;; ELPA packages that do not require modification of this file other then Customize +;; * psgml ;; * caml (required by tuareg) ;; * tuareg ;; * project-mode @@ -51,6 +52,12 @@ ;; stop renaming of saved files to filename~ which ends up breaking hardlinks (setq backup-by-copying-when-linked t) +;; Turn off indentation (use spaces instead) +(setq-default indent-tabs-mode nil) + +;; Show column number in status bar +(column-number-mode) + ;; fixes color output issues; see: http://wiki.archlinux.org/index.php/Emacs#Colored_output_issues (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) @@ -58,10 +65,14 @@ ;; Note: regexp's used to match buffer filenames are intentionally left ;; unbounded (without '$') to catch cases where the filename may ;; take the format: filename~ -(add-to-list 'auto-mode-alist '("\\.conkerorrc" . javascript-mode)) +(add-to-list 'auto-mode-alist '("\\.conkerorrc" . js-mode)) (add-to-list 'auto-mode-alist '("\\.xmobarrc" . haskell-mode)) (add-to-list 'auto-mode-alist '("\\.screenrc" . conf-mode)) (add-to-list 'auto-mode-alist '("\\.stumpwmrc" . lisp-mode)) +(add-to-list 'auto-mode-alist '("\w*\\.service" . conf-mode)) +(add-to-list 'auto-mode-alist '("\w*\\.socket" . conf-mode)) +(add-to-list 'auto-mode-alist '("\\.mpdconf" . conf-mode)) +(add-to-list 'auto-mode-alist '("dunstrc" . conf-mode)) ;; bind M-g to M-x goto-line (global-set-key "\M-g" 'goto-line) @@ -71,6 +82,10 @@ (interactive) (other-window -1))) +;; Setup browse-key-ring +(require 'browse-kill-ring) ;; ELPA +(global-set-key "\C-cy" 'browse-kill-ring) + ;; adds the given function mode to each element of the given-hooks (defun activate-mode-with-hooks (mode given-hooks) (while given-hooks @@ -92,7 +107,7 @@ 'face 'linum))) ;; code-modes is a list of mode hooks (for programming langs only) -(defvar code-modes '(sml-mode-hook scheme-mode-hook emacs-lisp-mode-hook c-mode-hook c++-mode-hook python-mode-hook lua-mode-hook python-mode-hook haskell-mode-hook php-mode-hook perl-mode-hook lisp-mode-hook clojure-mode-hook ruby-mode-hook erlang-mode-hook sh-mode-hook)) +(defvar code-modes '(sml-mode-hook scheme-mode-hook emacs-lisp-mode-hook c-mode-hook c++-mode-hook python-mode-hook lua-mode-hook python-mode-hook haskell-mode-hook php-mode-hook perl-mode-hook lisp-mode-hook clojure-mode-hook ruby-mode-hook erlang-mode-hook sh-mode-hook java-mode-hook scala-mode-hook js-mode-hook)) ;; activate linum-mode in all buffers used for programming (activate-mode-with-hooks (lambda () (linum-mode 1)) code-modes) @@ -127,6 +142,9 @@ ;; Set default tramp method to ssh (for security purposes) (setq tramp-default-method "ssh") +;; Set the prompt pattern tramp searches for in order to send commands to the remote shell +(setq tramp-shell-prompt-pattern "^[^$>\n]*[#$%>] *\\(\[[0-9;]*[a-zA-Z] *\\)*") + ;; Setup ibuffer (interactive buffer) (global-set-key "\C-x\C-b" 'ibuffer) (autoload 'ibuffer "ibuffer" "List buffers." t) @@ -137,77 +155,100 @@ (add-to-list 'ibuffer-never-show-predicates "^\\*Completions\\*$") (add-to-list 'ibuffer-never-show-predicates "^\\*tramp/.*\\*$") +;; Enable ibuffer-vc extension +;; TODO: enable along side my pre existing filter groups using (ibuffer-vc-generate-filter-groups-by-vc-root). +;; This cannot be done in the ibuffer-saved-filters because ibuffer-vc-generate... returns a list of cons +;; cells but we need this to be dynamic (use a hook like ibuffer-load-hook) +(require 'ibuffer-vc) + ;; Filter ibuffers (similar to gnus) (setq ibuffer-saved-filter-groups - (quote (("default" - ("dired" (mode . dired-mode)) - ("config" (or - (name . "^\\.xinitrc$") - (name . "^\\.bashrc$") - (name . "^\\.bash_profile$") - (name . "^\\.zshrc$") - (name . "^xmonad\\.hs$") - (name . "^\\.emacs$") - (name . "^\\.gnus$") - (name . "^\\.xmobarrc") - (name . "^\\.Xdefaults$") - (name . "^\\.screenrc$") - (name . "^\\.xbindkeysrc$") - (name . "^\\.racketrc$") - (name . "^\\.ghci"))) - ("code" (or - (mode . c-mode) - (mode . c++-mode) - (mode . perl-mode) - (mode . lua-mode) - (mode . clojure-mode) - (mode . java-mode) - (mode . python-mode) - (mode . ruby-mode) - (mode . emacs-lisp-mode) - (mode . lisp-mode) - (mode . sh-mode) - (mode . scheme-mode) - (mode . haskell-mode) - (mode . php-mode) - (mode . xml-mode))) - ("REPL" (or - (mode . geiser-mode) - (mode . slime-repl-mode) - (mode . inferior-python-mode) - (mode . ipython-mode) - (mode . inferior-haskell-mode) - (mode . inferior-lisp-mode) - (mode . eshell-mode) - (mode . inferior-scheme-mode) - (mode . inferior-tcl) - (mode . erlang-shell-mode) - (name . "^\\*inferior-lisp\\*$") - (name . "^\\* Racket REPL \\*$"))) - ("git" (or - (name . "^\\*magit: ") ;; this regxp could be better - (mode . magit-mode) - (mode . magit-log-mode))) - ("planner" (or - (name . "^\\*Calendar\\*$") - (name . "^diary$") - (mode . muse-mode))) - ("emacs" (or - (name . "^\\*scratch\\*$") - (name . "^\\*Messages\\*$"))) - ("org" (or - (mode . org-mode) - (name . "^\\.org$") - (name . "^\\.org.gpg$"))) - ("gnus" (or - (mode . message-mode) - (mode . bbdb-mode) - (mode . mail-mode) - (mode . gnus-group-mode) - (mode . gnus-summary-mode) - (mode . gnus-article-mode) - (name . "^\\.bbdb$") - (name . "^\\.newsrc-dribble"))))))) + '(("default" + ("dired" (mode . dired-mode)) + ("config" (or + (name . "^\\.xinitrc") + (name . "^\\.bashrc") + (name . "^\\.bash_profile") + (name . "^\\.zshrc") + (name . "^xmonad\\.hs") + (name . "^\\.emacs") + (name . "^\\.gnus") + (name . "^\\.xmobarrc") + (name . "^\\.Xdefaults") + (name . "^\\.screenrc") + (name . "^\\.xbindkeysrc") + (name . "^\\.racketrc") + (name . "^\\.ghci") + (name . "\w*\\.service") + (name . "\w*\\.socket") + (name . "^dunstrc") + (name . "^\\.mpdconf") + (name . "^\\.conkerorrc"))) + ("code" (or + (mode . c-mode) + (mode . c++-mode) + (mode . perl-mode) + (mode . lua-mode) + (mode . clojure-mode) + (mode . java-mode) + (mode . python-mode) + (mode . ruby-mode) + (mode . emacs-lisp-mode) + (mode . lisp-mode) + (mode . sh-mode) + (mode . scheme-mode) + (mode . haskell-mode) + (mode . scala-mode) + (mode . php-mode) + (mode . xml-mode) + (mode . html-mode) + (mode . js-mode))) + ("REPL" (or + (mode . geiser-mode) + (mode . slime-repl-mode) + (mode . inferior-python-mode) + (mode . ipython-mode) + (mode . inferior-haskell-mode) + (mode . inferior-lisp-mode) + (mode . eshell-mode) + (mode . inferior-scheme-mode) + (mode . inferior-tcl) + (mode . erlang-shell-mode) + (name . "^\\*inferior-lisp\\*$") + (name . "^\\* Racket REPL \\*$"))) + ("git" (or + (name . "^\\*magit: ") ;; this regxp could be better + (mode . magit-mode) + (mode . magit-diff-mode) + (mode . magit-log-mode) + (mode . magit-commit-mode) + (mode . magit-log-mode))) + ("planner" (or + (name . "^\\*Calendar\\*$") + (name . "^diary$") + (mode . muse-mode))) + ("emacs" (or + (name . "^\\*scratch\\*$") + (name . "^\\*Messages\\*$") + (name . "^\\*Backtrace\\*$") + (mode . package-menu-mode) + (mode . compilation-mode))) + ("weechat" (or + (name . "^\\*weechat.*\\*$") + (mode . weechat-mode))) + ("org" (or + (mode . org-mode) + (name . "^\\.org$") + (name . "^\\.org.gpg$"))) + ("gnus" (or + (mode . message-mode) + (mode . bbdb-mode) + (mode . mail-mode) + (mode . gnus-group-mode) + (mode . gnus-summary-mode) + (mode . gnus-article-mode) + (name . "^\\.bbdb$") + (name . "^\\.newsrc-dribble")))))) (add-hook 'ibuffer-mode-hook (lambda () @@ -220,6 +261,11 @@ (require 'google-contacts) ;; AUR: emacs-google-contacts (require 'google-contacts-gnus) ;; AUR: emacs-google-contacts +;; Setup nav +(require 'nav) ;; ELPA +(nav-disable-overeager-window-splitting) +(global-set-key "\C-cn" 'nav-toggle) + ;; setup html renderer w3m and external browser conkeror (require 'w3m-load) ;; AUR: emacs-w3m-cvs (setq browse-url-browser-function 'w3m-browse-url @@ -230,8 +276,14 @@ ;; setup magit for git (being used though elpa [auto-loaded]) ;;(require 'magit) ;; ELPA (global-set-key "\C-xS" 'magit-status) +(setq magit-commit-signoff t) -;; Setup PKGBUILD mode +;;setup vc-darcs ;; ELPA +(add-to-list 'vc-handled-backends 'DARCS) +(autoload 'vc-darcs-find-file-hook "vc-darcs") +(add-hook 'find-file-hooks 'vc-darcs-find-file-hook) + +;; Setup PKGBUILD mode ;; Community (archlinux) (autoload 'pkgbuild-mode "pkgbuild-mode.el" "PKGBUILD mode." t) (setq auto-mode-alist (append '(("/PKGBUILD$" . pkgbuild-mode)) auto-mode-alist)) @@ -239,6 +291,22 @@ (autoload 'php-mode "php-mode.el" "Php mode." t) ;; ELPA (setq auto-mode-alist (append '(("/*.\.php[345]?$" . php-mode)) auto-mode-alist)) +;; Setup zencoding-mode +(require 'emmet-mode) + +;; Disable C-j keybinding set by zencoding-mode and replace it with 'C-c j' +(define-key emmet-mode-keymap "\C-j" nil) +(define-key emmet-mode-keymap "\C-cj" 'emmet-expand-line) + +;; Add appropriate hooks to sgml-mode +(add-hook 'sgml-mode-hook 'emmet-mode) ;; Auto-start on any markup modes +(add-hook 'css-mode-hook 'emmet-mode) ;; enable Emmet's css abbreviation. +(add-hook 'emmet-mode-hook (lambda () (setq emmet-indentation 2))) ;; indent 2 spaces. + +;; Setup mmm-mode for multiple mode regions in the same buffer +;;(require 'mmm-mode) +;;(setq mmm-global-mode 'maybe) + ;; Set default lisp program (setq inferior-lisp-program "/usr/bin/sbcl") @@ -276,21 +344,24 @@ (define-key clojure-mode-map "\C-c\C-e" 'lisp-eval-last-sexp) (define-key clojure-mode-map "\C-x\C-e" 'lisp-eval-last-sexp))) -(eval-after-load "slime" - `(progn - (require 'assoc) ;; Built-in - (setq swank-clojure-classpath - (list "/usr/share/clojure/clojure.jar" - "/usr/share/clojure/clojure-contrib.jar" - "/usr/share/emacs/site-lisp/swank-clojure/src")) - (aput 'slime-lisp-implementations 'clojure - (list (swank-clojure-cmd) :init 'swank-clojure-init)))) +;; TODO: functionality needs to be re-written; assoc library obsolete +;; (eval-after-load "slime" +;; `(progn +;; (require 'assoc) ;; Built-in (OBSOLETE) +;; (setq swank-clojure-classpath +;; (list "/usr/share/clojure/clojure.jar" +;; "/usr/share/clojure/clojure-contrib.jar" +;; "/usr/share/emacs/site-lisp/swank-clojure/src")) +;; (aput 'slime-lisp-implementations 'clojure +;; (list (swank-clojure-cmd) :init 'swank-clojure-init)))) ;; Setup emacs-org-mode (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode)) (add-hook 'org-mode-hook 'turn-on-font-lock) ; not needed when global-font-lock-mode is on -(setq org-return-follows-link t) -(setq org-log-done 'time) +(setq org-return-follows-link t + org-log-done 'time + org-src-fontify-natively t + org-enforce-todo-dependencies t) ;; Add additional languages for org-babel (now part of org-mode) (org-babel-do-load-languages @@ -302,6 +373,9 @@ (global-set-key "\C-ca" 'org-agenda) (global-set-key "\C-cb" 'org-iswitchb) +;; Setup coq-mode ;; AUR: coq +(require 'coq) + ;; Setup haskell-mode ;; ELPA (add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode) (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) @@ -311,6 +385,20 @@ ;; Set inferior haskell default executable (setq haskell-program-name "/usr/bin/ghci") +;; Setup hlint ;; ELPA +;; (require 'flymake-hlint) +;; (add-hook 'haskell-mode-hook 'flymake-hlint-load) + +;; Setup ghc (requires ghc-mod from cabal) ;; ELPA +(autoload 'ghc-init "ghc" nil t) +(add-hook 'haskell-mode-hook (lambda () (ghc-init))) + +;; Setup ensime ;; AUR +(add-to-list 'load-path "/usr/share/ensime/elisp") +(add-to-list 'exec-path "/usr/share/ensime") +(require 'ensime) +(add-hook 'scala-mode-hook 'ensime-scala-mode-hook) + ;; Setup python-mode auto-required by package.el (ELPA) (setq auto-mode-alist (append '(("/*.\.py$" . python-mode)) auto-mode-alist)) @@ -334,15 +422,22 @@ ;; Setup geiser (require 'geiser) ;; ELPA -;; Setup quack +;; Setup auto-completion for geiser (ELPA) +(require 'ac-geiser) +(add-hook 'geiser-mode-hook 'ac-geiser-setup) +(add-hook 'geiser-repl-mode-hook 'ac-geiser-setup) +(eval-after-load "auto-complete" + '(add-to-list 'ac-modes 'geiser-repl-mode)) + +;; Setup quack (require 'quack) ;; ELPA ;; Setup paredit (require 'paredit) ;; ELPA -(defvar paredit-hooks '(lisp-mode-hook lisp-interaction-mode-hook emacs-lisp-mode-hook scheme-mode-hook c-mode-hook c++-mode-hook python-mode-hook)) +(defvar lispy-langs-hooks '(lisp-mode-hook lisp-interaction-mode-hook emacs-lisp-mode-hook scheme-mode-hook c-mode-hook c++-mode-hook python-mode-hook)) -;; Apply paredit-mode to modes listed in paredit-hooks -(activate-mode-with-hooks (lambda () (paredit-mode 1)) paredit-hooks) +;; Apply paredit-mode to modes listed in lispy-langs-hooks +(activate-mode-with-hooks (lambda () (paredit-mode 1)) lispy-langs-hooks) ;; Paredit binds to C-j globally and thus disables the binding to ;; eval-print-last-sexp in emacs-lisp-mode (e.g *scratch*, etc..) @@ -351,7 +446,15 @@ (define-key emacs-lisp-mode-map "\C-xj" 'eval-print-last-sexp))) ;; Highlight paren's in given modes [to apply globally do (show-paren-mode 1)] -(activate-mode-with-hooks (lambda () (show-paren-mode 1)) paredit-hooks) +(activate-mode-with-hooks (lambda () (show-paren-mode)) lispy-langs-hooks) + +;; Setup rainbow-delimiters *BROKEN* +(require 'rainbow-delimiters) ;; ELPA +;;(activate-mode-with-hooks (lambda () (with-current-buffer buf (rainbow-delimiters-mode))) lispy-langs-hooks) + +;; Setup rainbow-mode ;; ELPA +(require 'rainbow-mode) +(add-hook 'css-mode-hook 'rainbow-mode) ;; upcomming functionallity: toggle paredit-mode due to annoying things like wrapping parens when a mistake is made ;; known issue..if paredit-mode is turned on when there are unbalanced parens an error is reported @@ -388,6 +491,28 @@ ;; (add-hook 'python-mode-hook 'hs-org/minor-mode) ;; (add-hook 'scheme-mode-hook 'hs-org/minor-mode) +;; Setup isearch+ +(require 'isearch+) + +;; Setup ace-jump-mode +(autoload + 'ace-jump-mode + "ace-jump-mode" + "Emacs quick move minor mode" + t) +(define-key global-map (kbd "C-c SPC") 'ace-jump-mode) + +;; Setup expand-region ;; ELPA +(require 'expand-region) +(global-set-key (kbd "C-=") 'er/expand-region) + +;; Setup multiple-cursons ;; ELPA +(require 'multiple-cursors) +(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines) +(global-set-key (kbd "C->") 'mc/mark-next-like-this) +(global-set-key (kbd "C-<") 'mc/mark-previous-like-this) +(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this) + ;; Setup fancy auto-complete (require 'auto-complete-config) ;; ELPA ;;(add-to-list 'ac-dictionary-directories "/usr/share/emacs/site-lisp/auto-complete/ac-dict") @@ -396,7 +521,7 @@ ;; Setup yasnippet-mode (not yasnippet-bundle) (require 'yasnippet) ;; ELPA ;;(yas/initialize) -(yas/load-directory "~/.emacs.d/elpa/yasnippet-20120718/snippets") +(yas/load-directory "~/.emacs.d/elpa/yasnippet-20131026.1440/snippets") ;; Enable flyspell-mode (ac-flyspell-workaround) @@ -414,7 +539,7 @@ (setq auto-insert-directory (concat (getenv "HOME") "/.emacs.d/templates/")) (setq auto-insert-alist '(("\\.c$" . ["c-template.c" auto-update-generic-template]) - ("\\.\(cc\|cpp\)$" . ["cpp-template.c" auto-update-generic-template]) + ("\\.cc\\|cpp$" . ["cpp-template.c" auto-update-generic-template]) ("\\.php$" . ["php-template.php" auto-update-generic-template]) ("\\.rb$" . ["ruby-template.rb" auto-update-generic-template]) ("\\.lua$" . ["lua-template.lua" auto-update-generic-template]) @@ -428,7 +553,12 @@ ("\\.hs$" . ["haskell-template.hs" auto-update-generic-template]) ("\\.ml$" . ["ocaml-template.ml" auto-update-generic-template]) ("\\.sml$" . ["sml-template.sml" auto-update-generic-template]) - ("\\.py$" . ["python-template.py" auto-update-generic-template]))) + ("\\.py$" . ["python-template.py" auto-update-generic-template]) + ("\\.java$" . ["java-template.java" auto-update-generic-template]) + ("\\.scala$" . ["scala-template.scala" auto-update-generic-template]) + ("\\.htm\\|html$" . ["html-template.html" auto-update-generic-template]) + ("\\.js$" . ["java-script-template.js" auto-update-generic-template]) + ("\\.css$" . ["css-template.css" auto-update-generic-template]))) (setq auto-insert 'other) (defun auto-update-generic-template () @@ -464,20 +594,45 @@ (interactive) (insert (format-time-string "%b %e, %Y" (current-time)))) -(defun open-scratch-buffer () - "Opens the scratch buffer; if none exists creates one." - (interactive) - (let ((scratch-buffer (get-buffer "*scratch*"))) - (if (null scratch-buffer) (progn (get-buffer-create "*scratch*") - (insert initial-scratch-message) - (lisp-interaction-mode))) - (switch-to-buffer "*scratch*"))) +;; (defun open-scratch-buffer () +;; "Opens the scratch buffer; if none exists creates one." +;; (interactive) +;; (let ((scratch-buffer (get-buffer "*scratch*"))) +;; (if (null scratch-buffer) (with-current-buffer (get-buffer-create "*scratch*") +;; (insert initial-scratch-message) +;; (lisp-interaction-mode))) +;; (switch-to-buffer "*scratch*"))) + +(defvar scratch-buffer-alist '((python-mode . "# This buffer is for notes you don't want to save, and for Lisp evaluation.\n# If you want to create a file, visit that file with C-x C-f,\n# then enter the text in that file's own buffer."))) + +(defun open-scratch-buffer (&optional buf-mode buf-name msg) + "Opens a scratch buffer; if none exists creates one. When called with the universal argument (C-u) will ask what mode to use for the scratch buffer." + (interactive + (cond ((equal current-prefix-arg nil) ;; universal argument not called + (list initial-major-mode "*scratch*" initial-scratch-message)) + ((equal current-prefix-arg '(4)) ;; Universal argument called (C-u) + (let* ((buf-mode (read-command "Mode: " initial-major-mode)) + (buf-name (if (equal buf-mode initial-major-mode) + "*scratch*" + (concat "*scratch:" (symbol-name buf-mode) "*"))) + (msg "")) + (list buf-mode buf-name msg))))) + (let* ((scratch-buffer (get-buffer buf-name))) + ;; check if the scratchpad is open. If not create it, change its mode and insert message text at the top of the buffer + (if (null scratch-buffer) + (with-current-buffer (get-buffer-create buf-name) + (funcall buf-mode) + (insert msg))) + (switch-to-buffer buf-name))) ;; Bind a key to grab a scratchpad -(global-set-key "\C-x4s" 'open-scratch-buffer) +(define-key ctl-x-4-map "s" 'open-scratch-buffer) +;; TODO: make a function to toggle the eshell; given a the universal argument the following can occur: +;; - if numerical then opens the nth scratch buffer "*eshell*" +;; - if no args then open a new eshell ;; Bind a key to switch to eshell -(global-set-key "\C-x4e" 'eshell) +(define-key ctl-x-4-map "e" 'eshell) ;; Toggles windows split orientation of 2 adjecent windows ;; Thanks to http://www.emacswiki.org/cgi-bin/wiki?ToggleWindowSplit @@ -532,9 +687,17 @@ ;; Commands that require a little more then a dumb-term (setq eshell-visual-commands '("vi" "screen" "top" "less" "more" "lynx" "ncftp" "vim" "ncmpcpp" "irssi" "mc" "alsamixer" "/usr/bin/sudo")) +(defun eshell/catbuf (buffer-name) + "Given a buffer-name returns the contents of said buffer" + (interactive "bBuffer: ") + (save-excursion + (let ((code-buf (get-buffer buffer-name))) + (if (null code-buf) (concat "The buffer given \"" buffer-name "\" does not exist") + (set-buffer code-buf) + (buffer-string))))) (defun eshell/find-file-ext (fp) - "Finds a single file or a list of files and returns a list of their respective buffers" + "Finds a single file or a list of files matching a regxp and returns a list of their respective buffers" (interactive) (if (listp fp) (mapcar #'find-file fp) (list (find-file fp)))) @@ -555,6 +718,12 @@ consisting of lists of buffers opened by each respective FP argument." ;; (add-to-list 'load-path "~/.emacs.d/el-get/el-get") +;; *TODO*: PLAIN TEXT PASSWORD === BAD +;; Setup weechat client (note requires weechat relay (port 9000) +(require 'weechat) +(if (daemonp) + (weechat-connect "localhost" 9000 "linux:netbeans" nil)) + ;; *BROKEN*..can't connect to dbus for some reason? ;; ;; Setup el-get ;; (unless (require 'el-get nil t) @@ -574,9 +743,10 @@ consisting of lists of buffers opened by each respective FP argument." ;; If there is more than one, they won't work right. '(ansi-color-names-vector ["#2d3743" "#ff4242" "#74af68" "#dbdb95" "#34cae2" "#008b8b" "#00ede1" "#e1e1e0"]) '(custom-safe-themes (quote ("36a309985a0f9ed1a0c3a69625802f87dee940767c9e200b89cdebdb737e5b29" "dc8693659115ea453f849f47509b903da3801b5f1521a73fa31556a9a3558517" default))) + '(fill-column 95) '(highlight-current-line-globally t nil (highlight-current-line)) '(highlight-current-line-ignore-regexp "Faces\\|Colors\\| \\*Mini\\|\\**\\*") - '(magit-commit-signoff t) + '(magit-commit-signoff t t) '(org-agenda-files (quote ("~/.org/tech/notes.org" "~/.org/todo/rekahsoft-mini-todo.org" "~/.org/todo/rekahsoft-todo.org" "~/.org/todo/general.org" "~/.org/todo/work.org"))) '(quack-default-program "racket") '(quack-fontify-style (quote plt)) diff --git a/.emacs.d/templates/php-template.php b/.emacs.d/templates/php-template.php index b544a40..a04a5f1 100644 --- a/.emacs.d/templates/php-template.php +++ b/.emacs.d/templates/php-template.php @@ -1,3 +1,5 @@ + diff --git a/.eshell/alias b/.eshell/alias index 1bd6b41..8212ebc 100644 --- a/.eshell/alias +++ b/.eshell/alias @@ -1,5 +1,5 @@ -alias ms magit-status $1 -alias mss magit-status . -alias ssudo /usr/bin/sudo -alias d dired $1 alias ffo find-file-other-window $1 +alias d dired $1 +alias ssudo /usr/bin/sudo +alias mss magit-status . +alias ms magit-status $1 diff --git a/.ghci b/.ghci index eb9d82c..1153763 100644 --- a/.ghci +++ b/.ghci @@ -1 +1,11 @@ +-- Setup prompt :set prompt "ghci> " + +-- Setup use of hoogle through ghci +:def hoogle \str -> return $ ":! hoogle --count=15 \"" ++ str ++ "\"" + +-- Enable almost all warnings by default +:set -Wall + +-- Enable multi-line mode; shortform for -{ ... }- +:set +m diff --git a/.gnus b/.gnus index baa4295..43f7bcb 100644 --- a/.gnus +++ b/.gnus @@ -18,7 +18,7 @@ (setq smtpmail-debug-info t) -(setq smtpmail-stream-type nil) ;; If using TLS/SSL. Use C-h v smtpmail-stream-type RET to see possible values +(setq smtpmail-stream-type 'starttls) ;; If using TLS/SSL. Use C-h v smtpmail-stream-type RET to see possible values (setq smtp-accounts '(("collin.doering@gmail.com" "Collin J. Doering" "smtp.gmail.com") ("rekahsoft@gmail.com" "rekahsoft" "smtp.gmail.com"))) @@ -32,10 +32,11 @@ when (string-match addr from) do (setq user-mail-address addr user-full-name fname - smtpmail-smtp-server server)))) + smtpmail-smtp-server server + smtpmail-smtp-user addr)))) (defadvice smtpmail-via-smtp - (before change-smtp-by-message-from-field (recipient buffer)) + (before change-smtp-by-message-from-field (recipient buffer &optional ask) activate) (with-current-buffer buffer (my-change-smtp))) (ad-activate 'smtpmail-via-smtp) @@ -51,6 +52,15 @@ ("rekahsoft.mail@gmail.com" (address "rekahsoft.mail@gmail.com") (name "RekahSoft")) + ("collin.doering@rekahsoft.ca" + (address "collin.doering@rekahsoft.ca") + (name "Collin J. Doering")) + ("support@rekahsoft.ca" + (address "support@rekahsoft.ca") + (name "Rekahsoft Support")) + ("info@rekahsoft.ca" + (address "info@rekahsoft.ca") + (name "RekahSoft Info")) )) ;; set primary select method.. @@ -68,6 +78,21 @@ (nnimap-address "imap.gmail.com") (nnimap-server-port 993) (nnimap-stream ssl) + (nnimap-authinfo-file "~/.authinfo.gpg")) + (nnimap "collin.doering" + (nnimap-address "hp131.hostpapa.com") + (nnimap-server-port 993) + (nnimap-stream ssl) + (nnimap-authinfo-file "~/.authinfo.gpg")) + (nnimap "info" + (nnimap-address "hp131.hostpapa.com") + (nnimap-server-port 993) + (nnimap-stream ssl) + (nnimap-authinfo-file "~/.authinfo.gpg")) + (nnimap "support" + (nnimap-address "hp131.hostpapa.com") + (nnimap-server-port 993) + (nnimap-stream ssl) (nnimap-authinfo-file "~/.authinfo.gpg")))) ;; (nnimap "rekahsoft.mail" diff --git a/.mpdconf b/.mpdconf index 4796044..83e1585 100644 --- a/.mpdconf +++ b/.mpdconf @@ -169,11 +169,11 @@ auto_update "yes" # If this setting is set, MPD will require password authorization. The password # can setting can be specified multiple times for different password profiles. # -#password "password@read,add,control,admin" +password "patchMeIn@read,add,control,admin" # # This setting specifies the permissions a user has who has not yet logged in. # -#default_permissions "read" +default_permissions "read,add" # ############################################################################### @@ -225,29 +225,31 @@ input { ## mixer_device "/dev/mixer" # optional ## mixer_control "PCM" # optional #} + # # An example of a shout output (for streaming to Icecast): # -#audio_output { -# type "shout" -# encoding "ogg" # optional -# name "My Shout Stream" -# host "localhost" -# port "8000" -# mount "/mpd.ogg" -# password "hackme" -# quality "5.0" -# bitrate "128" -# format "44100:16:1" -## protocol "icecast2" # optional -## user "source" # optional -## description "My Stream Description" # optional -## url "http://example.com" # optional -## genre "jazz" # optional -## public "no" # optional -## timeout "2" # optional -## mixer_type "software" # optional -#} +# audio_output { +# type "shout" +# # encoding "ogg" # optional +# name "RekahSoft Shout Stream" +# host "localhost" +# port "8000" +# mount "/mpd.ogg" +# password "" +# quality "5.0" +# # bitrate "128" +# format "44100:16:1" +# # protocol "icecast2" # optional +# # user "source" # optional +# # description "My Stream Description" # optional +# # url "http://example.com" # optional +# # genre "jazz" # optional +# # public "no" # optional +# # timeout "2" # optional +# # mixer_type "software" # optional +# } + # # An example of a recorder output: # @@ -260,20 +262,22 @@ input { # bitrate "128" # do not define if quality is defined # format "44100:16:1" #} + # # An example of a httpd output (built-in HTTP streaming server): # -#audio_output { -# type "httpd" -# name "My HTTP Stream" -# encoder "vorbis" # optional, vorbis or lame -# port "8000" -# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 -## quality "5.0" # do not define if bitrate is defined -# bitrate "128" # do not define if quality is defined -# format "44100:16:1" -# max_clients "0" # optional 0=no limit -#} +audio_output { + type "httpd" + name "RekahSoft HTTP Stream" + encoder "vorbis" # optional, vorbis or lame + port "8000" + bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 +# quality "5.0" # do not define if bitrate is defined + bitrate "128" # do not define if quality is defined + format "44100:16:1" + max_clients "5" # optional 0=no limit +} + # # An example of a pulseaudio output (streaming to a remote pulseaudio server) # diff --git a/.ncmpcpp/config b/.ncmpcpp/config index 7722cf9..3735711 100644 --- a/.ncmpcpp/config +++ b/.ncmpcpp/config @@ -7,21 +7,22 @@ # ## set it in order to make tag editor and renaming files work properly # -mpd_host = "localhost" +mpd_host = "patchMeIn@localhost" # mpd_port = "6600" # -mpd_music_dir = "/media/md-isk/Music" +mpd_music_dir = "/media/dm/Music" # #mpd_connection_timeout = "5" -execute_on_song_change = "notify-send -t 3000 -i \"/usr/share/icons/gnome/scalable/mimetypes/audio-x-generic-symbolic.svg\" \"$(ncmpcpp --now-playing %t)\" \"$(ncmpcpp --now-playing '%b - %a')\"" +execute_on_song_change = "notify-send -t 3000 -i \"/usr/share/icons/gnome/scalable/mimetypes/audio-x-generic-symbolic.svg\" \"$(ncmpcpp --now-playing '{%t\n%b - %a}|{%f}')\"" playlist_display_mode = "columns" browser_display_mode = "columns" search_engine_display_mode = "columns" fancy_scrolling = "yes" +user_interface = "alternative" -visualizer_fifo_path = "/tmp/mpd.fifo" +visualizer_fifo_path = "/home/collin/.mpd/mpd.fifo" visualizer_output_name = "RekahSoft FIFO" visualizer_sync_interval = "30" -visualizer_type = "spectrum" (spectrum/wave) +visualizer_type = "wave" # (spectrum/wave) diff --git a/.screenrc b/.screenrc index b387ffc..2a0b425 100644 --- a/.screenrc +++ b/.screenrc @@ -1,8 +1,9 @@ # Open several named screens at startup and run different commands in each screen -t zsh 0 zsh -screen -t irssi 1 irssi -screen -t ncmpcpp 2 ncmpcpp -screen -t alsamixer 3 alsamixer +screen -t weechat 1 weechat-curses + +#screen -t ncmpcpp 2 ncmpcpp +#screen -t alsamixer 3 alsamixer #screen -t mc 4 mc #screen -t cmus 5 cmus #screen -t nvlc 5 nvlc diff --git a/.xbindkeysrc b/.xbindkeysrc index 3ba209c..6cadd72 100644 --- a/.xbindkeysrc +++ b/.xbindkeysrc @@ -15,55 +15,61 @@ # play/pause key = toggle play pause #"~/.bin/toggle-pp.py" #"cmus-remote --pause" -"mpc toggle" +"mpc -h patchMeIn@localhost toggle" m:0x10 + c:172 XF86AudioPlay #"cmus-remote --pause" -"mpc toggle" +"mpc -h patchMeIn@localhost toggle" m:0x58 + c:33 Alt+Mod2+Mod4 + p # next key = next song #"cmus-remote --next" -"mpc next" +"mpc -h patchMeIn@localhost next" m:0x10 + c:171 XF86AudioNext #"cmus-remote --next" -"mpc next" +"mpc -h patchMeIn@localhost next" m:0x58 + c:60 Alt+Mod2+Mod4 + period # prev key = previous song #"cmus-remote --prev" -"mpc prev" +"mpc -h patchMeIn@localhost prev" m:0x10 + c:173 XF86AudioPrev #"cmus-remote --prev" -"mpc prev" +"mpc -h patchMeIn@localhost prev" m:0x58 + c:59 Alt+Mod2+Mod4 + comma # volume up key = Master volume up 1 -"amixer set Master 1+" +#"amixer set Master 1+" +"pulseaudio-ctl up" m:0x10 + c:123 XF86AudioRaiseVolume -"amixer set Master 1+" +#"amixer set Master 1+" +"pulseaudio-ctl up" m:0x58 + c:30 Alt+Mod2+Mod4 + u # volume down key = Master volume down 1 -"amixer set Master 1-" +#"amixer set Master 1-" +"pulseaudio-ctl down" m:0x10 + c:122 XF86AudioLowerVolume -"amixer set Master 1-" +#"amixer set Master 1-" +"pulseaudio-ctl down" m:0x58 + c:40 Alt+Mod2+Mod4 + d # mute volume key = mute alsa Master channel -"amixer set Master toggle" +#"amixer set Master toggle" +"pulseaudio-ctl mute" m:0x10 + c:121 XF86AudioMute -"amixer set Master toggle" +#"amixer set Master toggle" +"mute_toggle" m:0x58 + c:58 Alt+Mod2+Mod4 + m diff --git a/.xinitrc b/.xinitrc index 561cb3f..a025719 100755 --- a/.xinitrc +++ b/.xinitrc @@ -32,7 +32,7 @@ function init_local_session() { # * emacsd # * trayer *disabled* .. # * udiskie - systemd --user & + #systemd --user & #DEPRECIATED..logind calls systemd --user automatically # Set a desktop background nitrogen --restore & diff --git a/.xmobarrc b/.xmobarrc index 99d2423..407355f 100644 --- a/.xmobarrc +++ b/.xmobarrc @@ -22,8 +22,8 @@ Config { font = "-*-terminus-*-*-*-*-35-*-*-*-*-*-*-u" , fgColor = "#00FFFF" , position = TopW L 100 , lowerOnStart = True - , commands = [ Run Network "eno1" ["-L","0","-H","32","-l","green","--normal","orange","--high","red"] 40 --- , Run Com "/home/collin/.bin/vol.sh" [] "vol" 15 + , commands = [ Run DynNetwork ["-L","0","-H","32","-l","green","--normal","orange","--high","red"] 40 + , Run Com "/home/collin/.bin/vol.sh" [] "vol" 10 , Run MultiCpu ["-t","Cpu | cpu0: | cpu1: | cpu2: | cpu3: ","-L","3","-H","50","--high","#f0c040"] 10 , Run Memory ["-t","Mem: %","-l","green","--normal","orange","--high","red"] 40 , Run Swap ["-t","Swap: %","-l","green","--normal","orange","--high","red"] 60 @@ -35,5 +35,5 @@ Config { font = "-*-terminus-*-*-*-*-35-*-*-*-*-*-*-u" ] , sepChar = "%" , alignSep = "}{" - , template = " %StdinReader% }{ %multicpu% %memory% | %swap% | %eno1% | %uptime% | %CYKF% | %date% | " + , template = " %StdinReader% }{ %multicpu% %memory% | %swap% | %dynnetwork% | %vol% | %uptime% | %CYKF% | %date% | " } diff --git a/.xmonad/xmonad.hs b/.xmonad/xmonad.hs index 8d7c187..889a718 100644 --- a/.xmonad/xmonad.hs +++ b/.xmonad/xmonad.hs @@ -22,12 +22,22 @@ -- http://www.haskell.org/haskellwiki/Xmonad/Notable_changes_since_0.8 -- + +import System.IO +import System.Exit +import Data.Monoid +import qualified Data.Map as M + import XMonad import XMonad.Actions.UpdatePointer import XMonad.Actions.WindowBringer -import Data.Monoid -import System.Exit +import XMonad.Actions.GridSelect +import XMonad.Actions.FloatKeys + import XMonad.Util.Run(spawnPipe) +import XMonad.Util.Dmenu +import XMonad.Util.NamedScratchpad + import XMonad.Layout.NoBorders(noBorders,smartBorders) import XMonad.Layout.ResizableTile import XMonad.Layout.Grid @@ -35,20 +45,16 @@ import XMonad.Layout.ToggleLayouts import XMonad.Layout.SubLayouts import XMonad.Layout.WindowNavigation import XMonad.Layout.BoringWindows -import XMonad.Util.NamedScratchpad -import XMonad.Actions.GridSelect -import XMonad.Actions.FloatKeys -import XMonad.Util.Dmenu import XMonad.Layout.Tabbed + import XMonad.Hooks.ManageDocks import XMonad.Hooks.DynamicLog import XMonad.Hooks.UrgencyHook import XMonad.Hooks.ManageHelpers import XMonad.Hooks.FadeInactive (setOpacity) -import System.IO import qualified XMonad.StackSet as W -import qualified Data.Map as M + -- The preferred terminal program, which is used in a binding below and by -- certain contrib modules. @@ -172,7 +178,7 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ -- Use this binding with avoidStruts from Hooks.ManageDocks. -- See also the statusBar function from Hooks.DynamicLog. -- - -- , ((modm , xK_b ), sendMessage ToggleStruts) + , ((modm , xK_b ), sendMessage ToggleStruts) -- Quit xmonad (no questions) , ((modm .|. shiftMask .|. controlMask, xK_End), io (exitWith ExitSuccess)) @@ -181,7 +187,7 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ , ((modm .|. shiftMask, xK_q), spawn "~/.bin/xmonadClose.sh") -- Unmount automounted disks by udiskie - , ((modm .|. shiftMask .|. controlMask, xK_u), spawn "udiskie-umount -as") + , ((modm .|. shiftMask .|. controlMask, xK_u), spawn "udiskie-umount -as && notify-send 'External media safely disconnected!'") --, ((modm .|. shiftMask, xK_w ), if (dmenu "-b -i -nb '#040404' -nf '#525252' -sf '#ffa0ff' -sb '#000000' -p \"Do you really want to close XMonad? [yes/no]: \"") == "yes" then (sendMessage Expand) else (sendMessage Shrink)) @@ -214,9 +220,6 @@ myGenericKeys = -- Lock the screen using xscreensaver [ ((modm .|. shiftMask, xK_v), spawn "xscreensaver-command -lock") - - -- Key binding to toggle the gap for the bar. - , ((modm, xK_b), sendMessage ToggleStruts) -- Toggle full-screen mode , ((modm .|. controlMask, xK_space), sendMessage (Toggle "Full")) @@ -257,8 +260,8 @@ myGenericKeys = -- Launch MC scratchpad , ((modm .|. controlMask, xK_3), namedScratchpadAction scratchpads "mc-scratch") - -- Launch MC scratchpad - , ((modm .|. controlMask, xK_4), namedScratchpadAction scratchpads "pavucontrol-scratch") + -- Launch ncmpcpp scratchpad + , ((modm .|. controlMask, xK_4), namedScratchpadAction scratchpads "ncmpcpp-scratch") -- Select window from dmenu and go to the workspace its on , ((modm .|. shiftMask, xK_g), gotoMenuArgs ["-i","-nb", "#040404","-nf","#00FFFF","-sf","#ffa0ff","-sb","#000000"]) @@ -393,63 +396,45 @@ myManageHook = composeAll , resource =? "Steam" --> doCenterFloat , title =? "Xnest" --> doCenterFloat , resource =? "pavucontrol" --> doMaxFloat - , resource =? "emacs-scratch" --> doMaxFloat - , resource =? "mc-scratch" --> doMaxFloat , resource =? "qemu-system-x86_64" --> doFullFloat - , resource =? "hl2_linux" --> doFullFloat + , resource =? "Halo.exe" --> doCenterFloat + -- , resource =? "UnrealTournament.exe" --> doCenterFloat + -- , resource =? "hl2_linux" --> doFullFloat , isFullscreen --> (doF W.focusDown <+> doFullFloat) , resourceIsOneOf ["emacs","gvim"] --> ask >>= (liftX . flip setOpacity (13/16)) >> idHook , resource =? "desktop_window" --> doIgnore ] <+> namedScratchpadManageHook scratchpads <+> manageDocks -- NamedScratchPad Hook scratchpads = [ NS "emacs-scratch" spawnEmacsScratch findEmacsScratch manageEmacsScratch - , NS "maintenance-terminal" spawnMaintenanceTerminal findMaintenanceTerminal manageMaintenanceTerminal - , NS "screen-terminal" spawnScreenTerminal findScreenTerminal manageScreenTerminal - , NS "mc-scratch" spawnMcScratch findMcScratch manageMcScratch - , NS "pavucontrol-scratch" spawnPavucontrolScratch findPavucontrolScratch managePavucontrolScratch] - where - findEmacsScratch = resource =? "emacs-scratch" - findMaintenanceTerminal = resource =? "scratchpad" - findScreenTerminal = resource =? "screen-scratch" - findMcScratch = resource =? "mc-scratch" - findPavucontrolScratch = resource =? "pavucontrol" + , NS "maintenance-terminal" spawnMaintenanceTerminal findMaintenanceTerminal manageMaintenanceTerminal + , NS "screen-terminal" spawnScreenTerminal findScreenTerminal manageScreenTerminal + , NS "mc-scratch" spawnMcScratch findMcScratch manageMcScratch + , NS "ncmpcpp-scratch" spawnNcmpcppScratch findNcmpcppScratch manageNcmpcppScratch] + where + findEmacsScratch = resource =? "emacs-scratch" + findMaintenanceTerminal = resource =? "scratchpad" + findScreenTerminal = resource =? "screen-scratch" + findMcScratch = resource =? "mc-scratch" + findNcmpcppScratch = resource =? "ncmpcpp-scratch" - spawnEmacsScratch = myTerminal ++ " -name emacs-scratch +tr -pe -tabbedex -e emacsclient -nw" - spawnMaintenanceTerminal = myTerminal ++ " -name scratchpad" - spawnScreenTerminal = myTerminal ++ " -name screen-scratch -bg black" - spawnMcScratch = myTerminal ++ " -name mc-scratch +tr -pe -tabbedex -e mc" - spawnPavucontrolScratch = "pavucontrol" + spawnEmacsScratch = myTerminal ++ " -name emacs-scratch +tr -pe -tabbedex -e emacsclient -nw" + spawnMaintenanceTerminal = myTerminal ++ " -name scratchpad" + spawnScreenTerminal = myTerminal ++ " -name screen-scratch -bg black" + spawnMcScratch = myTerminal ++ " -name mc-scratch +tr -pe -tabbedex -e mc" + spawnNcmpcppScratch = myTerminal ++ " -name ncmpcpp-scratch +tr -pe -tabbedex -e ncmpcpp" - manageEmacsScratch = customFloating $ W.RationalRect l t w h - where - h = 0.65 -- terminal height (%) - w = 0.55 -- terminal width (%) - t = 1 - h -- distance from top edge (%) - l = 1 - w -- distance from left edge (%) - manageMaintenanceTerminal = customFloating $ W.RationalRect l t w h - where - h = 0.33 -- terminal height (%) - w = 1 -- terminal width (%) - t = 1 - h -- distance from top edge (%) - l = 1 - w -- distance from left edge (%) - manageScreenTerminal = customFloating $ W.RationalRect l t w h - where - h = 0.98 -- terminal height (%) - w = 1 -- terminal width (%) - t = 1 - h -- distance from top edge (%) - l = 1 - w -- distance from left edge (%) - manageMcScratch = customFloating $ W.RationalRect l t w h - where - h = 0.65 -- terminal height (%) - w = 0.55 -- terminal width (%) - t = 1 - h -- distance from top edge (%) - l = 1 - w -- distance from left edge (%) - managePavucontrolScratch = customFloating $ W.RationalRect l t w h - where - h = 0.80 -- terminal height (%) - w = 0.55 -- terminal width (%) - t = 1 - h -- distance from top edge (%) - l = 1 - w -- distance from left edge (%) + manageEmacsScratch = customFloating $ W.RationalRect 0.10 0.10 0.80 0.80 + manageMaintenanceTerminal = customFloating $ W.RationalRect 0 0.66 1 0.34 + manageScreenTerminal = customFloating $ W.RationalRect 0 0.015 1 0.985 + manageMcScratch = customFloating $ W.RationalRect 0.20 0.15 0.60 0.70 + manageNcmpcppScratch = customFloating $ W.RationalRect 0.225 0.10 0.55 0.80 + + -- manageScreenTerminal = customFloating $ W.RationalRect l t w h + -- where + -- h = 1 -- terminal height (%) + -- w = 1 -- terminal width (%) + -- t = 1 - h -- distance from top edge (%) + -- l = 1 - w -- distance from left edge (%) ------------------------------------------------------------------------ -- Event handling diff --git a/.zshrc b/.zshrc index 704b7d4..91ae87d 100644 --- a/.zshrc +++ b/.zshrc @@ -20,11 +20,17 @@ bindkey -e # Check for an interactive session [ -z "$PS1" ] && return -# A small helper function to disable unclutter before running a command -function disable_unclutter_run() { - systemctl --user stop unclutter - eval "$*" - systemctl --user start unclutter +# A function that given a unit (run under the systemd user instance) and a command runs the command while temporarily suspending the given unit (service) +function disable_unit_run() { + unit="$1" + shift + if [ "$(systemctl --user is-enabled $unit)" = "enabled" ]; then + systemctl --user disable "$unit" >> /dev/null + eval "$*" + systemctl --user enable "$unit" >> /dev/null + else + eval "$*" + fi } # Alias' to make command output prettier (use color with some commands by default) @@ -33,15 +39,15 @@ alias grep='grep --color=auto' alias fgrep='fgrep --color-auto' alias egrep='egrep --color-auto' alias ncmpc='ncmpc -c' -alias pacman='pacman-color' -alias spacman='sudo pacman-color' +alias spacman='sudo pacman' # Alias' to make some commands a little less terse alias skreen='screen -c /dev/null' alias tranr='transmission-remote' +alias ctl='systemctl' alias ctlu='systemctl --user' alias sctl='sudo systemctl' -alias qemu='disable_unclutter_run qemu-system-x86_64 -enable-kvm' +alias qemu='disable_unit_run unclutter qemu-system-x86_64 -enable-kvm' alias s='sudo' # Shortcuts for port-knocking on rekahsoft-mini *DEPRECIATED* @@ -74,7 +80,7 @@ stty stop undef # * mathematica / tools # * nxclient / associated tools # * maven tools -export PATH=${PATH}:/usr/local/bin:/opt/maven/bin:/opt/NX/bin:/home/collin/.cabal/bin:/home/collin/.bin +export PATH=${PATH}:/opt/maven/bin:/opt/NX/bin:$HOME/.cabal/bin:$HOME/.gem/ruby/2.0.0/bin:$HOME/.bin # start keychain eval `keychain --eval --timeout 10 --quiet --agents ssh id_rsa`