Giter Club home page Giter Club logo

eclipse-spectrum-theme's Introduction

Eclipse Spectrum Theme 🌌✨


Give Eclipse 4.16+ a fresh new look with Spectrum Theme.

This free and open-source theme plugin enhances your Eclipse IDE experience with a clean visual overhaul that can be customized to your liking.

Plugin Features:

  • Spectrum Theme ✨: a clean & flat visual overhaul to Eclipse IDE
  • Customizable theme colors 🌈: show your style by changing the colors used in Spectrum Theme. Associate different color schemes on a per-workspace basis.
  • Customizable Project Explorer font 👀: change the size & font of the Project Explorer in Eclipse IDE

📸 Screenshots

How it looks

How it looks (form editor)

Note: The above screenshots were taken on Linux using with Abrus-dark GTK theme.

🎨 Color customization examples

Custom colors 1

Custom colors 2

Custom colors 3

How to customize Spectrum Theme's color & font preferences

Open Eclipse's preferences and navigate to General >> Appearance >> Colors and Fonts. The plugin's color & font preferences are under the Spectrum category folder.

Modern dark color preferences

📥 Installation

Available via Eclipse Marketplace or update site.

Marketplace link

Drag the icon below to your running Eclipse workspace

Drag to your running Eclipse* workspace. *Requires Eclipse Marketplace Client

Update Site

https://raw.githubusercontent.com/AObuchow/Eclipse-Spectrum-Theme/updatesite/updatesite/

Planned features:

  • 💾 Saving user color schemes to CSS, which can be easily shared

  • 🔮 Dynamically generated color schemes (from user-selected colors or randomly)

eclipse-spectrum-theme's People

Contributors

aobuchow avatar ingomohr avatar mbooth101 avatar pyvesb avatar

Stargazers

 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

eclipse-spectrum-theme's Issues

Product won't start

Note: The product build is currently turned off on master branch because it takes much longer to build the entire repo.
So, maybe, this issue won't be that relevant in the future, anymore (e.g. in case we decide to remove the product altogether)

Here's the Problem
The product (built w/ mvn) won't start on Mac (Catalina) and Windows (10).

Here's what the log is saying:

java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:81)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1447)

As @vogella pointed out, we can use https://github.com/vogellacompany/tycho-example for testing. For updating the product config, I used the tasks example (i.e. some other example). Maybe, this one can help us at finding what the problem is.
Besides, this example has a projects/folders-structure we could use to clean-up the root folder of this Git repo... (just a thought - and maybe something for another issue). :)

Projects that have Git changes have different font color

Hello, hello!

In the Package Explorer on my macOS machine, I noticed that Git projects that have changes appear with a slightly darker font colour. See below:
Screenshot 2020-06-16 at 09 41 39

Is this intentional? If it is, I would have expected the two colours to be inverted, in other words the projects with changes to have the lighter colour, so that they stick out more and indicate to the user that there are uncommitted changes. That's only my personal opinion though, I'm not too fussed as this is only a minor detail. 😉

Let me know if you need any more information!

Error report on Marketplace

There's some error reports I've been seeing on marketplace:

Listings: 
Spectrum Dark Theme
Error Code: 
4
Error Message: 
Operation details
Installable Units Reported: 
com.aobuchow.themes.spectrum.feature.feature.group,1.0.0.202006290354
Detailed Message: 
Cannot complete the install because one or more required items could not be found. Software being installed: Spectrum Theme 1.0.0.202006290354 (com.aobuchow.themes.spectrum.feature.feature.group 1.0.0.202006290354) Missing requirement: Spectrum Theme 1.0.0.202006290354 (com.aobuchow.themes.spectrum 1.0.0.202006290354) requires 'bundle org.eclipse.e4.ui.css.swt.theme 0.0.0' but it could not be found Cannot satisfy dependency: From: Spectrum Theme 1.0.0.202006290354 (com.aobuchow.themes.spectrum.feature.feature.group 1.0.0.202006290354) To: com.aobuchow.themes.spectrum [1.0.0.202006290354]

It might be related to not specifying a version for org.eclipse.e4.ui.css.swt.theme? See: https://github.com/AObuchow/Eclipse-Spectrum-Theme/blob/master/com.aobuchow.themes.spectrum/META-INF/MANIFEST.MF#L9

