
//[참고]{----------------------------------------------------
//1) 목차는 <Ctrl+B> 를 눌러 나오는 [책갈피] 를 활용.
//
//2) UBUNTU:16.04 를 기준으로 설명(18.04 에서도 정상 동작함).
//
//3) 명령을 직접 입력 하기 불편한 경우는 명령줄을 복사후("$" 기호는 제외)
//   <Ctrl+Shift+V> 조합 으로 터미널에 붙여 넣은 후 [Enter].
//
//4) 더 자세한 설명(그림 포함)은 이 문서와 같이 열린 웹페이지 참고.
//
//5) 설명 내용의 "사용자" 는 사용자 ID 를 의미함.
//
  6) 이 문서는 같이 열리는 웹문서보다 항상 "최신 정보" 가 기술됨.
//}---------------------------------------------------------

//[중요!!!]{****************************************************************************
1) [설정대화상자] -> [wine 구동 설정] 의 항목에 반드시 [v].

2) [맷돌-IDE] 를 "Linux:Wine" 에서 사용시 [버튼:닫기] 등으로 "창 닫기" 가 안되는 경우가 발생할수 있음.
   이 경우 "Alt+F4" 로 해당 창을 닫을수 있음(간단하지만 모르는 경우 매우 당황스러우므로 반드시 숙지 필요).

3) [한글입력기] 는 반드시 "Fcitx" 를 사용(Wine 4.0 이상).
   "iBus" 의 경우는 한글입력시 오류가 발생할수 있음(Wine 3.0 이후 발생하는 문제).
//}************************************************************************************

//[참고:XFCE4]{--------------------------------------------------------------------------
[맷돌-IDE] 는 Ubuntu, Debian, Arch, Manjaro, Fedora, OpenSuse, FreeBSD 에서 Wine3.0 이상에서
사용에 지장이 없을 정도로 완벽하게 동작되며, "XFCE4" 에서 가장 자연스럽고 완벽하게 구동됨.

적어도 "XFCE4" 에서는 Linux 종류에 무관하게 차이없는 동작을 보여줌(Gnome 은 차이가 심함).

따라서, 기계닉스는 "XFCE4" 에서 사용할 것을 권장함.
"XFCE4" 설치 방법은 아래 해당 설명을 참고.
//}-------------------------------------------------------------------------------------


#<Wine 설치>

  (*) Ubuntu 기본 Wine 설치 방법

      "$ sudo apt install wine"

      Ubuntu 기본 Wine 은 버전이 오래 된 것(동작에는 문제 없으나 약간의 개선점 있음).
      해당 사이트에서 WineHQ 최신 판(3.0)설치 권장(개선점 향상).

      "WineHQ" 최신판은 "https://wiki.winehq.org/Ubuntu" 의 내용을 참고.


  (*) WineHQ:3.0 판 설치 방법

      //[주의!!!]{*********************************************************
      설치 후 <*.html>, <*.pdf> 의 기본 연결 프로그램이 Wine 으로 돼 있는지 확인필요.
      Wine 으로 돼 있다면 다른 해당 프로그램으로 변경 필요(DDE 오류 발생을 막기 위한것).
      //}*****************************************************************

      1) 64비트 Linux 에서 32비트 지원 활성화.

         "$ sudo dpkg --add-architecture i386"

      2) 저장소 추가.

         "$ wget -nc https://dl.winehq.org/wine-builds/Release.key"

         "$ sudo apt-key add Release.key"

         "$ sudo apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/"

      3) 패키지 업데이트.

         "$ sudo apt-get update"

      4) 최신판 설치.

         "$ sudo apt-get install --install-recommends winehq-stable"


  (*) Wine 기본 설정

      1) "$ winecfg"

      2) [대화상자] -> [그래픽] 탭으로 이동.

      3) "[v] 창관리자가 Wine창을 꾸미도록 함."
         "[v] 창관리자가 Wine창을 관리하도록 함."

         두 부분에 "[v]" 돼 있는지 확인(기본 설정).
         [맷돌-IDE] 는 이 두 설정이 "[v]" 돼 있는 경우를 가정하고 Wine 을 지원함.

      4) [대화상자] -> [응용프로그램] 탭으로 이동.
         윈도우 버전 : "Windows 7" 권장(제공 레지스트리를 제대로 등록하는데 필요).
         [맷돌-IDE] 자체는 "윈도우XP" - "윈도우10" 까지 완벽 지원함.


  (*) [맷돌-IDE] 실행 방법

      1) [맷돌-IDE] 실행.

      2) 실행할 관련 프로그램 여부를 묻는 대화상자에서 "Wine" 을 선택.

      3) 향후 자동적으로 Wine 으로 실행됨.


  (*) Wine 구동 설정

      { 메뉴 : 설정 -> 통합 개발환경 설정 -> [wine 구동 설정] } 의 항목에 반드시 [v].

      "[v] FreeBSD/Linux 에서 wine 으로 구동."


