Giter Site home page Giter Site logo

themerdev / themer Goto Github PK

View Code? Open in Web Editor NEW
5.4K 33.0 114.0 56.55 MB

๐ŸŽจ themer takes a set of colors and generates themes for your apps (editors, terminals, wallpapers, and more).

Home Page: https://themer.dev

License: MIT License

JavaScript 1.35% TypeScript 98.65%
wallpapers themer vim hyper sublime-text iterm theme vscode xcode alfred chrome lightline atom slack terminal conemu cmd trianglify sketch hacktoberfest

themer's Introduction

Themer logo

themer GitHub Workflow Status (main branch) Follow on Mastodon Join the newsletter

themer takes a set of colors and generates editor themes, terminal themes, themes for other apps, and desktop wallpapers.

visual description

Table of contents

Getting started

There are a few different ways to level up your development setup with themer:

  1. Web-based graphical user interface. themer has an official progressive web app located at themer.dev.
  2. Command-line interface. themer can be used to generate themes on the CLI, see the CLI docs below.
  3. Application programming interface. themer exposes a JavaScript API (complete with TypeScript type definitions) for programmatic use; see the API docs below.

Feature comparison:

Web UI CLI/API
Instant preview โœ… โŒ
Premium color sets โœ… โŒ
Supported color format Any CSS format Hex only
Wallpaper output format PNG + SVG SVG only
Seamless dotfiles integration โŒ โœ…

CLI documentation

As of V5, themer is distributed as a single TypeScript/JavaScript package containing all built-in color sets and templates for ease of useโ€”but still supports the use of custom color sets or templates.

Installation

Install themer from npm with your JavaScript package manager of choice.

npm install themer

themer can also be installed globally. Or if you prefer not to install it at all, it can be used with npx.

Usage

themer [options]

Pass themer one or more color sets, as many templates as you wish, as many wallpaper resolutions as you wish, and an output directory.

Option Description Default value Available options
-c, --color-set <built-in color set name or file path...> the color set(s) to render default color set name, or path to JS file containing a custom color set, or a file path to a base16 yaml file
-t, --template <built-in template name or file path...> the theme template(s) to render * (all built-in templates) template name, or path to JS file containing a custom template
-s, --size <wallpaper resolution...> resolution to render in pixels, in the format [width]x[height] 2880x1800 any
-o, --output <path> the output directory themer-output any

--color-set, --template, and --size may be specified multiple times.

Your generated theme files, as well as a README on how to install them, will be written to the output directory.

Example workflow: dotfiles integration

Say you wanted to generate a vim theme and desktop background using themer's default color set. First, install themer:

cd my-dotfiles
npm install themer

Then edit your package.json:

{
  "scripts": {
    "build": "themer -c default -t vim -t vim-lightline -t hyper -t wallpaper-block-wave -o gen"
  }
}

Then run your new script:

npm run build

Now check the gen/ folder for your generated files. Here's the result:

example usage result

Example workflow: npx

This command will generate a Vim theme and the Block Wave wallpaper, using themer's default color set, and put them in a folder called output:

npx themer -c default -t vim -t wallpaper-block-wave -o output

Example workflow: using base16 schemes with Themer

In place of a themer color set, you can also provide themer with any base16 scheme YAML file.

themer --color-set path/to/base16-scheme.yml ...

Refer to the base16 repository for a list of base16 schemes.

API documentation

themer ships with a JavaScript API (with TypeScript type definitions) for use in programmatically generating themes.

Installation

npm install themer

Interface

themer's default export is an async generator function that takes three arguments:

  1. An array of ColorSet objects, or string identifiers of themer's built-in color sets
  2. An array of Template objects, or string identifiers of themer's built-in templates
  3. A RenderOptions object used to specify the resolution of the outputted wallpaper images

The objects yielded by the generator are OutputFiles.

import themer from "themer";
import myColors from "./my-colors";
import myTemplate from "./my-template";

// Example usage: generate Vim themes, 1440x900 wallpapers, and custom files
// from themer's "Night Sky" color set and a custom color set.
const files = themer(
  ["night-sky", myColors],
  ["vim", "wallpaper-block-wave", myTemplate],
  { wallpaperSizes: [{ width: 1440, height: 900 }] }
);