Errors with debug colors

Hello! 👋

I've seeing the following exceptions when using ansi-econsole with the theme:

java.lang.ExceptionInInitializerError
	at java.base/java.lang.J9VMInternals.ensureError(J9VMInternals.java:193)
	at java.base/java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:182)
	at mnita.ansiconsole.participants.AnsiConsoleStyleListener.<init>(AnsiConsoleStyleListener.java:44)
	at mnita.ansiconsole.participants.AnsiConsolePageParticipant.init(AnsiConsolePageParticipant.java:45)
	at org.eclipse.ui.internal.console.ConsoleView$3.run(ConsoleView.java:343)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.ui.internal.console.ConsoleView.doCreatePage(ConsoleView.java:340)
	at org.eclipse.ui.part.PageBookView.createPage(PageBookView.java:369)
	at org.eclipse.ui.part.PageBookView.partActivated(PageBookView.java:696)
	at org.eclipse.ui.internal.console.ConsoleView.lambda$0(ConsoleView.java:412)
	at org.eclipse.ui.internal.console.ConsoleView$$Lambda$918/0000000009018220.run(Unknown Source)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4124)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3791)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1158)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1047)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:658)
	at org.eclipse.ui.internal.Workbench$$Lambda$120/0000000000000000.run(Unknown Source)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:154)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1447)
Caused by: java.lang.IllegalArgumentException: Argument not valid
	at org.eclipse.swt.SWT.error(SWT.java:4704)
	at org.eclipse.swt.SWT.error(SWT.java:4638)
	at org.eclipse.swt.SWT.error(SWT.java:4609)
	at org.eclipse.swt.graphics.RGB.<init>(RGB.java:80)
	at mnita.ansiconsole.preferences.AnsiConsolePreferenceUtils.colorFromStringRgb(AnsiConsolePreferenceUtils.java:72)
	at mnita.ansiconsole.preferences.AnsiConsolePreferenceUtils.refresh(AnsiConsolePreferenceUtils.java:151)
	at mnita.ansiconsole.preferences.AnsiConsolePreferenceUtils.<clinit>(AnsiConsolePreferenceUtils.java:44)
	... 35 more

That plugin is unusuccessfully trying to parse one of the debug colors here:
https://github.com/mihnita/ansi-econsole/blob/e962dbf1fa36e7a7e55b3be83ef0b0a4ab487bf7/AnsiConsole/src/mnita/ansiconsole/preferences/AnsiConsolePreferenceUtils.java#L150

Looking at the theme's CSS style sheet, I noticed that there were spaces in some color values:
https://github.com/AObuchow/Eclipse-Modern-Dark-Theme/blob/b2bf890947dd3a517f214cd30f1efba589c0570b/com.aobuchow.themes.moderndark/css/preference_styles.css#L105

I'm guessing this is what is causing the problem. :)

Add GitHub shields/badges to the README

As discussed here, it'd be nice to use some badges in the repository's README.

@PyvesB gave some really good suggestions on which we could use:

"Yes, there are quite a few Eclipse Marketplace badges available, I recommend the downloads ones as the information is not directly available through the marketplace website. Favorites is a nice to have as well.

GitHub commit activity is indeed another good one...

Another idea: you could add a badge indicating the Prettier version used by the project for example (search for "package.json dependency version" in the Shields search bar)."

I've never added a badge to a repo before so I might need a bit of help from @PyvesB ;)

Create a preference page for the plugin

As mentioned in #46, it'd be nice to have a preference page for this plugin.

The user could store various color schemes they've come up with and switch between them. Additionally, this would allow adding logic to calculate the theme's colors relative to the user's choice of accent/background color.

Automatically suggest to switch themes upon plugin installation

Maybe it’d be nice to make a dialog pop up when the user installs the plugin for the first time. The dialog would give the user the option to switch to Spectrum theme by clicking a single button.

This might be especially nice for users new to the plugin, or users who install the plugin but forget to swap themes.

A requirement would be that the dialog is only shown once, when the plugin is originally installed.

Add Release Pipeline

This is based on a discussion w/ @AObuchow .

For now, we have a CI that builds, tests and deploys the updatesite for every branch to a dedicated build-branch.

