emacsfodder / emacs-theme-darktooth

Darktooth : From the darkness... it watches.
GNU General Public License v3.0
319 stars 31 forks source link

Create simple template for porting to other software #11

Closed Poorchop closed 8 years ago

Poorchop commented 9 years ago

Creating a template with 16 primary colors plus two additional colors for the background and foreground would allow for easier and more accurate porting of this color scheme for use with other software, including terminal emulators, IRC clients, and other text editors. There are typically eight primary colors with bold/highlighted/emphasized/bright variants, which are as follows (colors 0 to 7):

Colors 8 to 15 would just be a secondary black, secondary red, secondary green, and so forth. Additional definitions would help as well for any other actions that typically have associated colors, such as highlighting text. In this case, designated background and foreground colors for highlighted text would be nice to include in the template.

A port of this color scheme to a terminal emulator like GNOME Terminal or Konsole, or to an SSH client like PuTTY could serve as a starting point rather than arbitrarily creating a file with the 20 possible colors mentioned so far.

jasonm23 commented 9 years ago

The full palette is here

The main colors are defined here as light, neurtal and faded.

Black and White are defined as light and dark sets. I suggest darktooth-light0 and darktooth-dark0 as white / black equivalents.

Poorchop commented 9 years ago

I'm working out a port based on mIRC color table and I have everything worked out except for gray, light gray, brown, and highlighted text foreground/background.

For brown, I am using darktooth-sienna, and I think darktooth-medium looks nice for gray, but I'm not sure where to go with the last three colors (light gray, highlighted text).

I think the mIRC colors are a little bit unorthodox, so the port for terminal emulators should be very easy. I'll work on that once I get the mIRC colors down, and I'll run whatever I come up with by you.

Edit: for highlighted text, I think this translates to dark1 and light1 based on the specified term colors. I'd just like to hear what you suggest for gray and light gray. I'm using darktooth-darkslategray4 and darktooth-light2, respectively, since these seem to best correspond to the default client colors.

jasonm23 commented 9 years ago

My suggestion for greys is the light and dark sets, consider that greys are usually tints on black / white, so the dark / light set provide same for darktooth.

jasonm23 commented 9 years ago

@Poorchop would you be interested in making a Tmux theme from Darktooth?

Poorchop commented 9 years ago

I'm not familiar with Tmux themes but I can certainly take a look. So far, I have a gnome-terminal theme and I am still trying to work out the mIRC colors, of which I'd like to soon post a screenshot to get your opinion. I'm also going to try and port this to a few other text editors, such as CodeMIrror (which should cover Brackets), Ace editor (cloud9, GitHub's syntax highlighting), the JetBrains IDEs, and possibly a few other editors. Some ports will be easy but some others might take more time since I'm learning as I go.

jasonm23 commented 9 years ago

Atom would be nice too, and I suppose SublimeText.

Note I built a ruby gem a while ago to convert ST2 themes to Emacs, I will dig it up and see if it's easy to use it to map to other structures.

jasonm23 commented 9 years ago

https://github.com/emacsfodder/tmtheme-to-emacs

jasonm23 commented 9 years ago

Hmmm this might only be a useful reference, but it may serve as a stub for a sort of Pandoc for themes.

See also the theme editor code I made here https://github.com/emacsfodder/emacs-theme-editor/

jasonm23 commented 9 years ago

this will probably be the most useful https://github.com/emacsfodder/emacs-theme-editor/blob/gh-pages/js/face-table.coffee

But it's not really the thing for darktooth and other themes that have a managed palette.

Poorchop commented 9 years ago

It might help me iron out some of the colors that I'm not sure about, so thanks for the links.

jasonm23 commented 9 years ago

I also have a lisp function to generate hue tables and kurecolor an Emacs interactive color manipulation tool.

https://github.com/emacsfodder/kurecolor

See https://github.com/ocodo/.emacs.d/blob/master/custom/handy-functions.el find make-kurecolor-hue-table at the bottom.