for await (const file of files) {
  // ...
}

Create custom ColorSets

import type { ColorSet } from "themer";

const myColorSet: ColorSet = {
  // Color sets should provide a human-readable name.
  name: "My Color Set",

  // Color sets can define a dark variant, a light variant, or both.
  // Each variant provides two or eight shades and eight accent colors in hex format.
  variants: {
    // In a dark variant, shade0 should be the darkest and shade7 should be
    // the lightest.
    dark: {
      shade0: "#333333",
      // Note: you can define shades 1 through 6 yourself, or you can omit
      // them; if omitted, they will be calculated automatically by
      // interpolating between shade0 and shade7.
      shade7: "#eeeeee",
      accent0: "#ff4050",
      accent1: "#f28144",
      accent2: "#ffd24a",
      accent3: "#a4cc35",
      accent4: "#26c99e",
      accent5: "#66bfff",
      accent6: "#cc78fa",
      accent7: "#f553bf",
    },

    // In a light variant, shade7 should be the darkest and shade0 should be
    // the lightest.
    light: {
      shade0: "#eeeeee",
      shade7: "#333333",
      accent0: "#f03e4d",
      accent1: "#f37735",
      accent2: "#eeba21",
      accent3: "#97bd2d",
      accent4: "#1fc598",
      accent5: "#53a6e1",
      accent6: "#bf65f0",
      accent7: "#ee4eb8",
    },
  },
};

export default myColorSet;

Pro Tip: you can use themer's Web UI to more easily select your colors, then click the "Download" button to generate a colors.js file in the correct format. With the Web UI, you can also input any valid CSS color format (keyword, HSL, RGB, etc.) and it will automatically convert the color to hex for you.

Color mappings

To help you choose colors for your own color set, this is approximately how most themer templates will utilize your colors:

Color Key Typical Usage Conventional Color*
accent0 error, VCS deletion Red
accent1 syntax Orange
accent2 warning, VCS modification Yellow
accent3 success, VCS addition Green
accent4 syntax Cyan
accent5 syntax Blue
accent6 syntax, caret/cursor
accent7 syntax, special Magenta
shade0 background color
shade1 UI
shade2 UI, text selection
shade3 UI, code comments
shade4 UI
shade5 UI
shade6 foreground text
shade7 foreground text

*Conventional color is suggested for consistency with ANSI color names in terminal themes, but is not a hard requirement.

See themer's Web UI for a more visual representation of the color mappings.

Create custom Templates

import type { Template } from "themer";

const template: Template = {
  // Templates should provide a human-readable name.
  name: "My Template",

  // The render async generator function takes a color set and the render
  // options, and yields one or more output files. The color set is fully
  // expanded (e.g., if the color set did not include shades 1 through 6
  // when originally authored, those intermediary shades will have already
  // been calculated and included).
  render: async function* (colorSet, options) {
    // The yielded output file has two properties: a string path (relative)
    // and a Buffer of the file's content.
    yield {
      path: "my-file.txt",
      content: Buffer.from("Hello, world!", "utf8"),
    };
  },

  // The renderInstructions function takes an array of paths generated from
  // the render function and should return a Markdown string, which will be
  // included in the generated README.md file.
  renderInstructions: (paths) =>
    `Copy the files (${paths.join(" and ")}) to your home directory.`,
};

export default template;

Themer color sets

Premium color sets

(Only available on themer.dev.)

Name Dark Preview Light Preview
Jamstacker Jamstacker dark preview (dark only)
Victor Mono Victor Mono dark preview Victor Mono light preview
Future Pro Future Pro dark preview Future Pro light preview

Original color sets

Name Dark Preview Light Preview
default default dark preview default light preview
finger-paint finger-paint dark preview finger-paint light preview
green-as-a-whistle green-as-a-whistle dark preview green-as-a-whistle light preview
monkey monkey dark preview monkey light preview
night-sky night-sky dark preview (dark only)
polar-ice polar-ice dark preview polar-ice light preview
right-in-the-teals right-in-the-teals dark preview right-in-the-teals light preview
shoulder-pads shoulder-pads dark preview shoulder-pads light preview

