일렉트론에서 active-win 사용하기

예은·2022년 2월 23일
0

실행중인 프로그램의 정보를 가져오는 기능을 구현하기로 했다.

active-win이라는 npm 모듈을 사용하기로 했다. 활성화된 윈도우의 정보를 알려준다. 활성화 된 윈도우라는건 사용자가 마우스 또는 키보드로 선택하고 있는 프로그램을 말하는 것이다. 내가 vscode도 열어두고 메모장도 켜놨지만 이 글을 쓰고 있는 지금은 크롬 브라우저가 활성화된 윈도우인 것이다.

active-win을 사용하려면 npm으로 모듈을 설치하고 아래의 코드를 작성하면 된다.

npm install active-win

const activeWindow = require("active-win");

(async () => {
  console.log(await activeWindow(options));
})();

여기서 파라미터로 전달하는 options는 screenRecordingPermission이라는 boolean값 속성을 가진 객체이다. macOS에서만 사용하는 속성으로 화면 녹화를 허용하는지를 넘겨준다. 기본값은 true로 되어있다. (조금 더 알아보기!)

npm run start로 실행하면 아래와 같이 활성화된 프로그램의 정보가 콘솔에 찍힌다.

나는 활성화중인 프로그램을 반복해서 알고 싶기 때문에 setInterva로 2초마다 활성화된 프로그램의 정보를 가져오게 하고 그동안 프로그램을 이것저것 마우스로 선택해보았다.

const activeWindow = require("active-win");

setInterval(async () => {
  console.log(await activeWindow({ screenRecordingPermission: true }));
}, 2000);


이 삽질은 기록해야 한다 👩‍🌾

일렉트론과 리액트를 사용하는 프로젝트인데 처음에 active-win을 리액트의 App.js에서 호출했었다. 그랬더니 node-modules iconv.js 파일에서 오류가 발생했다.

검색해보니 웹팩의 설정을 변경해야 하거나, 일렉트론에서 네이티브 노드 모듈을 사용하려면 electron-rebuild라는 모듈을 설치해야 한다고 해서 다 해봤지만 해결하지 못했다.

하루종일 찾다가 active-win을 electron의 메인 엔트리(내 경우엔 electron.js)에서 실행하니 성공했다. 서버인 일렉트론에서 실행해야 하는거 같은데 정확히는 더 찾아봐야 할 거 같다...🤦‍♀️

profile
Don't only learn by watching. Learn by building. Learn by doing.

0개의 댓글