Works best if you have rainbow mode on.

Poorchop commented 9 years ago

I've been using the neutral and bright colors as the template for creating themes in other programs, but I only just noticed that the neutral and bright definitions are identical. Is this typical in other Emacs color themes as well? I was using a 256 terminal color table to look up the hex codes for the bright colors, and in doing so, I completely missed the fact that the hex codes were identical to the neutral counterparts.

When trying to map the theme in PuTTY for example, there is an ANSI Red and an ANSI Red Bold. I thought that by convention, ANSI Red would be the equivalent of darktooth-neutral_red while ANSI Red Bold would have a brighter value, but only darktooth-faded and darktooth-dark differ from the neutral colors, and they obviously have darker values.

I haven't actually noticed any issues with using identical colors for ANSI Red and ANSI Red Bold, but I'm not sure if it might cause issues for some other usage case that I haven't seen yet.

jasonm23 commented 9 years ago

Yes it should be light and faded to provide a difference.

This is a palette oddity I inherited from Gruvbox

Poorchop commented 9 years ago

After a lot of indecisiveness, I finally have the mIRC colors mostly worked out. Because this theme (and Gruvbox) are unconventional with regards to the bright vs. neutral colors, I substituted all the light variations in the mIRC color spec with the darktooth-faded equivalents. This means that the colors are kind of backwards, but I prefer keeping darktooth-neutral as the standard set of colors, rather than the secondary bold/bright set.

untitled

I took liberty with color of the user's personal text events and the color of selected text. Theuseus's messages represent what your messages would look like in the client. I used aquamarine4 because it was close to the default dark gray color, and DarkSlateGray4 stuck out too much. For the selected text color, I used the pos-tip definitions.

The faded colors make the theme look a little murky, but there's not much else that can be done apart from doubling up on the neutral colors. Here's the full palette, along with the default mIRC colors for comparison:

untitled2

I also wasn't too sure what color to use for color 31, but I pulled it from the Darktooth palette and it's close enough the corresponding mIRC color. Let me know if you think any changes should be made. Otherwise I'll try to start converting Darktooth for use with other text editors when I get some more free time.

jasonm23 commented 9 years ago

Looks good, can you help me see them as they map to darktooth's palette? (is your color chart html?)

Poorchop commented 9 years ago

I think that HexChat converts the hex color input to RGB. I used the 256 color palette for this port. Here is my color map:

Local colors:

16: darktooth-light1/color-223 -> #FFD7AF 17: darktooth-dark1/color-237 -> #3A3A3A 18: darktooth-neutral_blue -> #87AFAF 19: darktooth-neutral_green -> #AFAF00 20: darktooth-neutral_red -> #D75F5F 21: darktooth-sienna -> #DD6F48 22: darktooth-neutral_purple -> #D787AF 23: darktooth-neutral_orange -> #FF8700 24: darktooth-neutral_yellow -> #FFAF00 25: darktooth-faded_green/color-100 -> #878700 26: darktooth-neutral_aqua -> #87AF87 27: darktooth-faded_aqua/color-66 -> #5F8787 28: darktooth-faded_blue/color-24 -> #005F87 29: darktooth-faded_purple/color-96 -> #875F87 30: darktooth-aquamarine4 -> #83A598 31: darktooth-light2/color-250 -> #BCBCBC

Foreground: darktooth-light0/color-229 -> #FFFFAF Background: darktooth-dark0/color-235 -> #262626

Selected text:

Foreground: darktooth-light0_hard Background: darktooth-dark_aqua

For the interface colors, I just re-used the local colors: New data = 18 New message = 23 Highlight = 19 Marker line = 24 Away user = 30 Spell checker = 20

I think the highlight color is typically set to color 25, but I left at 19 because color 25 should be bright green and I had to use faded green as we discussed. It's just a HexChat theme so I think it's okay to be a little inconsistent with the conventions.

