How to applying IntelliJ theme in ZAP
어제 BurpSuite의 Customizer에 대한 글을 썼었습니다. BurpSuite에서 FlatLaf의 IntelliJ Theme를 사용할 수 있도록 지원해주는 확장 기능이였고, 글 말미와 댓글에도 작성했듯이 ZAP 또한 2.10 버전부터 FlatLaf를 사용하고 있기 때문에 구현이 가능할거란 생각이 들었었습니다.
개인적으로 Java를 좋아하진 않지만 간단하게 테스트해보니 잘 되어서 Simon과 이야기를 나누었는데, 결과적으론 ZAP Core보단 AddOn쪽으로 방향을 잡는 것 같아 일단 PR은 던지지 않은 상태입니다. 시간이 지나면 까먹을 수도 있기 때문에 간단히 정리해서 글로 작성해둡니다.
FlatLaf IntelliJ Themes Pack
FlatLaf는 IntelliJ Themes Pack을 지원하고 있습니다.
이는 FlatLaf를 기반으로 한 앱은 다양한 테마를 기본적으로 가져다 쓸 수 있다는 것을 의미합니다. Atom 부터 Github, Monocai 등등 색감 자체가 괜찮은 테마들을 많이 지원하고 있어서, Java App에서 조금 더 쉽게 컬러링을 할 수 있는 좋은 라이브러리입니다. 각 Class명으로 테마를 지정하며 테마별 Class는 아래 링크에서 확인할 수 있습니다.
https://github.com/JFormDesigner/FlatLaf/tree/master/flatlaf-intellij-themes
- com.formdev.flatlaf.intellijthemes.FlatArcIJTheme
- com.formdev.flatlaf.intellijthemes.FlatArcOrangeIJTheme
- com.formdev.flatlaf.intellijthemes.FlatArcDarkIJTheme
- …snip…
Add gradle implementation
implementation("com.formdev:flatlaf-intellij-themes:0.45")
Add class in code
gradle에서 flatlaf-intellij-themes 가져왔기 때문에 코드단에서 아까 리스트에서 봤던 Class들을 사용할 수 있습니다. ZAP쪽에서 기존에 사용하던 Interface가 있어서 추가만 해주었습니다.
public void initView(ViewDelegate view) {
Arrays.asList(
new LookAndFeelInfo("Flat Light", "com.formdev.flatlaf.FlatLightLaf"),
new LookAndFeelInfo("Flat Dark", "com.formdev.flatlaf.FlatDarkLaf"),
new LookAndFeelInfo("Flat IntelliJ", "com.formdev.flatlaf.FlatIntelliJLaf"),
new LookAndFeelInfo("Flat Darcula", "com.formdev.flatlaf.FlatDarculaLaf"),
new LookAndFeelInfo("Material Arc Dark","com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatArcDarkIJTheme"),
new LookAndFeelInfo("Material Atom One Dark","com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneDarkIJTheme"),
new LookAndFeelInfo("Material Atom One Light","com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightIJTheme"),
new LookAndFeelInfo("Material Dracula","com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatDraculaIJTheme"),
new LookAndFeelInfo("Material Github","com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubIJTheme"),
new LookAndFeelInfo("Material Light Owl","com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlIJTheme"),
// ... snip ...
new LookAndFeelInfo("Material Solarized Light","com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedLightIJTheme")
)
.forEach(UIManager::installLookAndFeel);
}
저에겐 특이사항은 없었는데 환경에 따라서 문제가 있을 수 있나봅니다. 아래 링크 참고해주세요!
https://github.com/hahwul/assets.hahwul.com/issues/46#issuecomment-894730895
new LookAndFeelInfo("FlatLaf Light", "com.formdev.flatlaf.FlatLightLaf")
Build and test running
build
./gradlew build
zap쪽에서 현재 소스코드로 앱을 실행할 수 있도록 :zap:run
으로 만들어뒀습니다.
./gradlew :zap:run
아무튼 실행해서 해보니 잘 동작하네요 😎
Commit
https://github.com/hahwul/zaproxy/commit/d96daba3b12a0d9c5708b272ea6655a53ce32cff