모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 게시물ID : programmer_22773
    작성자 : ★☆
    추천 : 1
    조회수 : 1570
    IP : 222.233.***.246
    댓글 : 0개
    등록시간 : 2019/01/08 05:59:21
    http://todayhumor.com/?programmer_22773 모바일
    [emacs] EXWM 간단히 맛보기(?), 냄새 맡기(?), 암튼 소개
    <strong><a target="_blank" href="https://youtu.be/qxmJ_Ep-Fz0" target="_blank">두근두근 울렁울렁 가슴 뛰지만 무섭고도 두려워서 겁이 나지만</a></strong> 새해를 맞아 사용하고 있는 <a target="_blank" href="https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%9A%A9_%EC%9C%88%EB%8F%84%EC%9A%B0_%ED%95%98%EC%9C%84_%EC%8B%9C%EC%8A%A4%ED%85%9C" target="_blank">리눅스용 윈도우 하위 시스템</a>(이하 WSL)에 <a target="_blank" href="https://ko.wikipedia.org/wiki/%EA%B7%B8%EB%9E%98%ED%94%BD_%EC%82%AC%EC%9A%A9%EC%9E%90_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4" target="_blank">그래픽 사용자 인터페이스</a>(이하 GUI)를 입혀보기로 했습니다. 알고계시겠지만, WSL은 <a target="_blank" href="https://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%86%8C%ED%94%84%ED%8A%B8_%EC%9C%88%EB%8F%84%EC%9A%B0" target="_blank">마이크로소프트 윈도우</a>(이하 윈도우)에서 <a target="_blank" href="https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4" target="_blank">리눅스</a> 바이너리를 사용할 수 있도록 매개하는 개발자용 도구입니다. 리눅스 명령을 그대로 사용할 수 있다는 장점이 있지만, 아직 여러 한계가 있습니다. 그 중 하나가 바로 GUI 부분이죠.<br><br>이 한계를 피해가는 몇 가지 방법이 있습니다. 가장 쉬운 방법은 윈도우에 <a target="_blank" href="https://en.wikipedia.org/wiki/X.Org_Server" target="_blank">X 서버</a>를 설치하고 리눅스에서 DISPLAY 환경 변수를 이 <a target="_blank" href="https://ko.wikipedia.org/wiki/%EC%84%9C%EB%B2%84" target="_blank">서버</a>의 화면으로 지정하는 것입니다. 또 다른 방법은 리눅스에서 <a target="_blank" href="https://en.wikipedia.org/wiki/Xrdp" target="_blank">Xrdp</a>같은 <a target="_blank" href="https://en.wikipedia.org/wiki/Remote_Desktop_Services" target="_blank">윈도우 원격 데스크톱</a>을 지원하는 서비스를 제공하는 것입니다. 크게 어려운 일은 아닙니다. 인터넷에서 쉽게 정보를 찾아볼 수도 있고요. 어려웠던 점은 제가 <a target="_blank" href="https://namu.wiki/w/%ED%8E%80%ED%88%AC%20%EB%A6%AC%EB%88%85%EC%8A%A4" target="_blank">펀투 리눅스</a>라는 극히 마이너한 리눅스 배포판을 사용하고 있어서... 찾은 문서의 내용을 그대로 따라하는 수준으로는 되지 않았다는 점 정도입니다.<br><br><img width="800" height="621" class="chimg_photo" alt="1.png" src="http://thimg.todayhumor.co.kr/upfile/201901/15468874308b66840006e04d85a75def3abba4e1b9__mn757958__w1026__h796__f30489__Ym201901.png" filesize="30489"><br><img width="800" height="621" alt="2.png" src="http://thimg.todayhumor.co.kr/upfile/201901/15468874316a2704a4e42a4353abef1275dbf2123e__mn757958__w1026__h796__f47770__Ym201901.png" filesize="47770"><br><br><a target="_blank" href="https://ko.wikipedia.org/wiki/Xfce" target="_blank">Xfce</a>를 띄워봤습니다. 리눅스의 사용자 홈 <a target="_blank" href="https://ko.wikipedia.org/wiki/%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC" target="_blank">디렉터리</a> 밑에, 윈도우의 바탕화면(%USERPROFILE%\Desktop 디렉터리)을 Desktop이란 이름으로 심볼릭 링크해 두었더니 Xfce의 바탕화면이 윈도우와 연동되기도 하고요. 조금 더 욕심이 생겨 <a target="_blank" href="https://ko.wikipedia.org/wiki/%EA%B7%B8%EB%86%88" target="_blank">그놈</a>을 시도해봤습니다. 문서가 없는 이유가 있었습니다. 여러 방법을 시험해보다 내가 왜 이러고 있지... 하는 의문이 생겼네요.<br><br>어짜피 내가 WSL에서 가장 많이 사용하는 것은 <a target="_blank" href="https://ko.wikipedia.org/wiki/%EC%9D%B4%EB%A7%A5%EC%8A%A4" target="_blank">이맥스</a>일 뿐이고(윈도우에도 이맥스 바이너리가 있지만 리눅스에서 사용하는 것이 더 편하니까), 다른 GUI용 프로그램은 많이 사용하지 않는데 무거운 데스크톱 환경을 굳이 설치해야하나 하는 생각이 들었습니다. 이런 생각이 들어 찾아보니 <a target="_blank" href="https://github.com/ch11ng/exwm" target="_blank">이맥스 안에서 X의 창 관리</a>를 해주는 패키지가 있더군요.<br><br><img width="800" height="621" class="chimg_photo" alt="3.png" src="http://thimg.todayhumor.co.kr/upfile/201901/1546887432cc8af1ee91d24a4a9fba0262b6dcdd68__mn757958__w1026__h796__f93111__Ym201901.png" filesize="93111"><br><br>위의 원격 데스크톱 화면과 달리 이맥스가 달랑 뜹니다(화면 갈무리를 위해 크기를 줄였지만, 모니터 전체에 이맥스가 뜰 때 기분이란...). 이게 이맥스이므로 이맥스의 키 바인딩으로 화면 분할이 됩니다. <code>C-x 3</code> 으로 양 쪽으로 나누고 <code>C-x 2</code> 로 위 아래로 나눌 수 있습니다. <code>C-x 1</code> 또는 <code>C-x 0</code> 로 합칠 수 있고요, <code>C-x o</code> 로 순회할 수 있습니다. 물론, 이런 단축키는 이맥스 사용자라면 익숙한 것이겠죠.<br><br><img width="800" height="621" class="chimg_photo" alt="4.png" src="http://thimg.todayhumor.co.kr/upfile/201901/15468874325a7cbf7d2fe5495e9be86dc67a579035__mn757958__w1026__h796__f136916__Ym201901.png" filesize="136916"><br><br>창을 나누고 <a target="_blank" href="https://ko.wikipedia.org/wiki/%EA%B5%AC%EA%B8%80_%ED%81%AC%EB%A1%AC" target="_blank">구글 크롬</a>과 EShell을 띄워봤습니다. 외부 프로그램을 실행시킬 때는 <code>S-&</code> 키를 누르라고 하더군요. (윈도우에서 이 키 조합은 ctrl 과 alt 사이에 있는 윈도우키를 누르고, shft 키와 7 키를 누르는 것입니다. 원격 데스크톱이 전체 화면을 사용하도록 하지 않으면 윈도우 메뉴가 먼저 떠버립니다. 전체 화면이 아니라면 키 바인딩을 바꿔야 될 것 같네요.) <code>M-!</code> 로 외부 프로그램을 실행시키면 안됩니다. (쉘에서 GUI 프로그램을 실행시킬 때와 같은 일이 벌어집니다. 백그라운드--&--로 실행시키지 않으면 그 프로그램이 종료할 때 까지 쉘이 잠기게 됩니다.)<br><br><img width="800" height="621" class="chimg_photo" alt="5.png" src="http://thimg.todayhumor.co.kr/upfile/201901/15468874334e0401960d49426dabacf9697c8ec5d6__mn757958__w1026__h796__f138239__Ym201901.png" filesize="138239"><br><br>EXWM 은 화면의 공간을 절약하기 위해 기본적으로 메뉴 바를 숨깁니다. <code>M-x menu-bar-mode</code> 명령으로 메뉴 바를 드러내면 구글 크롬이 이맥스 안에서 실행된 것이 더욱 확실하게 보이네요. 또 다른 재미있는 기능은 작업 공간 이동이었습니다. 첫번째 작업 공간에서 화면 구성을 이렇게 잡아두고, <code>S-w</code> 키를 눌러 다른 작업 공간을 선택해서 다른 화면을 구성할 수 있었습니다. (이맥스의 다른 프레임을 선택해서 윈도--창--를 나누는 것에 해당하겠죠.)<br><br><img width="800" height="621" class="chimg_photo" alt="6.png" src="http://thimg.todayhumor.co.kr/upfile/201901/15468874346f03759f3d3642cdab91cd13143db0bb__mn757958__w1026__h796__f137739__Ym201901.png" filesize="137739"><br><br>발견하고 설치해본 것이 전부라 많이 알지는 못하지만, 이맥스 내부에서 구글 크롬을 실행시킬 수 있다는 점이 마음에 들었습니다. 이런 것이 있다는 것을 알고 있으면 혹시 도움이 되는 사람이 있을지도 모르겠네요.<br><br><hr><br>덧붙임: EXWM 사용자 설명서에서 제시한 EXWM 기동 방법은 ${HOME}/.xinitrc 파일과 ${HOME}/.emacs 파일을 사용하는 것이었습니다. EXWM을 시험하는 도중에 이런 방식을 사용하는 것이 마음에 들지 않았습니다.<br><br>펀투 리눅스에서 XSESSION 관련 설정은 /etc/env.d/90xsession 파일에 적습니다. 예를 들어 <code>XSESSION="exwm"</code> 라고 적어두면, /etc/X11/Sessions/exwm 파일을 실행하게됩니다. 이 파일을 다음과 같이 만들었습니다.<br><br><code># Write exwmrc.el file if not exist</code><br><code>[ -e ${HOME}/.emacs.d ] || mkdir ${HOME}/.emacs.d</code><br><code>[ -e ${HOME}/.emacs.d/exwmrc.el ] || cat > ${HOME}/.emacs.d/exwmrc.el <<EOF</code><br><code>(if (file-exists-p (expand-file-name ".emacs" "$HOME"))</code><br><code>    (load-file (expand-file-name ".emacs" "$HOME"))</code><br><code>  (if (or (file-exists-p (expand-file-name ".emacs.el" "$HOME"))</code><br><code>          (file-exists-p (expand-file-name ".emacs.elc" "$HOME")))</code><br><code>      (load (expand-file-name ".emacs" "$HOME"))</code><br><code>    (if (or (file-exists-p (expand-file-name "init.el" user-emacs-directory))</code><br><code>            (file-exists-p (expand-file-name "init.elc" user-emacs-directory)))</code><br><code>        (load (expand-file-name "init" user-emacs-directory)))))</code><br><br><code>(setq display-time-default-load-average nil)</code><br><code>(display-time-mode t)</code><br><code>(server-start)</code><br><br><code>(require 'exwm)</code><br><code>(require 'exwm-config)</code><br><code>(exwm-config-default)</code><br><code>EOF</code><br><br><code># Start Emacs</code><br><code>exec dbus-launch --exit-with-session emacs -q -l ${HOME}/.emacs.d/exwmrc</code><br><br>/etc/X11/Sessions/exwm 은 ${HOME}/.emacs.d/exwmrc.el 파일을 만들고 (이맥스가 창 관리자 역할을 할 때는) 이맥스의 초기화 파일 대신 이 파일로 기동하도록 합니다. 이렇게 이맥스가 기동한 후 원래의 초기화 파일을 적재 할 필요가 있습니다. ${HOME}/.emacs.d/exwmrc.el 코드의 앞부분이 하는 일이 그것이고요. 저는 ${HOME}/.emacs.d/init.el 파일을 초기화 파일로 사용합니다. 이 파일에는 EXWM의 디렉터리만 라이브러리 경로에 추가해주었습니다. 이렇게요.<br><br><code>(add-to-list 'load-path (locate-user-emacs-file "elpa/xelb-0.16"))</code><br><code>(add-to-list 'load-path (locate-user-emacs-file "elpa/exwm-0.21"))</code><br><br>이런 방식의 장점은 이맥스가 창 관리자 역할을 하지 않을때는 EXWM을 기동하지 않는 것 입니다.

    이 게시물을 추천한 분들의 목록입니다.
    [1] 2019/01/08 07:35:52  223.38.***.113  ^ㅅ^)/  116492
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    23105
    일반인 입니다 무작위의 숫자와영어로 적혀 있는 파일입니다. [2] 창작글 너를위한마음 20/04/21 15:13 1088 0
    23104
    c++ 코딩 간단한 질문 하나만 올립니다. [2] 중국인의피 20/04/21 14:54 999 0
    23103
    C#으로 오토캐드용 보조프로그램 만들고 싶어요 [5] 본인삭제금지 별빛러브 20/04/20 22:08 1491 0
    23102
    네트워크 통신에 관해서.. [5] 본인삭제금지 DJ.A 20/04/17 01:17 905 0
    23100
    파이썬 pywinauto로 자동화 구현해보신 분 계신가요? [8] 본인삭제금지 훗날닭집사장 20/04/15 23:39 2686 0
    23098
    API 질문있습니다! 생공장 20/04/14 21:55 607 0
    23097
    파이썬 Qt Designer로 UI를 구현중인데 질문이 있습니다! [4] 본인삭제금지 훗날닭집사장 20/04/12 16:14 931 0
    23095
    [본삭금] linux svn commit 에러 문제입니다. 베스트금지베오베금지본인삭제금지외부펌금지 오늘이라도 20/04/08 20:37 667 0
    23093
    mfc typedef carray 만들면 자기 클래스에 선언 못하나요?? [2] 소막 20/04/04 12:51 723 0
    23092
    [1인개발][안드로이드][cocos2dx] 틀린그림찾기 게임을 만들었습니 [2] 창작글 하오링찡 20/04/04 11:24 775 2
    23091
    파이썬) pymysql 사용 처음부터 문제가 생겼습니다! ㅠㅠ [8] 본인삭제금지 훗날닭집사장 20/04/01 17:13 7641 0
    23089
    c++ 조언 부탁드려요. [1] 본인삭제금지 우홋 20/03/30 15:49 683 0
    23088
    Java IDE 선호도가 궁금하네요. [9] 목욕통 20/03/30 12:44 1049 0
    23087
    죄송하지만. 혹여 잠시 시간 내어 주실 분들에게 질문 구해요. [3] 본인삭제금지 초급인 20/03/29 15:22 801 0
    23086
    비베 고수님들 질문있습니다2 인천개장수 20/03/28 01:07 524 0
    23085
    장글 질문입니다. C++ 프로그램에 대해서 질문 있습니다. [3] 본인삭제금지 초급인 20/03/26 06:25 658 0
    23083
    파이썬으로 크롤링 + 로그인 관련해서 질문이 있습니다.. [14] 본인삭제금지 훗날닭집사장 20/03/24 15:58 1320 0
    23082
    참 궁금한 것이 있는데요 [8] 큰녀가좋아 20/03/24 14:41 748 2
    23081
    자바 이클립스 간단한 질문하나 올립니다 [15] 외부펌금지 중국인의피 20/03/22 19:53 809 1
    23080
    캡스톤 디자인 과제로 모바일 pos를 만들어볼까 합니다. [3] 본인삭제금지 창기름 20/03/18 17:38 708 0
    23079
    c# 불용어처리기 제작중 질문이 생겼습니다. [14] 창작글본인삭제금지 창기름 20/03/17 23:19 809 0
    23078
    mfc 정보는 최신글 찾기가 왜이렇게 어려운가요 ㅠㅠ [2] 소막 20/03/17 21:17 714 0
    23077
    혹시 여기서 책 추천도 해주시려나요?.. [2] user6000 20/03/14 18:11 645 0
    23075
    안드로이드에서 다른패케이지의 파일접근권한에대한 질문입니다 본인삭제금지 엿먹이기 20/03/11 13:41 538 0
    23074
    공적 마스크 실시간 알림에 관하여 [1] 튜머 20/03/10 15:39 809 1
    23071
    (업무관련)g매크로와 비슷한 기능을 가진 프로그램이 있나요? [7] 문식이당 20/03/06 14:22 1747 0
    23070
    게임 관련 공모전에 관심 있는 분 있으신 분!!! 송초코 20/03/05 19:00 674 0
    23069
    안드로이드 에서 nfc 를이용해서 출결체크하는 앱을 만들고싶습니다 [3] 본인삭제금지 뭐꼬 20/03/03 14:19 765 0
    23068
    c# 사운드 녹음에대해 질문. [1] 외부펌금지 눙무이 20/03/03 11:47 987 0
    23067
    c# 에서 sqlite 작업시 System.Data.SQLite.dll [1] 본인삭제금지 엿먹이기 20/02/29 13:22 845 0
    [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [다음10개▶]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