Ports from third-party themes

Name Dark Preview Light Preview
dracula dracula dark preview (dark only)
github-universe github-universe dark preview (dark only)
lucid lucid dark preview lucid light preview
mojave mojave dark preview mojave light preview
nova nova dark preview (dark only)
one one dark preview one light preview
rivet rivet dark preview rivet light preview
seti seti dark preview (dark only)
solarized solarized dark preview solarized light preview

Themer templates

Terminals

Editors/IDEs

Other apps

Wallpapers

See themer's Web UI for wallpaper previews.

Prior art

themer is inspired by trevordmiller/nova and chriskempson/base16.

Conceptually, themer is very similar to base16, but:

  1. It is lighter, and simpler to use.
  2. It is more easily extensible with your own color sets and templates.
  3. It integrates better with your dotfiles, especially if you keep them under version control.

Contributing

For instructions on how to contribute to themer, see CONTRIBUTING.md and themer's code of conduct.

Next steps

Join the community

Support themer

themer's People

Contributors

dependabot[bot] avatar divyanshu013 avatar flipfloop avatar iwestlin avatar kalligator avatar kinduff avatar lafleurdeboum avatar mjswensen avatar modille avatar ronan696 avatar spenserblack avatar therealplato avatar trbndev avatar ttilbycp avatar u1f408 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

themer's Issues

Error in generated Vim theme or instructions