For porting to terminal emulators, I think also need to work out the color scheme for dir_colors, so it's going to be a little less straightforward than just following Term colors. It might be quite a while before I find the time to port this to some other text editors, but I will get to it eventually.

jasonm23 commented 9 years ago

AFAIK all you need to do is map from 32 - 47?

Doesn't dircolors just use ANSI?

jasonm23 commented 9 years ago

Sorry I meant 30-47

Poorchop commented 9 years ago

I guess an ANSI scheme would be enough but I noticed that dircolors-solarized also has a scheme for 256 color terminals, and they have custom rules for a lot of different files. I don't think the default scheme distinguishes between different files like that, so maybe that's just extraneous work.

Poorchop commented 9 years ago

The theme doesn't seem to transfer over to CodeMirror/Brackets very well. I think I spent about 12 hours alone finding new base templates, styling, and then starting all over again from scratch. This is my work in progress so far:

progress

As you can see, it doesn't look as good as it does in Emacs because the foreground color is hardly used anywhere, so it's over-saturated with aquamarine4. I don't know why it treats Python libraries as variable names but I couldn't figure out how to change that.

I used yellow and red for classes when I wasn't sure of what was being affected. I'll try to finish up as much as I can and then post my work in progress, and maybe you can help me finalize the style and make some adjustments where you see fit.

Edit: Link to work in progress

jasonm23 commented 9 years ago

Looks pretty good to me

Poorchop commented 9 years ago

PuTTY theme is up. I think I ended up using dark2 for ANSI black and light2 for ANSI white - best compromise between readability and aesthetics. I didn't know what Colour4 was supposed to be so I just left it as 0,0,0.

Preview

jasonm23 commented 9 years ago

I'll see about getting the PuTTY theme converted to iTerm

jasonm23 commented 9 years ago

Have you seen this ?! https://github.com/chriskempson/base16-builder

Poorchop commented 9 years ago

Wow that's incredibly useful. This seems to cover everything under the sun. Have you given the tool a try yet? I'd like to see how it compares to the work I've done for CodeMirror so far - at the very least, it should help me work out a few of the places where I'm stuck with porting the theme over.

jasonm23 commented 9 years ago

I have, I have an output folder I'm about to push to darktooth theme ports

Poorchop commented 9 years ago

Brackets theme is done. There is a lot more room for custom styling, but that requires taking a lot more liberties with elements that aren't defined in the source Emacs theme. There are still four selectors that are unaccounted for, but I don't even see them included in most other themes so I think it should be fine.

If you ever have the time, you should test out the theme in Brackets yourself and if you approve, I can submit it to the official extension registry.

I assume you'll be keeping an eye on the port repository - I guess I'll just post any major questions that I have here (or elsewhere if you prefer), but otherwise I'll just keep working on more ports when I can.

jasonm23 commented 9 years ago

Yeah, I'll try brackets theme on Monday. I'm travelling this weekend

jasonm23 commented 9 years ago

@Poorchop I made a keyboard theme for Cherry MX keys (UV printed CMYK 600dpi) - based on Darktooth.

https://github.com/emacsfodder/dark-tooth-wasd

I thought you would like it

Poorchop commented 9 years ago

That's pretty interesting. The mockups look good and I think that it would look amazing with some backlighting. I don't have a compatible keyboard at the moment but maybe some day.

jasonm23 commented 9 years ago

there's always rbg leds with black keys + translucent doubleshot legends, then it'd be "simple" to map any color schemes to the board ...

You got me thinking about a new purchase! D:

Poorchop commented 9 years ago

I started work on an Atom theme today - it's pretty frustrating to figure out what every element name corresponds to, so it's probably going to take a long time to finish. Hopefully I'll remember to push the work in progress to the repo later on when I'm back on my main computer so that anyone who has time can help if they want.

jasonm23 commented 9 years ago

FYI keeping an SSH gateway available to your machine means you can always WIP commit and push when you're away from it. (Only use key access)

jasonm23 commented 8 years ago

Closing. Poorchop's project deals with this well.