diff --git a/dotfiles/config/.gitignore b/dotfiles/config/.gitignore
index e9eec419..a224078a 100644
--- a/dotfiles/config/.gitignore
+++ b/dotfiles/config/.gitignore
@@ -37,3 +37,4 @@
/user-dirs.locale
/vlc/
/xfce4/
+/Popcorn-Time/
diff --git a/dotfiles/fonts.conf b/dotfiles/config/fontconfig/fonts.conf
similarity index 88%
rename from dotfiles/fonts.conf
rename to dotfiles/config/fontconfig/fonts.conf
index 23479d03..92d8d7b2 100644
--- a/dotfiles/fonts.conf
+++ b/dotfiles/config/fontconfig/fonts.conf
@@ -19,7 +19,7 @@
roboto mono
- Ubuntu
+ Roboto
~/.fonts
diff --git a/dotfiles/config/gtk-3.0/settings.ini b/dotfiles/config/gtk-3.0/settings.ini
index 98617029..0ff553c8 100644
--- a/dotfiles/config/gtk-3.0/settings.ini
+++ b/dotfiles/config/gtk-3.0/settings.ini
@@ -6,15 +6,14 @@ gtk-fallback-icon-theme=gnome
gtk-icon-theme-name=Numix
gtk-font-name=Roboto 11
gtk-cursor-theme-name=Paper
-gtk-cursor-theme-size=24
-gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
+gtk-cursor-theme-size=0
+gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
-gtk-button-images=0
-gtk-menu-images=0
+gtk-button-images=1
+gtk-menu-images=1
gtk-enable-event-sounds=1
-gtk-enable-input-feedback-sounds=0
+gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
gtk-xft-hinting=1
-gtk-xft-hintstyle=hintslight
+gtk-xft-hintstyle=hintfull
gtk-xft-rgba=rgb
-gtk-modules=canberra-gtk-module
diff --git a/dotfiles/config/systemd/user/mopidy.service b/dotfiles/config/systemd/user/mopidy.service
new file mode 100644
index 00000000..90889c17
--- /dev/null
+++ b/dotfiles/config/systemd/user/mopidy.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=mopidy
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/env mopidy
+ExecStop=/usr/bin/pkill mopidy
+
+[Install]
+WantedBy=wm.target
diff --git a/dotfiles/emacs.d/README.org b/dotfiles/emacs.d/README.org
index 006d157c..e5abaf2b 100644
--- a/dotfiles/emacs.d/README.org
+++ b/dotfiles/emacs.d/README.org
@@ -9,8 +9,13 @@
#+HTML_HEAD:
* About
-This README is a literate version of my emacs configuration, but it
-also serves as the README for my dotfiles.
+This is my emacs configuration in literate form. It aspires to be like the
+incredibly well commented literate configurations of [[http://pages.sachachua.com/.emacs.d/Sacha.html][Sacha Chua]] and [[http://doc.rix.si/cce/cce.html][Ryan Rix]],
+but I haven't quite gotten around to polishing it to the point where nearly
+every section has commentary explaining why it is there, as those two have.
+
+Still, there are definitely a few sections of which I am quite proud, and that
+others may find to be useful.
* Early
The configurations in this section need to occur early in emacs startup for some reason or another.
** Lexical Binding
@@ -131,15 +136,16 @@ Sets environment variables by starting a shell.
(exec-path-from-shell-initialize)))))
#+END_SRC
** Non-Forking Shell Command To String
-Emacs' built in ~shell-command-to-string~ function has the downside that it forks a new shell process every time it is executed. This means that any shell startup cost is incurred when this function is called.
+Emacs' built in ~shell-command-to-string~ function has the downside that it
+forks a new shell process every time it is executed. This means that any shell
+startup cost is incurred when this function is called.
-The following implementation uses eshell's ~eshell-search-path~ to find the binary (which is the only reason ~shell-comand-to-string~ is typically used anyway), but it avoids incurring any shell-startup cost.
+The following implementation uses eshell's ~executable-find~ to find the
+binary (which is the only reason ~shell-comand-to-string~ is typically used
+anyway), but it avoids incurring any shell-startup cost.
This was originally inspired by [[https://github.com/bbatsov/projectile/issues/1044][this issue]].
#+BEGIN_SRC emacs-lisp
-;; We use `eshell-search-path' for this hack
-(require 'eshell)
-
(defun imalison:call-process-to-string (program &rest args)
(with-temp-buffer
(apply 'call-process program nil (current-buffer) nil args)
@@ -148,7 +154,7 @@ This was originally inspired by [[https://github.com/bbatsov/projectile/issues/1
(defun imalison:get-call-process-args-from-shell-command (command)
(cl-destructuring-bind
(the-command . args) (split-string command " ")
- (let ((binary-path (eshell-search-path the-command)))
+ (let ((binary-path (executable-find the-command)))
(when binary-path
(cons binary-path args)))))
@@ -539,7 +545,6 @@ the ~:around~ keyword of advice-add.
(imalison:named-builder imalison:compose-around-builder)
#+END_SRC
-*** Do When
*** Measure Time
#+BEGIN_SRC emacs-lisp
(defmacro imalison:measure-time (&rest body)
@@ -601,29 +606,38 @@ the ~:around~ keyword of advice-add.
** Font Size
This was taken from [[http://emacs.stackexchange.com/questions/7583/transiently-adjust-text-size-in-mode-line-and-minibuffer][here]] but it has diverged significantly from the original.
#+BEGIN_SRC emacs-lisp
-(setq imalison:default-font-size-pt
+(defvar imalison:default-font-size-pt
(cond ((eq system-type 'darwin) 120)
((eq system-type 'gnu/linux) 105)))
-(cl-defun imalison:set-font-size (&optional (arg 10))
+(defvar imalison:huge-font-size 280)
+
+(defun imalison:current-font-size ()
+ (plist-get (custom-face-attributes-get 'default nil) :height))
+
+(defun imalison:set-font-size (size)
+ (interactive (list (string-to-number (read-string "Enter a font size: "))))
+ (set-face-attribute 'default nil :height size))
+
+(defun imalison:set-huge-font-size ()
+ (interactive)
+ (imalison:set-font-size imalison:huge-font-size))
+
+(cl-defun imalison:modify-font-size (&optional (arg 10))
(interactive "p")
- (let ((current-height
- (plist-get (custom-face-attributes-get 'default nil) :height)))
- (set-face-attribute 'default nil :height
- (+ current-height arg))))
+ (imalison:set-font-size (+ (imalison:current-font-size) arg)))
(defun imalison:font-size-incr ()
(interactive)
- (imalison:set-font-size +10))
+ (imalison:modify-font-size +10))
(defun imalison:font-size-decr ()
(interactive)
- (imalison:set-font-size -10))
+ (imalison:modify-font-size -10))
(defun imalison:font-size-reset ()
(interactive)
- (set-face-attribute 'default nil
- :height imalison:default-font-size-pt))
+ (imalison:set-font-size imalison:default-font-size-pt))
#+END_SRC
** Message Result Builder
This macro is useful when writing emacs-lisp. It creates a new interactive command that shows you the result of evaluating a function, with optionally provided arguments.
@@ -758,7 +772,7 @@ A macro for composing functions together to build an interactive command to copy
(defun imalison:edit-script ()
(interactive)
- (find-file (eshell-search-path
+ (find-file (executable-find
(ido-completing-read "Select a script to edit: "
(imalison:get-executables-on-path)))))
#+END_SRC
@@ -770,6 +784,23 @@ A macro for composing functions together to build an interactive command to copy
(message "Setting lexical-binding to: %s" new-binding)
(setq lexical-binding new-binding)))
#+END_SRC
+** Sync kill ring with copyq
+#+BEGIN_SRC emacs-lisp
+(defun imalison:copyq-get (i)
+ (imalison:shell-command-to-string (format "copyq eval read(%s)" i)))
+
+(defun imalison:copyq-sync ()
+ (interactive)
+ (let ((missing-items (cl-loop for i from 0 to (string-to-number
+ (imalison:shell-command-to-string "copyq eval size()"))
+ for item = (imalison:copyq-get i)
+ when (not (member item kill-ring))
+ collect item)))
+ (setq kill-ring (nconc kill-ring missing-items))))
+
+(when (executable-find "copyq")
+ (run-with-idle-timer 10 nil 'imalison:copyq-sync))
+#+END_SRC
** Other
The stuff in this section is pretty crusty. I don't think its used anywhere, but
I keep it around just in case I need it.
@@ -1268,12 +1299,14 @@ https://github.com/alpaker/Fill-Column-Indicator/issues/21 for more details
:config
(progn
(defhydra imalison:hydra-font-resize
- nil
+ nil
"Resize Font"
("-" imalison:font-size-decr "Decrease")
- ("=" imalison:font-size-incr "Increase")
("d" imalison:font-size-decr "Decrease")
+ ("=" imalison:font-size-incr "Increase")
+ ("+" imalison:font-size-incr "Increase")
("i" imalison:font-size-incr "Increase")
+ ("h" imalison:set-huge-font-size "Huge")
("f" set-frame-font "Set Frame Font")
("0" imalison:font-size-reset "Reset to default size"))
@@ -1784,7 +1817,7 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
*** magithub
#+BEGIN_SRC emacs-lisp
(use-package magithub
- :if (eshell-search-path "hub")
+ :if (executable-find "hub")
:after magit
:disabled t)
#+END_SRC
@@ -2499,6 +2532,16 @@ Intero seems to be causing hangs, so it has been disabled
("M-," . pop-tag-mark)))
(add-hook 'c-mode-common-hook 'imalison:cc-mode-hook)))
#+END_SRC
+*** C#
+#+BEGIN_SRC emacs-lisp
+(use-package csharp-mode
+ :mode "\\.cs\\'")
+#+END_SRC
+*** racket
+#+BEGIN_SRC emacs-lisp
+(use-package racket-mode
+ :mode "\\.rkt\\'")
+#+END_SRC
** Data/Config/Protocol
*** thrift
#+BEGIN_SRC emacs-lisp
@@ -3138,16 +3181,6 @@ Intero seems to be causing hangs, so it has been disabled
(use-package jq-mode
:mode "\\.jq\\'")
#+END_SRC
-*** C#
-#+BEGIN_SRC emacs-lisp
-(use-package csharp-mode
- :mode "\\.cs\\'")
-#+END_SRC
-*** racket
-#+BEGIN_SRC emacs-lisp
-(use-package racket-mode
- :mode "\\.rkt\\'")
-#+END_SRC
* Programming
** realgud
realgud provides debugging support with many external debuggers in emacs
@@ -3281,7 +3314,8 @@ crux-reopen-as-root-mode makes it so that any file owned by root will automatica
(use-package crux
:demand t
:bind (("C-c C-s" . crux-sudo-edit)
- ("C-c C-r" . crux-eval-and-replace))
+ ("C-c C-r" . crux-eval-and-replace)
+ ("C-c o" . crux-open-with))
:config
(progn
(crux-reopen-as-root-mode)))
@@ -3690,7 +3724,15 @@ Not really sure what this is
** gmail-message-mode
This is useful with server mode when editing gmail messages. I think that it is not currently working, or it may need to be manually enabled.
#+BEGIN_SRC emacs-lisp
-(use-package gmail-message-mode)
+(use-package gmail-message-mode
+ :demand t)
+#+END_SRC
+** ham-mode
+#+BEGIN_SRC emacs-lisp
+(use-package ham-mode
+ :config
+ (progn
+ (setq ham-mode-html-to-markdown-command '("pandoc" "--from" "html" "--to" "markdown" file))))
#+END_SRC
** alert
#+BEGIN_SRC emacs-lisp
@@ -3996,6 +4038,11 @@ Ensure all themes that I use are installed:
(ensure-packages-installed packages-appearance)
#+END_SRC
+** all-the-icons
+#+BEGIN_SRC emacs-lisp
+(use-package all-the-icons
+ :demand t)
+#+END_SRC
** spaceline
*** Disable sRGB colorspace to make powerline separators work
#+BEGIN_SRC emacs-lisp
@@ -4005,6 +4052,7 @@ Ensure all themes that I use are installed:
#+BEGIN_SRC emacs-lisp
(use-package spaceline-config
:ensure spaceline
+ :commands spaceline-compile
:preface
(progn
(defun spaceline-gh-notifier-disable-default-notifier-modeline (&rest args)
@@ -4019,9 +4067,11 @@ Ensure all themes that I use are installed:
(setq powerline-default-separator (random-choice '(butt slant wave)))
(setq spaceline-workspace-numbers-unicode t
spaceline-window-numbers-unicode t)
+
(if (display-graphic-p)
(setq-default powerline-default-separator 'wave)
(setq-default powerline-default-separator 'utf-8))
+
(spaceline-define-segment imalison:muni
"Display the number of minutes until the next muni train comes"
(format "🚇%s" (imalison:get-cached-muni-time))
@@ -4032,7 +4082,14 @@ Ensure all themes that I use are installed:
(format "✉%s" github-notifier-unread-count)
:when (> github-notifier-unread-count 0))
- (setq powerline-height 25)
+ (advice-add 'pl/separator-height :around
+ (lambda (function &rest args)
+ (+ (apply function args) 10)))
+
+ ;; This needs to be executed after setting the font because the separators
+ ;; need to get regenerated
+ (advice-add 'imalison:set-font-size :after 'spaceline-compile)
+
(spaceline-helm-mode)
;; 'spaceline-gh-notifier and 'imalison:muni disabled for now
(spaceline-spacemacs-theme)))
@@ -4151,10 +4208,12 @@ load-theme hook (See the heading below).
(set-face-attribute
'default nil :height imalison:default-font-size-pt))
(progn
- (load-theme 'source-code-pro t)
- (message "not setting font")))
- (load-theme imalison:dark-theme t)
- (imalison:remove-fringe-and-hl-line-mode))
+ (load-theme 'source-code-pro t)
+ (message "not setting font")))
+ (setq powerline-default-separator (if (display-graphic-p) 'wave 'utf-8))
+ (load-theme imalison:dark-theme t)
+ (spaceline-compile)
+ (imalison:remove-fringe-and-hl-line-mode))
;; This is needed because you can't set the font or theme at daemon start-up.
;; (when (display-graphic-p) (imalison:appearance))
diff --git a/dotfiles/emacs.d/load.d/copyq.el b/dotfiles/emacs.d/load.d/copyq.el
deleted file mode 100644
index e0809500..00000000
--- a/dotfiles/emacs.d/load.d/copyq.el
+++ /dev/null
@@ -1,11 +0,0 @@
-(defun imalison:copyq-get (i)
- (imalison:shell-command-to-string (format "copyq eval read(%s)" i)))
-
-(defun imalison:copyq-sync ()
- (interactive)
- (let ((missing-items (cl-loop for i from 0 to (string-to-int
- (imalison:shell-command-to-string "copyq eval size()"))
- for item = (imalison:copyq-get i)
- when (not (member item kill-ring))
- collect item)))
- (setq kill-ring (nconc kill-ring missing-items))))
diff --git a/dotfiles/gtkrc-2.0 b/dotfiles/gtkrc-2.0
index eb5cddb1..5f9060a7 100644
--- a/dotfiles/gtkrc-2.0
+++ b/dotfiles/gtkrc-2.0
@@ -2,3 +2,19 @@ binding "gtk-emacs-text-entry"
{
bind "BackSpace" { "delete-from-cursor" (word-ends, -1) }
}
+
+gtk-theme-name="Paper"
+gtk-icon-theme-name="Paper"
+gtk-font-name="Roboto 11"
+gtk-cursor-theme-name="Paper"
+gtk-cursor-theme-size=0
+gtk-toolbar-style=GTK_TOOLBAR_BOTH
+gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
+gtk-button-images=1
+gtk-menu-images=1
+gtk-enable-event-sounds=1
+gtk-enable-input-feedback-sounds=1
+gtk-xft-antialias=1
+gtk-xft-hinting=1
+gtk-xft-hintstyle="hintfull"
+
diff --git a/dotfiles/lib/bin/screenshot.sh b/dotfiles/lib/bin/screenshot.sh
new file mode 100755
index 00000000..fe8bd9a0
--- /dev/null
+++ b/dotfiles/lib/bin/screenshot.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+scrot "$(rofi -input /dev/null -dmenu)"
diff --git a/dotfiles/lib/bin/shell_command.sh b/dotfiles/lib/bin/shell_command.sh
new file mode 100755
index 00000000..6c53915e
--- /dev/null
+++ b/dotfiles/lib/bin/shell_command.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+bash -c "$(rofi -input /dev/null -dmenu)"
diff --git a/dotfiles/xmonad/xmonad.hs b/dotfiles/xmonad/xmonad.hs
index 93535f12..7a78ed50 100644
--- a/dotfiles/xmonad/xmonad.hs
+++ b/dotfiles/xmonad/xmonad.hs
@@ -69,6 +69,8 @@ addKeys conf@XConfig {modMask = modm} =
, ((mod3Mask .|. shiftMask, xK_e), shiftTo Next EmptyWS)
, ((mod3Mask, xK_v), spawn "copyq_rofi.sh")
, ((mod3Mask, xK_p), spawn "system_password.sh")
+ , ((mod3Mask, xK_s), spawn "screenshot.sh")
+ , ((mod3Mask, xK_c), spawn "shell_command.sh")
-- playerctl
, ((mod3Mask, xK_f), spawn "playerctl play-pause")
diff --git a/dotfiles/xsettingsd b/dotfiles/xsettingsd
index 613abc81..3de22b7f 100644
--- a/dotfiles/xsettingsd
+++ b/dotfiles/xsettingsd
@@ -1,3 +1,7 @@
Gtk/KeyThemeName "Emacs"
Xft/DPI 98304
Net/ThemeName "Paper"
+Xft/Hinting 1
+Xft/RGBA "rgb"
+Xft/HintStyle "hintslight"
+Xft/Antialias 1
diff --git a/tasks/arch.py b/tasks/arch.py
index df1100c0..8127778c 100644
--- a/tasks/arch.py
+++ b/tasks/arch.py
@@ -27,13 +27,13 @@ PACKAGES = [
"festival-freebsoft-utils", "hsetroot", "imwheel", "remmina", "racket",
"xorg-utils", "playerctl", "pasystray", "dunst", "otf-fira-code",
"ttf-mac-fonts", "otf-hermit", "ttf-font-awesome", "ttf-monaco", "tcpdump",
- "ngrep", "wireshark-gtk", "teamviewer", "mopidy-podcast",
- "kdegraphics-okular",
+ "ngrep", "wireshark-gtk", "teamviewer", "mopidy-podcast", "tigervnc",
+ "kdegraphics-okular", "pandoc",
]
SERVICES = [
- "sshd.socket", "nvidia-persistenced.service", "NetworkManager.service", "teamviewerd.service",
+ "sshd.socket", "nvidia-persistenced.service", "NetworkManager.service", "teamviewerd.service", "--user vncserver@:1"
]
diff --git a/tasks/brewfiles/additional b/tasks/brewfiles/additional
index ea7150fd..40ab9c4d 100644
--- a/tasks/brewfiles/additional
+++ b/tasks/brewfiles/additional
@@ -55,7 +55,6 @@ brew 'nmap'
brew 'offline-imap'
brew 'openssl'
brew 'ossp-uuid'
-brew 'pandoc'
brew 'pango'
brew 'pcre'
brew 'pixman'
diff --git a/tasks/brewfiles/default b/tasks/brewfiles/default
index 07756d02..d30fe56f 100644
--- a/tasks/brewfiles/default
+++ b/tasks/brewfiles/default
@@ -27,7 +27,7 @@ brew 'ngrep'
brew 'nmap'
brew 'node'
brew 'openssl'
-brew 'pyenv'
+brew 'pandoc'
brew 'pyenv'
brew 'pypy'
brew 'python'