The errors
Error detected while processing /home/blah/.vimrc:
line    6:
E35: No previous regular expression
Error detected while processing /home/blah/.vim/colors/ThemerVim.vim:
line   49:
E121: Undefined variable: s:guishade6
line   50:
E121: Undefined variable: s:ctermshade6
line   58:
E121: Undefined variable: s:guishade2
line   59:
E121: Undefined variable: s:ctermshade2
line   60:
E121: Undefined variable: s:guiaccent3
line   61:
E121: Undefined variable: s:ctermaccent3
line   62:
E121: Undefined variable: s:guiaccent4
line   63:
E121: Undefined variable: s:ctermaccent4
line   64:
E121: Undefined variable: s:guiaccent2
line   65:
E121: Undefined variable: s:ctermaccent2
line   66:
E121: Undefined variable: s:guiaccent5
line   67:
E121: Undefined variable: s:ctermaccent5
line   68:
E121: Undefined variable: s:guiaccent6
line   69:
E121: Undefined variable: s:ctermaccent6
line   70:
E121: Undefined variable: s:guiaccent7
line   71:
E121: Undefined variable: s:ctermaccent7
line   72:
E121: Undefined variable: s:guiaccent4
line   73:
E121: Undefined variable: s:ctermaccent4
line   74:
E121: Undefined variable: s:guiaccent5
line   75:
E121: Undefined variable: s:ctermaccent5
line   76:
E121: Undefined variable: s:guiaccent0
line   77:
E121: Undefined variable: s:ctermaccent0
line   78:
E121: Undefined variable: s:guiaccent0
line   79:
E121: Undefined variable: s:ctermaccent0
line   83:
E121: Undefined variable: s:guiaccent3
line   84:
E121: Undefined variable: s:ctermaccent3
line   85:
E121: Undefined variable: s:guiaccent2
line   86:
E121: Undefined variable: s:ctermaccent2
line   87:
E121: Undefined variable: s:guiaccent2
line   88:
E121: Undefined variable: s:ctermaccent2
line   89:
E121: Undefined variable: s:guiaccent0
line   90:
E121: Undefined variable: s:ctermaccent0
line   94:
E121: Undefined variable: s:guishade3
line   95:
E121: Undefined variable: s:ctermshade3
line   96:
E121: Undefined variable: s:guishade3
line   97:
E121: Undefined variable: s:ctermshade3
line   98:
E121: Undefined variable: s:guishade5
line   99:
E121: Undefined variable: s:ctermshade5
line  100:
E121: Undefined variable: s:guishade3
line  101:
E121: Undefined variable: s:ctermshade3
line  102:
E121: Undefined variable: s:guiaccent3
line  103:
E121: Undefined variable: s:ctermaccent3
line  104:
E121: Undefined variable: s:guiaccent3
line  105:
E121: Undefined variable: s:ctermaccent3
line  106:
E121: Undefined variable: s:guiaccent2
line  107:
E121: Undefined variable: s:ctermaccent2
line  108:
E121: Undefined variable: s:guiaccent2
line  109:
E121: Undefined variable: s:ctermaccent2
line  110:
E121: Undefined variable: s:guiaccent0
line  111:
E121: Undefined variable: s:ctermaccent0
line  119:
E121: Undefined variable: s:guishade1
line  120:
E121: Undefined variable: s:ctermshade1
line  121:
E121: Undefined variable: s:guishade2
line  122:
E121: Undefined variable: s:ctermshade2
line  123:
E121: Undefined variable: s:guishade0
line  124:
E121: Undefined variable: s:ctermshade0
line  125:
E121: Undefined variable: s:guishade1
line  126:
E121: Undefined variable: s:ctermshade1
line  127:
E121: Undefined variable: s:guishade1
line  128:
E121: Undefined variable: s:ctermshade1
line  129:
E121: Undefined variable: s:guiaccent5
line  130:
E121: Undefined variable: s:ctermaccent5
line  131:
E121: Undefined variable: s:guiaccent3
line  132:
E121: Undefined variable: s:ctermaccent3
line  133:
E121: Undefined variable: s:guiaccent2
line  134:
E121: Undefined variable: s:ctermaccent2
line  135:
E121: Undefined variable: s:guiaccent0
line  136:
E121: Undefined variable: s:ctermaccent0
line  137:
E121: Undefined variable: s:guiaccent2
line  138:
E121: Undefined variable: s:ctermaccent2
line  139:
E121: Undefined variable: s:guishade7
line  140:
E121: Undefined variable: s:ctermshade7
line  141:
E121: Undefined variable: s:guishade0
line  142:
E121: Undefined variable: s:ctermshade0
line  143:
E121: Undefined variable: s:guishade4
line  144:
E121: Undefined variable: s:ctermshade4
line  145:
E121: Undefined variable: s:guishade4
line  146:
E121: Undefined variable: s:ctermshade4
line  147:
E121: Undefined variable: s:guishade0
line  148:
E121: Undefined variable: s:ctermshade0
line  149:
E121: Undefined variable: s:guishade0
line  150:
E121: Undefined variable: s:ctermshade0
line  151:
E121: Undefined variable: s:guishade2
line  152:
E121: Undefined variable: s:ctermshade2
line  153:
E121: Undefined variable: s:guishade3
line  154:
E121: Undefined variable: s:ctermshade3
line  155:
E121: Undefined variable: s:guishade2
line  156:
E121: Undefined variable: s:ctermshade2
line  157:
E121: Undefined variable: s:guishade0
line  158:
E121: Undefined variable: s:ctermshade0
line  159:
E121: Undefined variable: s:guishade2
line  160:
E121: Undefined variable: s:ctermshade2
line  161:
E121: Undefined variable: s:guishade6
line  162:
E121: Undefined variable: s:ctermshade6
line  163:
E121: Undefined variable: s:guiaccent4
line  164:
E121: Undefined variable: s:ctermaccent4
line  165:
E121: Undefined variable: s:guiaccent3
line  166:
E121: Undefined variable: s:ctermaccent3
line  167:
E121: Undefined variable: s:guiaccent0
line  168:
E121: Undefined variable: s:ctermaccent0
line  169:
E121: Undefined variable: s:guishade7
line  170:
E121: Undefined variable: s:ctermshade7
line  171:
E121: Undefined variable: s:guishade0
line  172:
E121: Undefined variable: s:ctermshade0
line  173:
E121: Undefined variable: s:guiaccent7
line  174:
E121: Undefined variable: s:ctermaccent7
line  175:
E121: Undefined variable: s:guiaccent0
line  176:
E121: Undefined variable: s:ctermaccent0
line  177:
E121: Undefined variable: s:guiaccent2
line  178:
E121: Undefined variable: s:ctermaccent2
line  179:
E121: Undefined variable: s:guiaccent4
line  180:
E121: Undefined variable: s:ctermaccent4
line  181:
E121: Undefined variable: s:guiaccent1
line  182:
E121: Undefined variable: s:ctermaccent1
line  183:
E121: Undefined variable: s:guishade4
line  184:
E121: Undefined variable: s:ctermshade4
line  185:
E121: Undefined variable: s:guishade5
line  186:
E121: Undefined variable: s:ctermshade5
line  187:
E121: Undefined variable: s:guishade1
line  188:
E121: Undefined variable: s:ctermshade1
line  189:
E121: Undefined variable: s:guishade6
line  190:
E121: Undefined variable: s:ctermshade6
line  191:
E121: Undefined variable: s:guiaccent5
line  192:
E121: Undefined variable: s:ctermaccent5
line  193:
E121: Undefined variable: s:guishade1
line  194:
E121: Undefined variable: s:ctermshade1
line  195:
E121: Undefined variable: s:guiaccent0
line  196:
E121: Undefined variable: s:ctermaccent0
line  197:
E121: Undefined variable: s:guiaccent0
line  198:
E121: Undefined variable: s:ctermaccent0
line  199:
E121: Undefined variable: s:guiaccent4
line  200:
E121: Undefined variable: s:ctermaccent4
line  204:
E121: Undefined variable: s:guiaccent4
line  205:
E121: Undefined variable: s:ctermaccent4
line  206:
E121: Undefined variable: s:guiaccent5
line  207:
E121: Undefined variable: s:ctermaccent5
line  208:
E121: Undefined variable: s:guiaccent0
line  209:
E121: Undefined variable: s:ctermaccent0
line  215:
E108: No such variable: "s:guishade0"
line  216:
E108: No such variable: "s:ctermshade0"

