모바일 오유 바로가기
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
    조회수 : 1571
    IP : 222.233.***.246
    댓글 : 0개
    등록시간 : 2019/01/08 05:59:21
    http://todayhumor.com/?programmer_22773 모바일
    [emacs] EXWM 간단히 맛보기(?), 냄새 맡기(?), 암튼 소개
    두근두근 울렁울렁 가슴 뛰지만 무섭고도 두려워서 겁이 나지만 새해를 맞아 사용하고 있는 리눅스용 윈도우 하위 시스템(이하 WSL)에 그래픽 사용자 인터페이스(이하 GUI)를 입혀보기로 했습니다. 알고계시겠지만, WSL은 마이크로소프트 윈도우(이하 윈도우)에서 리눅스 바이너리를 사용할 수 있도록 매개하는 개발자용 도구입니다. 리눅스 명령을 그대로 사용할 수 있다는 장점이 있지만, 아직 여러 한계가 있습니다. 그 중 하나가 바로 GUI 부분이죠.

    이 한계를 피해가는 몇 가지 방법이 있습니다. 가장 쉬운 방법은 윈도우에 X 서버를 설치하고 리눅스에서 DISPLAY 환경 변수를 이 서버의 화면으로 지정하는 것입니다. 또 다른 방법은 리눅스에서 Xrdp같은 윈도우 원격 데스크톱을 지원하는 서비스를 제공하는 것입니다. 크게 어려운 일은 아닙니다. 인터넷에서 쉽게 정보를 찾아볼 수도 있고요. 어려웠던 점은 제가 펀투 리눅스라는 극히 마이너한 리눅스 배포판을 사용하고 있어서... 찾은 문서의 내용을 그대로 따라하는 수준으로는 되지 않았다는 점 정도입니다.

    1.png
    2.png

    Xfce를 띄워봤습니다. 리눅스의 사용자 홈 디렉터리 밑에, 윈도우의 바탕화면(%USERPROFILE%\Desktop 디렉터리)을 Desktop이란 이름으로 심볼릭 링크해 두었더니 Xfce의 바탕화면이 윈도우와 연동되기도 하고요. 조금 더 욕심이 생겨 그놈을 시도해봤습니다. 문서가 없는 이유가 있었습니다. 여러 방법을 시험해보다 내가 왜 이러고 있지... 하는 의문이 생겼네요.

    어짜피 내가 WSL에서 가장 많이 사용하는 것은 이맥스일 뿐이고(윈도우에도 이맥스 바이너리가 있지만 리눅스에서 사용하는 것이 더 편하니까), 다른 GUI용 프로그램은 많이 사용하지 않는데 무거운 데스크톱 환경을 굳이 설치해야하나 하는 생각이 들었습니다. 이런 생각이 들어 찾아보니 이맥스 안에서 X의 창 관리를 해주는 패키지가 있더군요.

    3.png

    위의 원격 데스크톱 화면과 달리 이맥스가 달랑 뜹니다(화면 갈무리를 위해 크기를 줄였지만, 모니터 전체에 이맥스가 뜰 때 기분이란...). 이게 이맥스이므로 이맥스의 키 바인딩으로 화면 분할이 됩니다. C-x 3 으로 양 쪽으로 나누고 C-x 2 로 위 아래로 나눌 수 있습니다. C-x 1 또는 C-x 0 로 합칠 수 있고요, C-x o 로 순회할 수 있습니다. 물론, 이런 단축키는 이맥스 사용자라면 익숙한 것이겠죠.

    4.png

    창을 나누고 구글 크롬과 EShell을 띄워봤습니다. 외부 프로그램을 실행시킬 때는 S-& 키를 누르라고 하더군요. (윈도우에서 이 키 조합은 ctrl 과 alt 사이에 있는 윈도우키를 누르고, shft 키와 7 키를 누르는 것입니다. 원격 데스크톱이 전체 화면을 사용하도록 하지 않으면 윈도우 메뉴가 먼저 떠버립니다. 전체 화면이 아니라면 키 바인딩을 바꿔야 될 것 같네요.) M-! 로 외부 프로그램을 실행시키면 안됩니다. (쉘에서 GUI 프로그램을 실행시킬 때와 같은 일이 벌어집니다. 백그라운드--&--로 실행시키지 않으면 그 프로그램이 종료할 때 까지 쉘이 잠기게 됩니다.)

    5.png

    EXWM 은 화면의 공간을 절약하기 위해 기본적으로 메뉴 바를 숨깁니다. M-x menu-bar-mode 명령으로 메뉴 바를 드러내면 구글 크롬이 이맥스 안에서 실행된 것이 더욱 확실하게 보이네요. 또 다른 재미있는 기능은 작업 공간 이동이었습니다. 첫번째 작업 공간에서 화면 구성을 이렇게 잡아두고, S-w 키를 눌러 다른 작업 공간을 선택해서 다른 화면을 구성할 수 있었습니다. (이맥스의 다른 프레임을 선택해서 윈도--창--를 나누는 것에 해당하겠죠.)

    6.png

    발견하고 설치해본 것이 전부라 많이 알지는 못하지만, 이맥스 내부에서 구글 크롬을 실행시킬 수 있다는 점이 마음에 들었습니다. 이런 것이 있다는 것을 알고 있으면 혹시 도움이 되는 사람이 있을지도 모르겠네요.



    덧붙임: EXWM 사용자 설명서에서 제시한 EXWM 기동 방법은 ${HOME}/.xinitrc 파일과 ${HOME}/.emacs 파일을 사용하는 것이었습니다. EXWM을 시험하는 도중에 이런 방식을 사용하는 것이 마음에 들지 않았습니다.

    펀투 리눅스에서 XSESSION 관련 설정은 /etc/env.d/90xsession 파일에 적습니다. 예를 들어 XSESSION="exwm" 라고 적어두면, /etc/X11/Sessions/exwm 파일을 실행하게됩니다. 이 파일을 다음과 같이 만들었습니다.

    # Write exwmrc.el file if not exist
    [ -e ${HOME}/.emacs.d ] || mkdir ${HOME}/.emacs.d
    [ -e ${HOME}/.emacs.d/exwmrc.el ] || cat > ${HOME}/.emacs.d/exwmrc.el <<EOF
    (if (file-exists-p (expand-file-name ".emacs" "$HOME"))
        (load-file (expand-file-name ".emacs" "$HOME"))
      (if (or (file-exists-p (expand-file-name ".emacs.el" "$HOME"))
              (file-exists-p (expand-file-name ".emacs.elc" "$HOME")))
          (load (expand-file-name ".emacs" "$HOME"))
        (if (or (file-exists-p (expand-file-name "init.el" user-emacs-directory))
                (file-exists-p (expand-file-name "init.elc" user-emacs-directory)))
            (load (expand-file-name "init" user-emacs-directory)))))

    (setq display-time-default-load-average nil)
    (display-time-mode t)
    (server-start)

    (require 'exwm)
    (require 'exwm-config)
    (exwm-config-default)
    EOF

    # Start Emacs
    exec dbus-launch --exit-with-session emacs -q -l ${HOME}/.emacs.d/exwmrc

    /etc/X11/Sessions/exwm 은 ${HOME}/.emacs.d/exwmrc.el 파일을 만들고 (이맥스가 창 관리자 역할을 할 때는) 이맥스의 초기화 파일 대신 이 파일로 기동하도록 합니다. 이렇게 이맥스가 기동한 후 원래의 초기화 파일을 적재 할 필요가 있습니다. ${HOME}/.emacs.d/exwmrc.el 코드의 앞부분이 하는 일이 그것이고요. 저는 ${HOME}/.emacs.d/init.el 파일을 초기화 파일로 사용합니다. 이 파일에는 EXWM의 디렉터리만 라이브러리 경로에 추가해주었습니다. 이렇게요.

    (add-to-list 'load-path (locate-user-emacs-file "elpa/xelb-0.16"))
    (add-to-list 'load-path (locate-user-emacs-file "elpa/exwm-0.21"))

    이런 방식의 장점은 이맥스가 창 관리자 역할을 하지 않을때는 EXWM을 기동하지 않는 것 입니다.

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

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

    번호 제 목 이름 날짜 조회 추천
    23195
    [질문] riscv32-unknown-elf-gcc memory map 본인삭제금지 어린이바이엘 20/11/09 11:24 625 0
    23194
    sql 디벨로퍼 질문이있습니다..ㅠㅜㅠ [1] 따까디스코 20/11/08 17:32 873 0
    23193
    c# wpf 의 그리드에 관한질문입니다 [2] 본인삭제금지 뭐꼬 20/11/08 11:03 919 0
    23192
    유니티 어디서 배울까요 [2] Dev_땅콩 20/11/07 22:58 700 0
    23191
    Visual Studio에서 NuGet 패키지관리 오류.. [3] 달려라하니~ 20/11/04 11:43 2270 0
    23189
    안녕하세요 제가 국비지원 6개월학원다니고 취업준비중인데 조언좀요.. ㅜㅜ [11] 딱다구리마요 20/10/29 13:25 1727 1
    23185
    안녕하세요 초보 개발자 입니다. C# 메모리 Exception질문드립니다 [3] 부산영 20/10/20 16:29 770 0
    23184
    안녕하세요 프로그래머지망생입니다. 상담받고 싶어서 이렇게 글씁니다. [10] 초co 20/10/19 21:18 1073 0
    23183
    파이썬 질문입니다. se1251 20/10/16 20:28 788 0
    23180
    자료구조 책 추천 부탁드립니다. 본인삭제금지 Minion 20/09/17 23:26 956 0
    23176
    redis 오류 관련 문의드립니다. [3] 본인삭제금지 순정있는남자 20/09/07 16:21 868 0
    23175
    크롬 버그(파란색 커서) [3] 마지막연금술 20/09/05 18:09 1154 0
    23173
    sendmail 설정 관련 질문 있습니다! [5] 본인삭제금지 소독제 20/09/03 10:23 759 0
    23172
    1 나를읽어줘 20/09/03 00:40 826 1
    23171
    1인개발한 소프트웨어, 어떻게 홍보하면 좋을까요ㅠㅠ & adobe CEP [8] 빠라빠라 20/09/02 17:21 1315 2
    23170
    음성관련 프로그램 공부를 해보려고 하는데 막막하네요;; [2] 임당이 20/09/02 00:57 696 0
    23169
    비쥬얼 스튜디오 2015 Professional 설치 파일 있으신분.. [2] 야광눈 20/08/27 16:21 920 0
    23168
    C언어 쌉초보자입니다. 이 코드 왜 안되는지 모르겠습니다. [4] llallin 20/08/27 13:15 1436 1
    23167
    닷넷 c# winform 에 콘솔창을 붙일수있는방법 없을까요? [2] 본인삭제금지 엿먹이기 20/08/19 22:41 1109 0
    23165
    윈도우 hosts 파일에 대한 질문 [1] 본인삭제금지 dbf62 20/08/12 15:15 858 0
    23163
    C# 하드코딩으로 사운드 만드는법??? [2] 한시운 20/08/08 17:46 1193 0
    23162
    앱을 만들려고 하는데, 어떤 프로그램이 좋을까요? [4] 본인삭제금지 endwhy 20/08/07 19:45 1092 0
    23160
    jsp 네이버 로그인 연동하고 있는데 토큰 관련 질문 있습니다 ㅠㅠㅠ [1] 토왕 20/08/06 13:44 730 0
    23159
    전역 후 공무원 준비냐 학부 공부 준비냐 고민중입니다. [5] 본인삭제금지 삶은토마토 20/07/31 17:25 859 0
    23158
    어떤프로세스에서 알림광고를 띄우는지 알아내는방법있으면 [1] 본인삭제금지 뭐꼬 20/07/29 06:26 790 0
    23157
    초보의 클레스에 대한 딜레마 존.(feat.Winform With C#) [2] 창작글펌글베스트금지베오베금지 꽃게뢍 20/07/27 15:37 993 0
    23154
    네이버 아이디 로그인 연동 질문 ... ㅠㅠ 본인삭제금지 토왕 20/07/15 12:26 729 0
    23153
    c# 에서의 날짜 디비저장 과 웹에서 날짜 표시... [3] 베스트금지베오베금지본인삭제금지 뭐꼬 20/07/12 00:32 1243 0
    23152
    mysql 한글 300글자는 컬럼을 varchar,text 중 뭘로.. [2] 레드워터 20/07/11 15:58 989 0
    23151
    프로그래밍 노트북... 3개중 하나 정해주십쇼...ㅠㅠ [30] 본인삭제금지 삶은토마토 20/07/08 18:33 1834 2
    [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [다음10개▶]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