大家好,前不久分享了下我们的 HardHacker 的主题,有些朋友表示想要 JetBrains 的版本。讲道理我也是写了十几年 Java 的,那还有什么好说的,整💪。
目前已经整了一个算是可用的版本了,大家可以在 Marketplace 里搜索 HardHacker 找到。
这里也丢个图:
只能说真的是无知者无畏,下次谁再让我给 IntelliJ 做主题,我谢谢他🙏。以下都是吐槽,也算是我踩到的坑,分享出来给也想要做 IntelliJ 主题的勇士参考一下,不感兴趣的朋友就可以直接略过了。
首先我们打开官方文档,找到 Theme 的部分。IntelliJ 的 Theme 也是 plugin 的一种,JetBrains 专门为 Theme 做了一个简化的工程和创建流程。看起来很简单,next 、next 、run ,喜提 ClassNotFoundException
。经过亿点点研究之后,我发现是 IDEA 在 run Theme plugin 的时候 classpath 里少了个 IDEA 自己的 jar ,但是没找到办法自定义 run Theme plugin 的时候的 classpath 。
于是又经过亿点点搜索之后,我找到了这个:
相关 issue 在这:https://youtrack.jetbrains.com/issue/IDEA-302414 。好嘛,7 months ago 。不过 JB 家 bug 常年不修也是传统了🤷🏻♂️,只要有 workaround 那也行。
把我的 theme 切换成 gradle 工程之后,总算可以跑起来了。
众所周知,IntelliJ 的样式分成 theme 和 schema 两部分,theme 控制 UI ,而 schema 则控制 editor 的内容。(这里就要给 vscode 磕一个了,它就不分,开发 theme 的体验非常舒爽)
由于我之前在 Github 上找到一个 JB 官方的 schema converter:JetBrains/colorSchemeTool (github.com) 。用它可以把 vscode 的 theme 转换成 IntelliJ 的 schema ,我决定从它的转换结果开始。然后困惑之旅就开始了。
IntelliJ 的 schema 是个 XML 文件,大概长这样:
<scheme name="Hard Hacker" parent_scheme="Darcula" version="142">
<colors>
<option name="SELECTION_BACKGROUND" value="3f3951"/>
</colors>
<attributes>
<option name="HYPERLINK_ATTRIBUTES">
<value>
<option name="FOREGROUND" value="e192ef"/>
<option name="EFFECT_TYPE" value="1"/>
<option name="EFFECT_COLOR" value="e192ef"/>
</value>
</option>
</attributes>
</scheme>
看起来挺清晰的,但问题是这个 option 的 name 是完全没有文档的。官方的意思是你看着我们内置的主题文件自己猜吧:intellij-community/highContrastScheme.xml at idea/231.8109.175 · JetBrains/intellij-community · GitHub 。
这些 name 命名毫无规律,比如:
你想从中找到规律?主打的就是一个没有规律。✌️🤬
那么怎么才能准确找到你想改的 option 呢?特别是上面提到的那个 JB 官方转换工具的转换结果还缺斤少两的情况下?就此事我和 ChatGPT 探讨了一下,它给了我一个建议:你直接在 IDE 的 settings 里改,然后导出,再查找。你别说还真管用……我只需要找到那个配置,然后把颜色改成比如 334554 ,123456 ,然后导出来打开,cmd + f 即可……
IntelliJ 的 schema 里,不同 scope 之间是有继承关系的。比如 Java 的 keyword 会继承 default 的 keyword 。这很方便,但同样的,这部分也没规律。简单来说就是有时候你直接不管,它自动就继承了,而有时候你又必须显式声明,否则它就会有一个默认的💩一样的配色:
<option name="XPATH.KEYWORD" baseAttributes="DEFAULT_KEYWORD"/>
注意看我刚才贴的 schema 文件的内容第一行:
<scheme name="Hard Hacker" parent_scheme="Darcula" version="142">
version 是 142 ,但别问我为什么是 142 ,我只知道我改成 143 不行,但我改成 143 再改回 142 似乎可以刷新某种 cache 🧙♂️!因为你会发现当你在 devkit 的 IDEA 中改了 schema 并保存后,有一定概率你再改 schema 文件它不生效!此时就可以用这个 143/142 大法。
然后这个 parent_scheme 是 Darcula ( IntelliJ 自己有个 Darcula 主题,并不是那个 Dracula themes ),你改成别的比如 Dark 也是没用的。还有这 Darcula 拼错了吧喂?
这就不得不再提一下 vscode 了,保存实时生效,简直太方便了🧎🏻♂️。但 IntelliJ 这个你要么重新手动 import 一下,要么直接 rerun plugin ,然后等它重新启动一个 devkit 的 IDEA 。
搞了几次之后我就学乖了,我在 notion 里列了一个 TODO list ,一次改一批然后列进去。重启一次之后对着这个 TODO list 再一个一个检查……
都 2023 年了。唯一支持透明度的是 editor 里的滚动条。
说完 schema ,我们来看看 theme 部分。基本上 schema 部分的槽点,theme 部分都占了。比如找不到 key (官方给了一个 LaF 工具,但也只能看到 key 值,并不知道具体对应哪里,得不断修改来尝试);比如不能 hotreload 等等。此外因为 2023 的 New UI 还在 beta 阶段,所以有些 UI 样式改不了,所以如果你安装了主题之后发现有些地方不协调,那很可能就是因为……改不了。
但最让我抓狂的是 code suggestion 的弹出框,就是这个东西:
为了调这个东西,花了我大半天时间。因为……这东西别的都归 theme 管,唯独背景色归 schema 管!我 TM 带着无比的困惑在 LaF 和别人的主题文件里找它的背景色找了两个小时!两个小时!🤬🤬🤬
经过两天的折腾,我算是知道为什么 IntelliJ 的主题这么少了,就这开发体验没点共产主义吃苦耐劳的优良品质都坚持不下去。
写到这里的时候我突然想起来自己以前在 youtrack 上 star 过的一些 issues ,我就去翻了一下。好家伙 9 years ago 的 issue 还开着呢,7 months 简直不值一提。
说实话就 schema 里那些 attribute names 的混乱情况,让我很难相信 IntelliJ 里面的代码不是一坨💩⛰️……
年年更新大版本,就不能解决一下这些历史遗留问题吗?突出一个能跑就行。这么想想好像拿 Fleet 来彻底解决一下是个合理的思路,虽然 JB 说的挺好听的 Fleet 和 IntelliJ 不存在竞争关系,但这不是明摆着前浪后浪的事?
想想自己从 09 年开始用 IntelliJ IDEA ,到今天 IDEA 也显出老态了。Anyway ,欢迎大家试用主题。
1
encro 2023-05-04 15:59:16 +08:00
IntelliJ 每位员工收入约 35 万美元。
|
2
ohmycorolla 2023-05-04 16:20:10 +08:00 1
已下载,配色非常喜欢,这个粉红色很骚
|
3
fiveStarLaoliang 2023-05-04 16:32:02 +08:00
IDEA 感觉确实就像廉颇老矣, 尚能饭否, 未来真的可能被 vscode 取代了
|
4
Doracis 2023-05-04 16:42:00 +08:00 5
老哥 我知道这么说确实很过分,但是能不能再出一个白天版的,重度散光程序员看不清黑啊 TAT
|
5
anson0370 OP @ohmycorolla 感谢喜欢,也欢迎使用该配色的 VSCode 、VIM 、emacs 、iTerm2 等等版本 🤣
|
6
anson0370 OP @Doracis 我有在考虑这个问题,虽说亮色版的有点不太符合我们 HardHacker 的定位,但确实对散光比较友好。关键得把配色定一下,做一下倒是不麻烦,因为我未雨绸缪都写了脚本来生成。回头弄好了我来 at 你。
|
8
anson0370 OP @fiveStarLaoliang 实际上我前几年已经在用 VSCode 写 Java 了。
|
9
jy02201949 2023-05-04 16:52:50 +08:00
哈哈哈 看了楼主心路历程,好奇这 IDE 是怎么做到如今这个地位的
|
10
LokiSharp 2023-05-04 16:55:04 +08:00
任何项目大了都会成为屎山,哈哈哈
|
11
Danswerme 2023-05-04 16:58:18 +08:00 via iPhone
心酸的历程🤣 另外我想知道楼主和 ChatGPT 探讨这个问题是怎样提问的呢?
|
13
scyuns 2023-05-04 17:01:12 +08:00
感谢 OP 的踩坑之路,期待楼主分享一下 VSCode 的 Java 实践
|
14
Mandyer 2023-05-04 17:09:27 +08:00
|
15
Vitta 2023-05-04 17:10:28 +08:00 1
能整个 SynthWave 这样的主题么,我太喜欢这个骚主题了
|
16
clf 2023-05-04 17:11:18 +08:00
JetBrains 最近的几个版本的 IDE 更新都有毒。我平时也会为我司写 IDEA 开发插件的。
第一次的坑是 2021 到 2022 大版本更新后,IDEA 创建项目的 API 被修改了,之前写的在列表上看不到了,而创建项目的文档还是没变化,最后是直接从社区版的源码里找了一个插件的代码参考的。( 2021 版本能正常创建项目,2022 版本无法在项目列表里看到) 比如 2022.2 到 2022.3 ,印象里是升级了 JDK17 ,结果一堆官方插件没有升级,限制版本号到 2022.2 ,而我开发的插件由于引入了官方的 git 插件,所以被限制 22.3 无法使用。解决方案就是等官方插件升级。最后直接去掉了 git 插件依赖,砍了一部分功能。 ———————— 之前打算迁移到 VSCode 的,但因为 VSCode Springboot 相关开发以及 Dubbo 开发不如 IDEA 好用,所以最后还是选择继续留在 IDEA 了,团队估计会把大版本停留在 22 或者 23 (因为后面不给报销了) |
17
LongerAng 2023-05-04 17:15:52 +08:00
搜不到,是有什么限制吗?
|
18
declandragon 2023-05-04 17:19:13 +08:00
大佬牛批,我使用的是 PhpStorm 2021.2 ,没法使用你的主题😁
|
19
ijaysdev 2023-05-04 17:22:13 +08:00
同样在 Marketplace 没有搜到,用的 Android Studio 2023.1.1
|
20
caiqichang 2023-05-04 17:26:07 +08:00
以前开发过 intellij 插件,那版本兼容性真的是一言难尽
|
21
hvsy 2023-05-04 17:33:39 +08:00 1
jetbrains 的插件开发文档确实缺失的厉害,想弄点啥都难,很多时候得去看别人的插件和源码才能找到解决方案.
还有 IDEA 很早有类似 hotreload 的主题开发预览了.可以参考一下这个文章 https://blog.jetbrains.com/platform/2021/10/themes-in-intellij-based-ides/ |
22
xiaohundun 2023-05-04 17:33:43 +08:00
我也不想用,那可以推荐个开发 Spring 栈比较好的 ide 么🤩
|
23
anson0370 OP @Mandyer
@declandragon @LongerAng 可能是因为我做的时候起始版本直接 231 起步,因为 2023 开始才有 New UI ,我主要适配了 New UI 。 @ijaysdev 你这个 2023.1 也搜不到我得研究下……我去试试 |
24
TyCoding 2023-05-04 17:41:18 +08:00
没有搜索到,IDEA2023 版本
|
25
roundgis 2023-05-04 17:44:58 +08:00 via Android
又不是不能用....
|
26
TyCoding 2023-05-04 17:45:35 +08:00
Not compatible with the version of your running IDE (IntelliJ IDEA 2022.3.2)
|
27
jabari 2023-05-04 17:46:10 +08:00
配图什么字体呀? 感觉不错~~
|
28
anson0370 OP @TyCoding 抱歉,目前我是对着 New UI 适配的,所以 since 版本直接选的 231 ,也就是 2023.1 。有空的时候我把版本降了看看兼容性再调一下。
|
29
anson0370 OP |
31
anson0370 OP @Vitta 那个主题是很漂亮,可惜它在 VSCode 中的实现是靠 hack VSCode 的文件来做到的,很难迁移到别的工具上。
|
34
kingzeus 2023-05-04 18:10:50 +08:00
很漂亮的主题,已经在用了。感觉颜色亮度有点高,看久了眼睛比较累
JB 的插件确实比较坑,我的插件搞了一半就不想继续了。 |
35
thisrabbit 2023-05-04 18:26:10 +08:00
JB 家 bug 修的确实慢的离谱😂我之前想提个在 markdown 里格式化 table 时不能正确区分 markdown 的列符号 | 和转义的 cell 内容 \|,结果发现这 bug 老早就有人提了,不过最近几个版本好像终于修了。
|
36
ksedz 2023-05-04 18:31:29 +08:00
> 众所周知,IntelliJ 的样式分成 theme 和 schema 两部分,theme 控制 UI ,而 schema 则控制 editor 的内容。(这里就要给 vscode 磕一个了,它就不分,开发 theme 的体验非常舒爽)
VSCode 不区分么,上次想做个自己的高亮主题,支持一些冷门语言,发现无法同时实现词法语法分析和自定义主题。 |
37
EvilDevilJin 2023-05-04 18:37:15 +08:00
OP 有意向做个 VS Code 的 light theme 吗,dark theme 太多优秀的好作品了。
但是 light theme 很少有足够美观精致好用的。 |
38
anson0370 OP @ksedz VSCode 不区分 UI 和 editor 内部的样式,统一一个 theme 文件就搞定了。但你说的要同时做掉语法分析不属于 VSCode theme 的范畴。
|
40
anson0370 OP @EvilDevilJin 有在考虑,主要配色需要重新选一下,目前的色盘放在亮色背景下对比度约等于没有,需要重新调一下色盘起码保证符合 WCAG AA 标准。
|
41
Poluk 2023-05-04 18:57:04 +08:00
非常感谢 OP ,目前我的 Webstorm 和 IDEA 都装了你的主题。还有就是现在可以搜到,两个软件版本是 2023.1.1
|
42
liangkang1436 2023-05-04 19:51:20 +08:00 via Android
老哥 666
|
43
linvaux 2023-05-04 19:59:38 +08:00
OP:IDEA , 我 xxx \dog
|
44
ufo5260987423 2023-05-04 20:08:09 +08:00
首先,大佬牛逼!
然后,唉我也想做 IDE 啊…… |
45
Aloento 2023-05-04 20:17:36 +08:00
swing 写的东西这样很正常了
|
46
ufan0 2023-05-04 20:24:45 +08:00
一直在用系列产品,前年希望写一个顺手的 Plugin ,也是发现官方的插件无法工作跑不通,问题是无法识别 CE 版本的所有产品。
顺手看了下这个问题存在了三年多了,官方都没人修。 看下了 IDEA 的代码和配置文件,提交了解决方案的 issue (没提 PR 是因为那时候我基本忘了 kotlin 语法)......官方也没怎么管,诶。 |
47
alleluya 2023-05-04 20:33:07 +08:00
和 chatGPT 讨论那块笑出声... AI 真的感觉很靠谱 哈哈哈
|
49
ijaysdev 2023-05-04 22:18:56 +08:00
@anson0370 我刚刚用 IDEA 搜了下找到了,然后下午是用 Android Studio 搜的没找到,看了下原来提示 AS 不可用这个主题😂
|
50
sytnishizuiai 2023-05-05 01:59:37 +08:00
感谢,挺好看的
|
51
b1t 2023-05-05 07:06:18 +08:00 via iPhone
出 light 版的话求 @
|
52
blankmiss 2023-05-05 08:06:18 +08:00
linux 下 万年输入法不跟随 都得用户自己打补丁
|
53
Anivial 2023-05-05 08:52:55 +08:00
有一说一,jetbrain 最新的 dark 模式配色真的太阴间了,方法全变成了蓝色,打个代码看鬼片一样
|
54
luzemin 2023-05-05 08:58:05 +08:00
确实搜不到
|
55
qinfengge 2023-05-05 09:25:04 +08:00
俺也搜不到😨
|
56
akring 2023-05-05 09:38:43 +08:00
Jetbrains 家改 bug 的态度确实...... 去 Youtrack 上报一个问题,除了没完没了的让你 dump 各种诊断数据之外,就是让你重置缓存( reset cache )再试试
|
57
Fanatique32 2023-05-05 09:41:51 +08:00
谢谢分享,从劳保角度考虑,建议适配浅色主题。
|
58
neko629 2023-05-05 09:47:07 +08:00
用上了,很酷
大佬牛逼 |
59
40kecedwixyCdM81 2023-05-05 09:50:41 +08:00
已用,骚粉很喜欢
|
60
tzshao 2023-05-05 10:11:44 +08:00
很骚,在用了
|
61
zhuisui 2023-05-05 10:12:32 +08:00
我倒是觉得 JetBrains 的客服和技术人员还可以。
最近出过几个问题,有 ideaVim surround 异常的、新 Runtime 在 Linux 下有问题的,都很快回复并定位解决了。倒是内存占用过大问题,没有得到解决,可能太复杂了。 |
62
junbaor 2023-05-05 10:30:15 +08:00
我到现在也不敢用非官方的主题,为啥呢?大概 16 、17 年那会儿,非官方主题安装后如果再换回官方主题,总有一些颜色配置不能正常回滚,最后用卸载重装恢复的,给我的感觉就是 JetBrains 应该是从来没重视过主题这件事。
|
63
chrosing 2023-05-05 10:51:50 +08:00
求 OP 出一期 Vscode 的 Java 插件配置 我上次弄了一次 感觉还是没有 IDEA 好用 就又用回来了
|
64
ke1e 2023-05-05 10:53:09 +08:00
搜不到的各位可以从这个链接: https://plugins.jetbrains.com/plugin/21613-hardhacker-theme/versions
然后在 IDE 的插件那里用从磁盘安装即可 |
66
Hilong 2023-05-05 12:23:51 +08:00
vscode 里装了下,同感觉整体太亮了
|
67
monetto 2023-05-05 12:53:04 +08:00
深有体会 ...
21 年的时候想给 IDEA 社区版写一个 Spring 插件(类似于旗舰版那种效果),但是,文档基本靠蒙 ... 经常拿个 API 去 Google 搜半天,搜不到任何有用的信息。 对 IDEA API 的认知停留在 “卧槽还有这个 API 可以用在我的插件里”,基本也是靠社区插件(当时大量参考了 MyBatis Mapper 插件),加上连蒙带猜... 好多 API 用不明白,研究一下午都没啥进展,一气之下自己开 Map ,自己缓存,只用 IDEA 的 Class 解析 ... 写到最后,写出来一个勉强可以看的 Demo ... 写了 3 个月,最后放弃了... |
68
Huelse 2023-05-05 13:38:21 +08:00
今年 3 月反馈了一个 2023.1 的设置不生效 bug ,有相当多的类似反馈了,结果到今天都没彻底修好
https://youtrack.jetbrains.com/issue/IDEA-315281 |
69
ColinZeb 2023-05-05 13:58:51 +08:00
希望能出个 VisualStudio 的。
|
70
aqwzj 2023-05-05 14:11:45 +08:00
IDEA 和 pycharm 都用上啦, 我的评价是: 泰裤辣
|
71
dulred 2023-05-05 14:30:47 +08:00
vscode 装了下,有点亮
|
72
aqwzj 2023-05-05 15:14:58 +08:00 1
|
73
anson0370 OP @ColinZeb 有的,直接 VSCode 的 marketplace 里搜 HardHacker 就有。另外还有 iTerm2 、vim 的
|
74
anson0370 OP |
78
SpiderXiantang 2023-05-05 16:02:54 +08:00
|
79
chicbian 2023-05-05 17:08:05 +08:00
用了一下午,很骚,同事看我的眼神都变了。就是感觉亮度有点过高,我个人感觉是渣显示器,不大行,我估计用 macbookpro 的显示器,应该会更加舒服。
|
80
ColinZeb 2023-05-05 17:34:05 +08:00
@anson0370 #73 大佬 我说的是 VS 不带 Code ,我看你 GitHub readme 列表没有 VS ,刚才搜了一下也没有
|
81
shijingshijing 2023-05-05 17:57:40 +08:00
曾经试图更改一下 Firefox 的标签间隔和样式,以为这么简单的一个功能改改什么设定就好了,结果折腾了几天,翻了 N 多资料,最后决定还是改变我自己,让自己适应新的主题算了。
感觉不管什么软件,UI 都有一堆坑,但凡你有丁点想法,注定都是去跳坑。。。 |
82
anson0370 OP @ColinZeb 啊 sorry ,是我会错意了。确实……完全不用 VS ,可能短期内都不会考虑支持了,但是欢迎 PR 。
|
83
anson0370 OP @chicbian 我增加了一个背景色更暗的 darker 版本(当然差距也不会很大就是了……),估计下周 marketplace 审过了之后可以更新试试。
|
84
anson0370 OP @Doracis
@EvilDevilJin hi 两位,我刚在 VSCode 版本中更新了一个 light 版的主题供体验(请 check 下插件版本是 0.2.0 ,VSCode 插件市场也需要一些时间来审核)。 说实话我不是很满意这个 light 版本的,实际动手之后我就理解了 light theme 为什么少有好作品了。 我仍然确保了 WCAG AA 标准和色盲安全性检查。在亮色背景下想要满足 WCAG AA 标准注定要降低彩色亮度,提高彩色饱和度,整体就会和别的亮色主题趋同(这也是为什么亮色主题很多颜色都比较少的原因)。我尽量在不变动配色 hue 色轮位置的前提下调整了一下,但黄色和青色仍然必须改动 hue 色轮位置才能满足 WCAG AA 。 调的我怀疑人生,所以我检查了一下我自己安装了的别的 light 主题,可以说没有任何一个完全符合 WCAG AA 标准的…… |
86
Doracis 2023-05-08 15:13:24 +08:00
@anson0370 感谢感谢
这么一对比,确实是 dark 版的骚气粉色好看,整点主题需要对颜色搭配的高度敏锐和搭配,真不容易鸭,老哥 |
87
rehoni 2023-05-09 17:30:10 +08:00 via Android
@anson0370 写 springboot 和 cloud 好使吗?我还是 java8 和 springboot2
|
89
anson0370 OP @rehoni 我搜索了一下记忆,似乎当时没遇到什么绕不过去的坑,但好使肯定是没有 IDEA 好使的。我记忆中 VSCode 解决不了的一个问题是没有 Kotlin 的 LSP ,也没有办法混合编译 Kotlin + Java 的工程。
|
90
lbfjkaou 2023-05-10 16:46:59 +08:00
非常好看,就是亮度有点高,期待有 dark 版本.
|
91
helee9199 2023-06-27 09:21:33 +08:00
LZ 因为某些原因我没有升级到最新版本 用的是 2022.2.5 ,
但是好像得 2023 才可以使用。 但是我特别想要这个配色方案 这个配色方案 有单独的吗? |
92
anson0370 OP @helee9199 非常抱歉最近忙别的去了没上 V2EX ,我没测试过旧版本兼容性,但我可以打个旧版本的包给你试试。可我怎么联系你?
|
93
helee9199 2023-08-18 09:49:02 +08:00
@anson0370 感谢回复, 可以发我邮箱吗? [email protected]
|
94
layxy 135 天前
还是感觉 Xcode Dark 好看点,可能用习惯了
|