I set background to dark in .vimrc, but the generated readme.md file makes no mention of this being necessary.

set background=dark

I'm not sure if this is supposed to be necessary or not. background was light but I'm not sure what's setting that value, so I just override it right before setting color ThemerVim.

Shade color interpolation

I think users should only need to give the darkest color and the lightest color for the shades. Themer should automatically generate the in-between colors using this formula:

DARK = someRGB
LIGHT = someRGB
N = number of colors we want (8 for themer)
DELTA = (LIGHT-DARK)/(N-1)
COLORS = [DARK+(DELTA*i) for i in range(N)]

Add Alacritty to supported terminals

This is the format it uses: https://github.com/alacritty/alacritty/wiki/Color-schemes

Pasted here:

# KDE Breeze (Ported from Konsole)
colors:
  # Default colors
  primary:
    background: '#232627'
    foreground: '#fcfcfc'

    dim_foreground: '#eff0f1'
    bright_foreground: '#ffffff'
    dim_background: '#31363b'
    bright_background: '#000000'

  # Normal colors
  normal:
    black: '#232627'
    red: '#ed1515'
    green: '#11d116'
    yellow: '#f67400'
    blue: '#1d99f3'
    magenta: '#9b59b6'
    cyan: '#1abc9c'
    white: '#fcfcfc'

  # Bright colors
  bright:
    black: '#7f8c8d'
    red: '#c0392b'
    green: '#1cdc9a'
    yellow: '#fdbc4b'
    blue: '#3daee9'
    magenta: '#8e44ad'
    cyan: '#16a085'
    white: '#ffffff'

  # Dim colors
  dim:
    black: '#31363b'
    red: '#783228'
    green: '#17a262'
    yellow: '#b65619'
    blue: '#1b668f'
    magenta: '#614a73'
    cyan: '#186c60'
    white: '#63686d'

Brackets

Support for Brackets editor theme exports, please.

brackets.io

GTK3 theme?

I have no idea how GTK themes are colored, but I think this would be a cool idea. It might be more than you can handle, and that's ok.

Add theme creation for .Xresources