#<레지스트리 등록>

  윈도우에서와 같이 <*.html>, <*.pdf>, <*.jpg> 파일을 Linux 의 해당 프로그램으로 연결하여 열기 위한것.
  [맷돌-IDE] 에서 도움말, 설명 등을 위하여 사용하는 문서(정보창->참고자료)를 열기 위하여 반드시 설정 필요.

  //[주의!!!]{***************************************************************************
  레지스트리 등록 후 <*.html>, <*.pdf>, <*.jpg> 의 기본 연결 프로그램이 Wine 으로 돼 있는지 확인필요.
  "Wine 으로 돼 있다면 다른 해당 프로그램으로 변경 필요(DDE 오류 발생을 막기 위한것)".
  //}***********************************************************************************

  (*) "*.reg" 등록

      1) [맷돌-IDE] 폴더 안 "linux->wine->reg" 위치에 "reg.zip" 확인.
         압축을 플고 "html.reg", "pdf.reg", "jpg.reg" 3 개 문서 확인.

      2) "$ regedit"

      3) { 메뉴 : 레지스트리 -> 레지스트리 파일 가져오기 }

      4) "html.reg" 파일 선택 등록.

      5) "pdf.reg" 파일도 3) - 4) 의 방법으로 등록.

      6) "jpg.reg" 파일도 3) - 4) 의 방법으로 등록.

      7) Wine 재부팅.

         "$ wineboot"


  (*) "html.reg" 내용

      아래의 내용을 복사하여 <html.reg> 문서로 저장한뒤 사용해도 무방.

      [문서내용]
      {
        Windows Registry Editor Version 5.00

        [HKEY_CLASSES_ROOT\.html]
        @="htmlfile"
        "Content Type"="text/html"
        [HKEY_CLASSES_ROOT\htmlfile\shell\open\command]
        @="C:\\windows\\system32\\winebrowser.exe \"%1\""

      }


  (*) "pdf.reg" 내용

      아래의 내용을 복사하여 <pdf.reg> 문서로 저장한뒤 사용해도 무방.

      [문서내용]
      {
        Windows Registry Editor Version 5.00

        [HKEY_CLASSES_ROOT\.pdf]
        @="PDFfile"
        "Content Type"="application/pdf"
        [HKEY_CLASSES_ROOT\PDFfile\Shell\Open\command]
        @="C:\\windows\\system32\\winebrowser.exe \"%1\""

      }


  (*) "jpg.reg" 내용

      아래의 내용을 복사하여 <jpg.reg> 문서로 저장한뒤 사용해도 무방.

      [문서내용]
      {
        Windows Registry Editor Version 5.00

        [HKEY_CLASSES_ROOT\.jpg]
        @="jpgfile"
        "Content Type"="application/jpg"
        [HKEY_CLASSES_ROOT\jpgfile\Shell\Open\command]
        @="C:\\windows\\system32\\winebrowser.exe \"%1\""

      }