Those branches can help for development, but they don't cover all we need to cover for a release.

So, here are some ideas the release pipeline could cover:

  • Integrate w/ the "release" option on Github
    • i.e. We could use the "release" option to create a new release out of the e.g. the master branch.
    • The "release" event would trigger the release pipeline
  • The pipeline takes the fully-tested master-branch-build (available atm. on branch "updatesite - which is currently used as release updatesite location)
  • ... and adds it to a composite updatesite that contains all release-versions of the theme
    • The composite updatesite would need a fitting location on some server
  • The pipeline also could add the changelog to the Github release entry - see #89
  • If possible, the pipeline could also update the Eclipse Marketplace entry for the theme

Marketplace icon in readme has a low resolution on HiDPI

Screenshot 2020-06-28 at 11 34 03

The screenshot is taken on a retina display (Macbook Pro). The effect should be the same on a 4k display as well.
Compared to the other icons, the Marketplace icon has a pretty low resolution and looks a bit misplaced.

Maybe, there's a HiDPI icon for that, too? (Didn't check, though)

It's hard to see where parts are going to be moved to

moving_parts

If you move parts around, you usually see a highlight which tells your where your Part will be moved and what area it will use.

On the editor area, those highlights are visible (because the editor area has a slightly lighter colour).

However...

  • On a tab folder it's a bit harder to see.
  • On some other part (in this example: the Outline View), it's practically impossible to see where your part is going.

Allow importing & exporting of user color schemes.

As mentioned in #52 (comment) & #46 (comment), it'd be nice to be able to save & load user-defined color schemes.

