Moving all of my Emacs-related files into their own directory at the root of this repository.
		
			
				
	
	
		
			94 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
| ;;; terminator.el --- Experimenting with theming Terminator -*- lexical-binding: t -*-
 | |
| ;; Author: William Carroll <wpcarro@gmail.com>
 | |
| 
 | |
| ;;; Commentary:
 | |
| ;; I think most of this module is me getting carried away with the idea of
 | |
| ;; theming Terminator.  Terminator themes are defined in a themes.json file.  As
 | |
| ;; far as I know, Terminator does not support specifying these themes by name on
 | |
| ;; the command line, which would greatly simplify things.  Terminator does
 | |
| ;; support passing a --profile flag, however, which can be used to specify the
 | |
| ;; themes.  The idea, albeit quite awkward and over-engineered, was to create
 | |
| ;; these profile files on the fly and pass them to terminator.  After around 45
 | |
| ;; minutes of tinkering with this, the idea is starting to disenchant me.
 | |
| ;;
 | |
| ;; Alternative solutions include:
 | |
| ;; 1. Further investigating what other options Terminator supports.
 | |
| ;; 2. Using a different terminal emulator.
 | |
| ;; 3. Just right clicking Terminator and changing the themes manually.
 | |
| 
 | |
| ;;; Code:
 | |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | |
| ;; Dependencies
 | |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | |
| 
 | |
| (require 'prelude)
 | |
| (require 'alist)
 | |
| (require 'string)
 | |
| (require 'json)
 | |
| 
 | |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | |
| ;; Library
 | |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | |
| 
 | |
| (cl-defstruct terminator/theme
 | |
|   foreground-color
 | |
|   background-color
 | |
|   cursor-color
 | |
|   palette)
 | |
| 
 | |
| (defvar terminator/palettes
 | |
|   '((solarized-light . "#002831:#d11c24:#738a05:#a57706:#2176c7:#c61c6f:#259286:#eae3cb:#001e27:#bd3613:#475b62:#536870:#708284:#5956ba:#819090:#fcf4dc"))
 | |
|   "Mapping of theme names to the color palette that terminator expects.")
 | |
| 
 | |
| (defconst terminator/profile-template "[global_config]
 | |
|   enabled_plugins = LaunchpadBugURLHandler, LaunchpadCodeURLHandler, APTURLHandler, TerminatorThemes
 | |
| [keybindings]
 | |
| [profiles]
 | |
|   [[default]]
 | |
|     background_color = \"%s\"
 | |
|     cursor_shape = ibeam
 | |
|     cursor_color = \"%s\"
 | |
|     font = Input Mono Medium 12
 | |
|     foreground_color = \"%s\"
 | |
|     show_titlebar = False
 | |
|     scrollbar_position = hidden
 | |
|     palette = \"%s\"
 | |
|     use_system_font = False
 | |
| [layouts]
 | |
|   [[default]]
 | |
|     [[[child1]]]
 | |
|       parent = window0
 | |
|       type = Terminal
 | |
|       profile = Molokai
 | |
|     [[[window0]]]
 | |
|       parent = \"\"
 | |
|       type = Window
 | |
| [plugins]"
 | |
|   "Template string of a terminator profile file.")
 | |
| 
 | |
| (cl-defun terminator/render-profile (&key foreground-color
 | |
|                                           background-color
 | |
|                                           cursor-color
 | |
|                                           palette)
 | |
|   "Create a terminator profile with THEME as the palette."
 | |
|   (string/format terminator/profile-template
 | |
|                  background-color
 | |
|                  cursor-color
 | |
|                  foreground-color
 | |
|                  palette))
 | |
| 
 | |
| (defun terminator/as-heredoc (x)
 | |
|   "Return an EOF-terminator heredoc of X."
 | |
|   (string/format "<<EOF\n%s\nEOF" x))
 | |
| 
 | |
| (prelude/start-process
 | |
|  :name "termination"
 | |
|  :command (string/format "zsh -c terminator --profile=%s"
 | |
|                          (->> 'solarized-light
 | |
|                               terminator/render-profile
 | |
|                               terminator/as-heredoc)))
 | |
| (string/format terminator/profile-template
 | |
|                (alist/get 'solarized-light terminator/palettes))
 | |
| 
 | |
| (provide 'terminator)
 | |
| ;;; terminator.el ends here
 |