#<통신포트 설정>

  Wine 은 "PC:COM", "USB<=>Serial:COM" 모두 완벽하게 동작됨.

  [맷돌-IDE] 는 윈도우와 똑같이 구동 가능. 단, 통신포트 사용을 위하여 권한 설정 필요.

  이름 연결시 반드시 COM1, COM2 일 필요는 없으며 사용할수 있는 COMx 로 사용자가 지정해도 무방.

  "ttyS0" 는 리눅스 PC:COM 장치, "ttyUSB0" 는 리눅스 USB<=>Serial:COM 장치 이름.

  //[주의]{-----------------------------------------------------
  단, "ttyUSB0" 는 FreeBSD 에서 "ttyU0" 로 정의돼 있음(사용법은 동일).
  //}----------------------------------------------------------

  [맷돌-IDE] 에서 "COM1", "COM2" 로 열수 있고 윈도우와 똑같이 사용 가능. 속도 저하 없음.

  (*) PC:COM 사용 권한 설정 및 이름 연결

      1) "$ sudo chown 사용자 /dev/ttyS0"

      2) 이미 "~/.wine/dosdevices/com1" 이 존재하므로 먼저 삭제.

         "$ rm ~/.wine/dosdevices/com1"

      3) "$ ln -s /dev/ttyS0 ~/.wine/dosdevices/com1"


  (*) USB<=>Serial:COM 사용 권한 설정 및 이름 연결

      1) "$ sudo chown 사용자 /dev/ttyUSB0"

      2) 이미 "~/.wine/dosdevices/com2" 가 존재하므로 먼저 삭제.

         "$ rm ~/.wine/dosdevices/com2"

      3) "$ ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com2"


  (*) 통신포트 Reset

      기본적인 PC:COM 에서는 발생하지 않으나 USB<=>Serial:COM 의 경우는 자주 발생하는 문제로
      통신 포트 초기화가 필요한 경우는 아래 경우에 해당.

      - USB<=>Serial:COM 의 경우 통신포트를 연 채로 [맷돌-IDE] 를 종료 하여 통신포트를 열수 없는 경우.

      - USB<=>Serial:COM 케이블을 PC 에서 분리후 다시 연결한 뒤 통신포트를 열수 없는 경우.

      - Linux 등 OS 업데이트후 통신포트를 열수 없는 경우.

      아래 방법으로 해결.

      1) "$ sudo chown 사용자 /dev/ttyUSB0"

      2) "$ rm ~/.wine/dosdevices/com2"

      3) "$ ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com2"

      4) 제대로 동작 됨.

      1)-3) 의 과정에 문제 없음에도 [맷돌-IDE] 에서 통신포트를 열수 없는 경우는
      [맷돌-IDE] 를 실행 시킨 상태에서 1)-3) 의 과정을 다시 수행하면 제대로 동작됨.


  (*) 위의 1)-3) 과정을 스크립트로 만들어 한번에 처리 하는 방법

      1) "ttyUSB0reset" 이라는 이름(다른 이름도 무관)으로 파일을 만들고 아래 내용을 기술.

         [문서내용]
         {
           #!/bin/bash
           sudo chown 사용자 /dev/ttyUSB0
           rm ~/.wine/dosdevices/com2
           ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com2

         }

      2) 권한부여(사용자는 rwx 가능). "chmod -x" 까지 모두 포함되는 것.
         "ttyUSB0reset" 문서 위치에서 터미널 열어 처리.

         "$ chmod 755 ttyUSB0reset"

      3) 실행("ttyUSB0reset" 가 위치한 곳에서 터미널을 열어 실행).

         "$ ./ttyUSB0reset"

      4) 단축 아이콘으로 만들기("XFCE4" 에서 동작 확인됨).

         "ttyUSB0reset" 를 마우스 우측 버튼 "보내기->데스크톱(링크만들기)" 로 [단축아이콘] 으로
         만들면 터미널에서 명령행 없이 [마우스:더블클릭] 만으로 자동 처리 가능.


#<Fcitx 관련 설정>

  [한/영:한글] 에서 ";(세미콜론)" 문자 입력시 한글 입력 제대로 안되는 문제를 수정하기 위한것.

  { Fcitx -> 설정 -> 애드온 -> [v]고급 에 설정 -> QuickPhrase 설정 -> "Semicolon" => "없음" }  으로 설정하면 완벽 해결.

  "Fcitx" 에서 기본적으로 ";" 관련 기능을 사용하도록 설정돼 있으므로 한글 입력을 위하여 반드시 해제 필요.