The user could have a list of saved color schemes to switch between in the preference page (depends on #52).

However I'm not sure yet what file type & format should be used when a color scheme is exported. I was thinking perhaps JSON due to its simplicity or CSS. An advantage of using CSS is that if hex codes are used to encode the color scheme's colors, their color preview will be shown in the Generic Editor.

Add a "social preview" to the repo

Now that the plugin has a logo, a "social preview" should be added to the repository using the logo.
The logo will probably have to be altered to be 1280×640px (recommended size)

Document the process of making this plugin

On Twitter, @davidsalter asked if I could do a write-up about how this plugin was made.

To quote him:
"I was thinking from a development point of view. For example, how did you create the project, what code do you need to write to change the theme etc. I’d certainly be interested in the technical details."

Some of the contents of this write-up could include:

  • Why I started this plugin
  • Resources I used to make the plugin (Primarily @vogella tutorials & looking through Eclipse source code)
  • The typical development workflow (using color-pickers & referencing the Eclipse Platform theme's CSS)

Add GitHub Workflow for generating changelog

It'd be nice to have changelogs automatically created based on the closed issues for a given release. I could feature this change log/release notes on the project's README as well as the marketplace listing.

A step further would be to automatically generate the Eclipse marketplace listing so that I can easily copy/paste it into the Eclipse marketplace site when a new release occurs, but this might be a bit overkill.

It seems such GitHub workflows already exist:

Add a license

A license needs to be added to the product as well as for the headers of each css file.

The most obvious choice of license is the EPL2, although I should look into if another eclipse license would be more suitable.

Python source code hard to read

Hello again! 👋

Python source code is very hard to read. See the following screenshot:
Screenshot 2020-06-23 at 15 38 02

I'm guessing Pydev handles its own colour preferences. Obviously it's probably not manageable to handle every single third-party plugin, but in this case Pydev is the 5th most popular plugin on the markteplace, so may be worth adding support for it. 😉

Some elements are not properly styled

I've tried the theme out, it's a good start. I like the bits of red here and there. 👍

However, on my Windows machine at least, not all parts are being themed properly. For example in the project explorer:
modern-dark

I noticed you were importing platform:/plugin/org.eclipse.ui.themes/css/dark/e4-dark_preferencestyle.css. Maybe you're missing out on some platform-specific overrides by doing so?

Thanks for looking into this!

Release on the Eclipse marketplace

I think it’s just about time to do the first release on the eclipse marketplace.

I believe a logo will be required, which will be for a separate issue.

Add CI to Auto-Deploy Updatesite - even for PRs (for testing)

As discussed w/ @AObuchow, we would like to

  • automate building and deploying the updatesite
  • have an built updatesite available automatically to easily test each and every PR.

Thoughts on this

  • If we would want to use a Github repo too for the updatesite-builds, we would need to do it on another repo - because if we would update the updatesite build directly on the repo with the code itself, this would call the CI again, at once - and thus would trigger an everlasting happy CI-Job running. ;)
  • If we provide builds for every pull request, we need to think about deleting the builds again.
    • Maybe, there's a way to hook-in some action to the "Merge" action of a Github PR.

Progress bars in dialogues have light surroundings

Hello again!

I spotted a small issue with some progress bars on macOS:
Screenshot 2020-06-16 at 11 54 21

As you can see, there's a not-quite-centred white rectangle around the progress bar. This only seems to happen for progress bars within dialogues, there is no issue with the ones in the Progress View for example.

As usual, let me know if you need any more information!

Javadoc is hard to Read

Hi,
the Javadoc View, and Tooltip/Hover is very hard to read.
For me it is Black font on Black background.
grafik

There already has been an issue where it was to light.
#13

Windows
Eclipse 2020-06
Plugin version 1.0.7.202006190441

Variables view is hard to use

Hello!

Today was a debugging session with a colleague! We noticed that the Variables view suffers from a few problems:

  • the yellow background makes variables very hard to read. I believe this is the "Changed value background color".
  • the area around the expression drop-down is white. Note that this is also the case for the Expressions view.

Screenshot 2020-06-18 at 15 52 44

Apart from that, the rest of the debugging session went fine, though I don't think I'll convince my colleague to move away from NetBeans today. 😄

Come up with a new name

Although "Modern Dark" works as a name, it might be worth coming up with a better name. On twitter, an Eclipse contributor mentioned that the word "Modern" can quickly get out-of-sync with changes in UI trends.

@PyvesB suggested naming the theme "Eclipse Spectrum Theme" which sounds nice to me.

To quote his reasoning (in the context of the new logo ideas):
"The dark background and the colored lines reminds me of those color spectrum charts used in physics, chemistry and astronomy. Hence my suggestion: "Eclipse Spectrum Theme". :)"

Ideally, if the plugin is going to be renamed, it should occur before the marketplace release. I could always change the name after the 0.0.1 release, but it might confuse some users (I'm not sure how many downloads the plugin will get for the initial marketplace release, so it might not be a big deal)

All name ideas are welcome :)

Use GitHub Actions to deploy releases to the project's repository

Now that we have a Maven + Tycho build, investigation towards deploying the update site to GitHub should be done.

@PyvesB mentioned using a similar technique for his Ruby plugin. To quote him:

"Just as a heads up, I implemented a similar GitHub action for my Ruby plugin here: https://github.com/PyvesB/eclipse-solargraph

However, something recently changed with GitHub actions as the last two runs failed. Surprisingly, something seemed wrong with the cp command, but I haven't really had time to investigate further."

Reference updatesite made by GitHub Action in Pull Request template

As mentioned by @ingomohr here, it'd be nice to mention to contributors who submit a PR that their fork will automatically create an updatesite if they are working on their forks master branch.

This could be nice for contributors who aren't familiar with Maven or Eclipse plugin development.

The Pull Request template would have to make special mention that the contributors name on GitHub must be used to obtain the correct updatesite, eg: https://raw.githubusercontent.com/[GitHub Username]/Eclipse-Modern-Dark-Theme/updatesite/updatesite/

Plugin has 2 licenses

Seems like two licenses appear when installing the plugin. Only the EPLv2 should be present.
image

Make a logo for the plugin

I believe for the Eclipse marketplace, a plugin logo/icon is required.

This bug is to discuss logo ideas & prototypes.

Some ideas:

  • Abbreviate “Modern Dark Theme”: MDT, MDT4e, MDT4E
  • Use the Eclipse “e” logo in the “o” of “modern”

Use unified CBI license

As mentioned by @mbooth101, we should use a unified CBI license now that we have a tycho build being used for this plugin.

To quote Mat:

"If you adopt tycho build, consider using the unified CBI license: https://wiki.eclipse.org/CBI#CBI_license_bundle

This way you will always have the latest text of the license without needing to duplicate the license content a bunch of times in your repo.

Let me know if you need any hints how to implement it :-)"

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.