Atom, Discord, 그리고 Hyper

Projects, Development

요즘 들어서 일렉트론을 만질 일이 갑자기 늘어났는데 일렉트론 가지고 한 일을 정리하기 위해서 쓰는 글이다.

atom-discord

그냥 딱히 할 일이 없다가 디스코드에서 Rich Presence 나왔다고 하길래 만든 프로젝트인데 어쩌다 보니까 내가 만든 레포 중에선 그나마 스타를 많이 받은 레포가 됐다. 아톰에서 작업중인 상황을 디스코드에 띄워주는 플러그인인데, Discord RPC가 안 보내지길래 뭐지 뭐지 하고 있었더니 일렉트론 메인 프로세스에서 전송해야한다길래 remote.require까지 써가면서 만들었다.

hyper-vibrancy

투명화 프로젝트 #1. 원래 맥용으로 만들어진게 있긴 한데 윈도우를 쓰다보니까 해봐야지 하고서는 electron-vibrancy 가지고 만든 프로젝트이다. 일렉트론에도 윈도우 투명화 지원이 됐으면 하는데 나중에 PR이나 넣어볼까 싶다. 저게 그냥 투명한게 아니라 아래가 블러처리 돼서 더 이쁘게 보인다.

hyper-powerline, clink-powerline

이건 윈도우에서 파워라인을 쓰기 위한 노력이었으나, 결과적으로는 실패했다. 처음 든 생각은 하이퍼에서 플러그인으로 데이터를 가져와서 만약 프롬프트 (ex: G:\workspace>) 텍스트라면 바꿔치기를 하면 되겠지 했는데, cmd나 powershell에 커서이동 안시 문자가 있어서 텍스트를 바꾸면 커서가 이상한 위치로 이동하게 된다. 그걸 바꿔치기 해야하는데 바꿔봤더니 안정성이 너무 떨어져서 clink에다가 넣는 방법으로 바꿨다. (나중에 알게된건데 이미 clink 플러그인으로도 파워쉘 플러그인으로도 파워라인은 이미 있었다.) 근데 그것도 실패한게, 하이퍼에 cmd 조합으로 들어가면 그냥 cmd에서는 잘 되던 트루컬러는 물론이고 256색 조차도 제대로 뜨지 않는다. 별로 이쁘지 않다는 생각에 그냥 포기했다.

discord-vibrancy

투명화 프로젝트 #2. 디스코드에서 이것도 일렉트론이니까하고 혹시나 하는 마음에 ctrl + shift + i를 눌러보니까 개발자 도구가 뜨길래 놀 수 있겠다 싶어서 구글링을 해보니까 이미 BetterDiscord가 있었다. 그래서 그 플러그인으로 만드는 시도를 해보다가, BrowserWindow가 이미 만들어진 후에야 플러그인 실행이 된다는걸 깨닫고 BetterDiscord 소스에 discord-vibrancy 소스를 주입하는 방법을 선택했다. 마침 main script가 module.exports 하나밖에 없길래 거기다가 require.cache를 Proxy로 조작하는 코드를 심고, BrowserWindow 컨스트럭터에서 이런저런 조작을 해서 만들었다.

kakin*

다른 글에서도 언급했듯이 동아리 축제 관련해서 제작한 프로젝트이다.