--- /dev/null
+! Copyright (C) 2021 Kevin Cope.
+! See http://factorcode.org/license.txt for BSD license.
+USING: kernel io.encodings.utf8 io.files colors colors.constants.private
+ assocs colors.constants colors.hex namespaces ui.theme arrays
+ io io.directories io.pathnames splitting sequences ;
+IN: ui.theme.base16
+
+SYMBOL: base16-theme-name
+"greenscreen" base16-theme-name set
+
+MEMO: base16colors ( name -- assoc )
+ "resource:basis/ui/theme/base16/base16-" swap ".txt" 3append
+ utf8 file-lines parse-colors ;
+
+: named-base16 ( name -- color )
+ dup base16-theme-name get base16colors at [ ] [ no-such-color ] ?if ;
+
+SINGLETON: base16-theme
+theme [ base16-theme ] initialize
+
+M: base16-theme toolbar-background "base00" named-base16 ;
+M: base16-theme toolbar-button-pressed-background "base01" named-base16 ;
+
+M: base16-theme menu-background "base00" named-base16 ;
+M: base16-theme menu-border-color "base02" named-base16 ;
+
+M: base16-theme status-bar-background "base00" named-base16 ;
+M: base16-theme status-bar-foreground "base04" named-base16 ;
+
+M: base16-theme button-text-color "base0C" named-base16 ;
+M: base16-theme button-clicked-text-color "base0B" named-base16 ;
+
+M: base16-theme line-color "base02" named-base16 ;
+M: base16-theme column-title-background "base00" named-base16 ;
+
+M: base16-theme roll-button-rollover-border "base03" named-base16 ;
+M: base16-theme roll-button-selected-background "base02" named-base16 ;
+
+M: base16-theme source-files-color "base0B" named-base16 ;
+M: base16-theme errors-color "base08" named-base16 ;
+M: base16-theme details-color "base0D" named-base16 ;
+
+M: base16-theme debugger-color "base09" named-base16 ;
+M: base16-theme completion-color "base0A" named-base16 ;
+
+M: base16-theme data-stack-color "base0D" named-base16 ;
+M: base16-theme retain-stack-color "base0E" named-base16 ;
+M: base16-theme call-stack-color "base0B" named-base16 ;
+
+M: base16-theme title-bar-gradient "base01" named-base16 "base01" named-base16 2array ;
+
+M: base16-theme popup-color "base0A" named-base16 ;
+
+M: base16-theme object-color "base0D" named-base16 ;
+M: base16-theme contents-color "base0B" named-base16 ;
+
+M: base16-theme help-header-background "base01" named-base16 ;
+
+M: base16-theme thread-status-stopped-background "base0A" named-base16 ;
+M: base16-theme thread-status-suspended-background "base0B" named-base16 ;
+M: base16-theme thread-status-running-background "base02" named-base16 ;
+
+M: base16-theme thread-status-stopped-foreground "base00" named-base16 ;
+M: base16-theme thread-status-suspended-foreground "base00" named-base16 ;
+M: base16-theme thread-status-running-foreground "base03" named-base16 ;
+
+M: base16-theme error-summary-background "base01" named-base16 ;
+
+M: base16-theme content-background "base00" named-base16 ;
+M: base16-theme text-color "base06" named-base16 ;
+
+M: base16-theme link-color "base0C" named-base16 ;
+M: base16-theme title-color "base0B" named-base16 ;
+M: base16-theme heading-color "base03" named-base16 ;
+M: base16-theme snippet-color "base09" named-base16 ;
+M: base16-theme output-color "base09" named-base16 ;
+M: base16-theme deprecated-background-color "base01" named-base16 ;
+M: base16-theme deprecated-border-color "base01" named-base16 ;
+M: base16-theme warning-background-color "base01" named-base16 ;
+M: base16-theme warning-border-color "base01" named-base16 ;
+M: base16-theme code-background-color "base01" named-base16 ;
+M: base16-theme help-path-border-color "base0F" named-base16 ;
+
+M: base16-theme tip-background-color "base01" named-base16 ;
+
+M: base16-theme prompt-background-color "base02" named-base16 ;
+
+M: base16-theme dim-color "base03" named-base16 ;
+M: base16-theme highlighted-word-color "base04" named-base16 ;
+M: base16-theme string-color "base0A" named-base16 ;
+M: base16-theme stack-effect-color "base04" named-base16 ;
+
+M: base16-theme vocab-background-color "base00" named-base16 ;
+M: base16-theme vocab-border-color "base00" named-base16 ;
+
+M: base16-theme field-border-color "base00" named-base16 ;
+
+M: base16-theme editor-caret-color "base06" named-base16 ;
+M: base16-theme selection-color "base0D" named-base16 ;
+M: base16-theme panel-background-color "base02" named-base16 ;
+M: base16-theme focus-border-color "base00" named-base16 ;
+
+M: base16-theme labeled-border-color "base01" named-base16 ;
+
+M: base16-theme table-border-color "base00" named-base16 ;
+