It would be great to add support to create a theme for linux users of Xorg. The syntax is:

  • colors 0-7 are the normal/dark colors
  • colors 8-15 are the lighter/bright colors

(I didn't differentiate the bright from the dark colors hex codes in this example)

! general colors
*.foreground: #363f45
*.background: #fff
*.cursorColor: #363f45

! black + grey
*.color0: #0b141a
*.color8: #0b141a

! dark red + red
*.color1: #ff3033
*.color9: #ff4053

! dark green + green
*.color2: #0d8100
*.color10: #0d8100

! dark yellow + yellow
*.color3: #bf8c00
*.color11: #bf8c00

! dark blue + blue
*.color4: #0099ff
*.color12: #0099ff

! dark magenta + magenta
*.color5: #9854ff
*.color13: #9854ff

! dark cyan + cyan
*.color6: #00a5ab
*.color14: #00a5ab

! light grey + white
*.color7: #bbbbbb
*.color15: #bbbbbb

Better describe the accents and shades, and showcase them better in the web UI

I'll preface this issue by saying i have only used the Web UI so far. Oh, and what a great project!

I am currently having to brute-force my way through when using the web UI to make my theme, which is an indication of a underlying problem: The lack of intention for each shade and accent

Specifically accent1 has no other description than "syntax", and is not showcased at all in the code preview in the web UI. It also seems like the literals in the code preview are colored by accent0, which have the description "error, vcs deletion" description. Some colors are both used in the foreground and in the background, making it hard to create a cohesive color experience.

I propose the following:

  • Add code examples for more languages.
    Of interest are languages with explicit typing
  • Add a terminal example more user can easily recreate locally.
    This makes for a better reference.
  • Switch around some of the accents for better consistency, more on that below
  • The shade colors should not be used as both foreground (text) and background colors, there should be a clearly defined separation. Perhaps reserve shade 0, 1 and 2 for background and the rest for foreground colors?

While at it, I suggest the following descriptions from either what I've observed to be their primary use, or what i think they should changed into:

color current description proposed description note
shade0 background color background color
shade1 UI UI shading, borders 1
shade2 UI, text selection UI shading, text selection, buttons 2
shade3 UI, code comments code comments
shade4 UI UI hints
shade5 UI UI titles 3
shade6 foreground text secondary foreground text
shade7 foreground text primary foreground text
accent0 error, vcs deletion error, vcs deletion
accent1 syntax ??? 4
accent2 warning, vcs modification warning, vcs modification
accent3 success, vcs success literals, success, vcs success
accent4 syntax success, vcs addition
accent5 syntax syntax, control flow 5
accent6 syntax, caret/cursor syntax, directives
accent7 syntax, special syntax, types, constants

Notes:

  1. currently used as the font color in the editor ruler
  2. borders currently use this, perhaps move borders to shade1? The terminal example also use this color alot, which i believe misrepresents the normal terminal experience
  3. currently used as the editor ruler highlight and the color of the unordered list
  4. I have seriously no idea where this is used
  5. is currently the text-selection color in the web UI, even though shade2 is supposed to be this going by the current description

They should indicate what the colors will be used for in the templates. And also indicate for the template authors where they should use the colors.

This does not have to be the "hard" definition, but perhaps be more like a common guideline. The 'notes' column however is worth noting, since they describe why the current situation confuse me.

I understand a lot of this came as baggage from base16 schemes

Visual Studio template support

Hi !
I think themer is a great idea with a great implementation, however, I really love to be able to export themes and color schemes for both Visual Studio (IDE, not VS Code) and Jetbrain's products (Intellij, Pycharm, PhpStorm, Gogland etc) .
Thanks!

Feature: Display what shades and accents that will be mapped to the colors for a theme

I have tried out Themer for a few hours and I tried to make a new color scheme for Sublime Text. I had some problem figuring out which accents and shades were used for what in Sublime. I tried to view it manually later but it would be great if it was possible to see it directly in the app when customizing a theme. The mappings could be viewed under a menu or something.

Support for more than light vs. dark

Hey,

Gauging interest before I have a crack at this: I'm playing with building themes dynamically from brands in https://github.com/antoligy/ft-themer and am wondering if there's appetite to support multiple "modes" (or, really, brands) instead of only Light and Dark.

It seems like a number of subcomponents, as well as all of the logic around naming/selecting colours, is based around there only light and dark themes.
What are your thoughts?

Alex

GNOME Terminal

Hey, I just made a color scheme for GNOME terminal for the nova color scheme, and I found themer. It might be cool to add GNOME Terminal support to themer. What do you think?

Firefox theme

If anyone else interested, I can take over and submit a PR to provide a Firefox theme.

Support for Vivaldi

Hello! ๐Ÿ˜ธ

Support for the Vivaldi browser (specifically the tabs) would be very much appreciated!

Thank you kindly for your consideration on the matter!

LICENSE file

Hi. Before trying out themer, I checked for a license and noticed that none of the repos have a LICENSE file. I see that it's in each package.json's license field, but to make it more immediately obvious, please consider adding the file. GitHub even lets you do it from the UI.

WT has no yellow

Windows Terminal doesn't have a yellow key, only a bright yellow one.

Unexpressible kitty / Xresources theme

I can't express my current theme in the configuration provided:
Desired output:

# black
color0    #282828
color8    #928374

# red
color1    #cc241d
color9    #fb4934

# green
color2    #98971a
color10   #b8bb26

# yellow
color3    #d79921
color11   #fabd2f

# blue
color4    #458588
color12   #83a598

# magenta
color5    #b16286
color13   #d3869b

# cyan
color6    #689d6a
color14   #8ec07c

# white
color7    #a89984
color15   #ebdbb2

Closest configuration:

module.exports.colors = {
  "dark": {
    "shade0" : "#282828",
    "accent0": "#cc241d",
    "shade1" : "#928374",
    "accent1": "#fb4934",
    "shade2" : "#98971a",
    "accent2": "#b8bb26",
    "shade3" : "#d79921",
    "accent3": "#fabd2f",
    "shade4" : "#458588",
    "accent4": "#83a598",
    "shade5" : "#b16286",
    "accent5": "#d3869b",
    "shade6" : "#689d6a",
    "accent6": "#8ec07c",
    "shade7" : "#a89984",
    "accent7": "#ebdbb2"
  }
};

Result: (sorted for cleaner comparison)

# generated by themer-kitty
# dark variant of theme colors.js
foreground #689d6a
background #282828
color0 #282828
color8 #cc241d
color1 #928374
color9 #fb4934
color2 #fabd2f
color10 #83a598
color3 #b8bb26
color11 #b8bb26
color4 #d3869b
color12 #d3869b
color5 #ebdbb2
color13 #ebdbb2
color6 #83a598
color14 #83a598
color7 #689d6a
color15 #a89984

This doesn't allow using the bolded accent colors for terminals as far as I can tell. Is there something I'm doing wrong?

Terminator terminal

Big fan of Terminator, if anyone is interested (and it's interesting for the project mantainers), I can do a PR to provide support for this.

side by side themeing

side by side feature will be amazing because every time I change color I have to scroll to see the preview.

ctermfg and ctermbg for themer-vim

Thanks for this awesome tool!

Looks like themer-vim creates a file that sets colors for guifg and guibg, but is there any chance ctermfg and ctermbg could be supported as well?

Thank you for themer

Not an issue, but wanted to send some appreciation for all your great work on themer. It has made my software development and computer usage extremely delightful. So much so, that you inspired me to whip together https://www.github.com/tomselvi/nightenv which really wouldn't have been possible without it.

Thank you!

JetBrains IDE Support?

This would be a very nice feature to have, seeing that JetBrains IDEs are so popular.

Adding support to export colors/themes for Android

It would be cool to be able to export Colors/Themes/Styles for Android-Apps.
Colors are defined in xml.

Sample:

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<!-- colors for AppTheme.Blue -->
	<color name="colorPrimary">#3F51B5</color>
	<color name="colorPrimaryDark">#303F9F</color>
	<color name="colorAccent">#FF4081</color>
	<!-- colors for AppTheme.Red -->
	<color name="colorPrimaryRed">#F44336</color>
	<color name="colorPrimaryDarkRed">#D32F2F</color>
	<color name="colorAccentRed">#607D8B</color>
	<!-- colors for AppTheme.Green -->
	<color name="colorPrimaryGreen">#4CAF50</color>
	<color name="colorPrimaryDarkGreen">#388E3C</color>
	<color name="colorAccentGreen">#795548</color>
	<!-- colors for AppTheme.DarkOrange -->
	<color name="colorPrimaryDarkOrange">#FF9800</color>
	<color name="colorPrimaryDarkDarkOrange">#F57C00</color>
	<color name="colorAccentDarkOrange">#9E9E9E</color>
	<color name="black_overlay">#66000000</color>
</resources>

Fix typo

src/resolve.spec.js: "nonexistant" should be "nonexistent"

Font name in the screenshot?

The result screen in the README (Now check the gen/ folder...) has a nice font. Could you tell its name please?

themer organization

First of all, thanks for making themer! I have been looking for something like it for a while. I've known about Base16, but I stumbled upon themer today, and it looks a lot more like what I want. The gui and wallpapers are nice touches.

Since there are so many repos, I was just wondering if you have considered making a separate organization for themer. I might create a new template, but I don't know if you would prefer for that to exist under my personal account or under a hypothetical themer organization.

Add Theme Template to Konsole

I have used for a while your tool for color schemes on jetbrains, and i have to manually convert some schemes to be used on my terminal on KDE.
Would you please consider add the template to KDE Konsole colorscheme file.
Thanks in advance

report powerline-rs support

powerline-rs template

I implemented support for the powerline-rs program, basically a re-implementation of powerline written in rust. I thought this soft is not vital, so I'd keep it as a third-party plugin. On the other hand, you have vim-lightline in the main project, and powerline-rs is basically the same thing for zsh/bash.

It's available in npm with

npm install themer-powerline-rs

the source code is GPLv2, available here in gitlab. Would you consider adding the link to the community-contributed templates ? That would be fine enough for me.

Thank you for this great soft !

Swift 4 / High Sierra changes

Looks like Swift 4 has broken Themer's generation of Terminal.app palettes. Here's a screenshot of what I mean:

screen shot 2017-08-28 at 9 21 42 am

NOTE: This only appears to affect Terminal.app. Everything else exports as expected.

Vim undefined variable

Description

Usage of themer along with @themer/vim causes undefined variable errors

To reproduce

Steps to reproduce the behavior:

  1. Use themer template
  2. generate

Screenshots

image

Expected behavior

No errors

Environment information

CLI

Please fill out the following information if you are using the command-line interface. For the web UI, you can delete this section.

  • Device [e.g. iPhone6, MacBook Pro]: MacBook Air
  • OS [e.g. iOS, macOS]: Arch Linux
  • OS version [e.g. 14.0]: Linux 5.8.13, Latest Arch
  • Node version [e.g. 14.4.0]: 14.13.0
  • themer version [e.g. 3.3.4]: 3.3.4
  • Other themer packages and their versions [e.g. @themer/[email protected]]: @themer/[email protected]
  • Vim version: 8.2

Additional context

Here's my config file

module.exports.colors = {
    dark: {
        accent0: "#FF4050",
        accent1: "#F28144",
        accent2: "#FFD24A",
        accent3: "#A4CC35",
        accent4: "#26C99E",
        accent5: "#66BFFF",
        accent6: "#CC78FA",
        accent7: "#F553BF",
    
        shade0: "#282629",
        shade1: "#474247",
        shade2: "#656066",
        shade3: "#847E85",
        shade4: "#A29DA3",
        shade5: "#C1BCC2",
        shade6: "#E0DCE0",
        shade7: "#FFFCFF",
    },
}

The problem is the if statement causing the variable to be scoped locally

  
  if &background == 'dark'
    
  let s:guishade0 = "#282629"
  let s:guishade1 = "#474247"
  let s:guishade2 = "#656066"

  . . .
  
  endif

I know the s: is supposed to scope the variable to the script, but for some reason, I get those errors. If I remove the if statements, themer works.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.