모바일 오유 바로가기
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
    조회수 : 1565
    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 초과시 해당없음)

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

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