#<그림부품:GUI>

  (*) 윈도우/Wine 차이

      윈도우와  Linux:Wine 은 완전히 동일하지 않으며, 메세지 처리 순서 등에서 차이가 있어 GUI 부분 동작이 똑같지 않음.

      이 차이를 줄이기 위하여 [맷돌-IDE:설정 대화 상자] 에 "[v] wine 구동 설정" 항목 추가.

      1) Wine 모달(Modal) 창 지원이 안되므로 유사모달 기능으로 대체.

      2) 마우스 MOVE 메세지 처리가 연속적이지 못하여 타이머를 사용하여 제목줄 이동 기능 구현.

      3) [한/영] 전환과 [한글] 입력시 발생되는 메세지와 순서에 차이가 있음.

      4) 윈도우 기본 창을 사용하는 경우 문제가 없으나, [맷돌-IDE] 와 같이 <WM_ERASEBKGND> 에서 부터 모든 것을 그리는
         방식의 경우는 윈도우와 차이가 발생.

      5) 창 최대화 기능이 제대로 동작되지 않으므로 다른 방법으로 구현.

      6) GUI 이 경우 구현 속도는 Wine 쪽이 더 빠름([전광판] 의 경우가 대표적).


  (*) [전광판] 관련

      윈도우보다 Linux:Wine 으로 구동시 훨씬 빠르고 자연스러움.

      제목줄이동, 통신포트가 열려있는 경우, 시뮬레이터 구동시(내부 쓰레드 구동시)는 자동 정지.

      [전광판] 은 보조기능으로 다른 중요 작업시 자동 정지됨.

      [전광판:문자열] 은 [설정대화상자] 에서 수정 가능.


#<Ubuntu 외 Linux 에서 사용>

  [맷돌-IDE] 를 UBUNTU:16.04 이외 다른 Linux 계열에서 Wine 으로 사용 가능하나 종류에 따라 약간 차이가 있음.

  [맷돌-IDE] 는 Ubuntu, Debian, Arch, Manjaro, Fedora, OpenSuse, FreeBSD 와 Wine3.0 이상에서
  사용에 지장이 없을 정도로 완벽하게 동작되며, "XFCE4" 에서 가장 자연스럽고 완벽하게 구동됨.

  적어도 "XFCE4" 에서는 Linux 종류에 무관하게 차이없는 동작을 보여줌(Gnome 은 차이가 심함).

  따라서, 기계닉스는 "XFCE4" 에서 사용할 것을 권장함.
  "XFCE4" 설치 방법은 아래 해당 설명을 참고.

  아래는 "XFCE4" 에서 동작을 기준으로 설명함.

  (*) Ubuntu, Debian, Arch, Manjaro 는 완벽 지원

      1) "XFCE4" 나 기본 환경 에서 다 동작.

      2) 가장 자연스럽고 빠른 동작을 보여줌.

      3) 통신포트 완벽 동작.

      //[참고]{---------------------------------------
      Ubuntu 는 Debian 계열이고, Manjaro 는 Arch 계열 임.
      //}--------------------------------------------


  (*) Fedora, OpenSuse

      1) "XFCE4" 에서 완벽 지원.

      2) Gnome 에서는 <WM_ERASEBKGND> 메시지를 완벽하게 처리하지 못하여 제대로 보여지지 않을수 있음.
         [맷돌-IDE] 의 모든 [그림부품] 은 <WM_ERASEBKGND> 에서 직접 그려서 만들었기 때문에 <WM_ERASEBKGND> 지원이 중요.

      3) 통신포트 완벽 동작.


  (*) FreeBSD, PC-BSD

      1) "XFCE4" 에서 사용하는데 지장이 없을 정도로 지원됨.

      2) 폼 이동시 자연스럽지 못한 문제는 있으나 GUI 부분은 완벽 지원.

      3) FreeBSD 계열에서는 [wine:64비트] 가 아직 지원되지 않으며 "i386-wine" 을 설치해야 됨.

      4) 통신포트 완벽 동작("USB<=>Serial" 에 대하여 동작 확인).


#<Linux/FreeBSD Wine3.0 설치>

  각 Linux, FreeBSD 의 경우 마다 Wine 설치 방법에 약간의 차이가 있음.

  Ubuntu + Wine3.0 설치 방법은 이미 위에서 설명 했음.

  (*) Debian + Wine3.0

      Debian 은 최신 9(stretch) 를 기준으로 설명.

      1) "$ sudo dpkg --add-architecture i386"

      2) "$ wget -nc https://dl.winehq.org/wine-builds/Release.key"

      3) "$ sudo apt-key add Release.key"

      4) "/etc/apt/sources.list" 문서 마지막 줄에 아래 내용 추가.

         "$ sudo nano /etc/apt/sources.list" 또는
         "$ sudo vi /etc/apt/sources.list" 로 문서를 열어 편집.

         [문서내용]
         {
           deb https://dl.winehq.org/wine-builds/debian/ stretch main

         }

      5) "$ sudo apt install apt-transport-https"

      6) "$ sudo apt-get update"

      7) "$ sudo apt-get install --install-recommends winehq-stable"

      8) Wine 기본 설정 필요.


  (*) Arch + Wine3.0

      기본 설치판이 3.4 최신판으로 바로 설치됨(별도 설정 불필요).

      1) "$ sudo pacman -S wine"

      2) Wine 기본 설정 필요.


  (*) Manjaro + Wine3.0

      기본 설치판이 3.4 최신판으로 바로 설치됨(별도 설정 불필요).

      1) "$ sudo pacman -S wine"

      2) Wine 기본 설정 필요.


  (*) Fedora + Wine3.0

      기본 설치판이 3.4 최신판으로 바로 설치됨(별도 설정 불필요).

      1) "$ sudo dnf install wine"

      2) Wine 기본 설정 필요.


  (*) OpenSuse + Wine3.0

      기본 설치판이 3.4 최신판으로 바로 설치됨(별도 설정 불필요).

      1) "$ sudo zypper install wine"

      2) Wine 기본 설정 필요.


#<Linux/FreeBSD XFCE4 설치>

  "XFCE4" 는 가볍고 빠르고 모든 Linux, FreeBSD 에서 돌아가는 최적의 데스크탑 환경임.
  더불어 Wine 구동시 가장 자연스럽고 부분적으로 윈도우 보다 빠름(GUI).

  각 Linux, FreeBSD 의 경우 마다 "XFCE4" 설치 방법에 차이가 있음.

  (*) Ubuntu + XFCE4

      1) "$ sudo apt update"

      2) "$ sudo apt install xfce4"

      3) "$ sudo reboot"


  (*) Arch + XFCE4

      Arch 기본 설치는 Arch 홈페이지 참고.

      1) "$ sudo pacman -Syu"

      2) "$ sudo pacman -S xorg-server xorg-server-utils xorg-xinit"

      3) "$ sudo pacman -S xfce4"

      4) "$ sudo pacman -S xfce4-goodies"


  (*) Manjaro + XFCE4

      1) "$ sudo pacman -S xfce4"

      2) "$ sudo pacman -S xfce4-goodies"


  (*) Debian + XFCE4

      "Debian + XFCE4" 패키지로 설치(Debian 은 아예 "XFCE4" 를 기본 환경으로 하는 별도 *.iso 를 제공).

      GNOME/KDE 등 다른 환경을 사용하고 있는 경우 "XFCE4" 를 별도 추가 설치 후 로그인 대화상자에서 "XFCE4" 선택.

      1) "$ sudo apt update"

      2) "$ sudo apt install xorg"

      3) "$ sudo apt install xfce4"

      4) "$ sudo apt install xfce4-goodies"

      5) "$ sudo reboot"


  (*) Fedora + XFCE4

      1) "$ sudo dnf update"

      2) "$ sudo dnf groupinstall "Xfce Desktop""

      3) "$ sudo reboot"


  (*) OpenSuse + XFCE4

      1) "$ sudo zypper update"

      2) "$ sudo zypper -n in patterns-openSUSE-xfce"

      3) "$ sudo reboot"


  (*) FreeBSD + XFCE4

      FreeBSD 는 기본적으로 데스크탑 환경이 설치 되지 않으므로 직접 설치해야 함.
      FreeBSD 자체는 설치했다고 가정함(FreeBSD 설치는 FreeBSD 홈페이지 참고).

      FreeBSD 데스크탑 용으로 PC-BSD(일반 Linux 와 유사) 권장.

      1) 일단 관리자 모드로 진입.

         "$ su"

      2) "# pkg install xorg xfce"


      3) 그래픽 카드가 ATI 계열인 경우는 반드시 아래 드라이버 설치.

         "# pkg install xf86-video-ati"

      4) "/etc/rc.conf" 문서안에 아래 내용 추가.

         "# nano /etc/rc.conf" 또는
         "# vi /etc/rc.conf" 로 문서 열어 편집.

         [문서내용]
         {
           moused_enable="YES"
           dbus_enable="YES"
           hald_enable="YES"

         }

      5) XFCE4 시작.

         "# startxfce4"


2018.06.04.월
기계닉스 첨단 대장장이 김갑철

