카테고리 보관물: NEMOSHELL

[NEMOSHELL] Steam, XBMC, MS office, … 데모 공개!

오늘 촬영한 NEMOSHELL 데모 영상을 공개합니다. WAYLAND 윈도우 프로토콜을 지원하는 플랫폼을 개발한 보람을 드디어 느끼게 되는군요^^

첫 번째는 두 개의 키보드/마우스와 가상키보드/터치를 이용하여 두 명이 동시에 게임을 진행하는 영상입니다.

두 번째는 WINE 기반의 PlayOnLinux 로 동작시킨 MS 오피스를 사용하는 영상입니다.

세 번째는 Steam, XBMC 그리고 Chrome 을 동시에 사용하는 영상입니다.

다음 달에는 훨씬(!) 멋진 데모를 공개할 예정입니다. 기대하세요!

Advertisements

[NEMOSHELL] 우선체험 및 공동연구 모집

NEMOSHELL은 터치기반 디스플레이 및 다중사용자를 지원하는 개방형 SW플랫폼입니다.
지난 달 ITS에서 공개한 이후 교내 까페/도서관 사용성평가 및 HCIK 데모를 통해 많은 분들의 관심을 받고 있습니다.

저희 NEMO-UX 팀은 본 플랫폼의 1) 다양한 활용 사례를 발굴하고, 2) 보다 많은 사용자들에게 새로운 사용자 경험을 제공하기 위해 “우선체험 및 공동연구 팀” (일반 사용자/개발자, 학교, 회사)을 모집하고자 합니다.

함께 하시게 되면, 현재 개발 중인 NEMOSHELL SW플랫폼을 다양하게 활용하실수 있도록 적극 지원해드릴 계획입니다.
(원활한 진행을 위해 모집대상은 “서울/경기”로 한정하고, 추후에 누구나 사용할수 있도록 온라인상으로 배포할 예정입니다)

  • 문의: 소속, 이름, 휴대폰번호, 함께하고 싶은 내용을 편하게 적어서 이메일로 보내주세요!
  • 이메일: nemoux00@gmail.com

많은 참여바랍니다. 감사합니다. 🙂

[NEMOSHELL] 안드로이드 지원!!!

NEMOSHELL 에서 드디어 안드로이드를 지원하기 시작했습니다! 예전에 간단히 에뮬레이팅 방식을 이용해 안드로이드를 시연한 적이 있지만, 저희가 원하는 것은 개별 앱을 띄우는 것이었는데, 드디어 크롬을 통해 가능하게 되었습니다. (인텔 & 구글에 감사^^) 아래에 간단히 앵그리버드를 사용하는 영상을 첨부하여 드리니 관심있으신 분들은 참고하시기 바랍니다.

크롬은 ozone-wayland 기반으로 동작하는 것이고, 안드로이드 앱은 archron 확장 기반으로 동작하고 있습니다.

[NEMOSHELL] 성균관대학교 교내까페 데모 (20141203-05)

2014년 12월 3일부터 5일까지 성균관대학교 교내에 있는 가든브릿지라는 까페에서 데모를 하였습니다. 3일간 기대 이상으로 많은 분들이 설문지도 작성해주시고, 관심가져주셔서 저희에게는 매우 뜻깊은 행사였던 것 같습니다. 아래에 데모 진행하면서 간단히 촬영한 영상을 올려드립니다.

조만간 홍대에 위치한 까페에서도 프로모션을 진행할 생각이고, 이외에도 다양한 프로모션을 계획 중입니다.

[NEMOSHELL] 미래부 R&D 성과확산대전 데모 (20141105)

2014년 11월 5일부터 7일까지 3일간 킨텍스에서 전시회가 있었습니다. 저희도 이런저런 기회로 참석하게 되었고, 행사 자체가 크진 않아서 많은 분들을 만나뵙진 못했지만, 생각보다 많은 분들이 관심있게 봐주시고, 좋은 말씀 많이 해주셔서 즐거웠던것 같습니다. 아래는 저희가 이번 행사에서 시연한 데모를 간단히 촬영한 동영상입니다. (아이폰으로 촬영)

이번에 데모한 기능은 다음과 같습니다.

  • 다중 모니터 지원..3개의 GPU 에 3개의 모니터를 각각 하나씩 연결 (47인치 테이블/9인치 모니터 2개)
  • 다중 터치 패널 지원..3개의 모니터에 3개의 터치패널을 각각 하나씩 연결
  • 다중 키보드/마우스 지원..2개의 키보드/마우스를 동시 지원
  • 다중 가상 키보드 지원..여러 개의 가상 키보드 동시 지원
  • 다중 GPU 지원..하드웨어 가속 지원 (prime/dma-buf 지원)
  • X86/ARM 지원..MESA/DRM 기반 하드웨어 가속 렌더링 지원, 프레임버퍼 기반 렌더링 지원
  • 앱 서비스 지원..GSTREAMER 기반 동영상 재생 지원, X/WAYLAND 호환, QT/GTK 호환, 크롬 브라우저 지원(안드로이드 앱 지원 예정), …

NEMOSHELL 과 관련된 구체적인 계획(배포, 상업적인 사용, …)은 조만간 공개할 예정이고, 관련 문의사항은 nemoux00@gmail.com 로 해주시면 답변해드리도록 하겠습니다.

[NEMOSHELL] 자바스크립트 지원

최근 자바스크립트로 되어있는 다양한 시각화 라이브러리들이 더욱 늘어나고 있는 추세이고, 간단한 클라이언트는 자바스크립트로 작성하는게 훨씬 효과적이기 때문에 NEMOSHELL 에서 자바스크립트를 직접 지원하는 방법을 개발 중이다. 일단 기본적으로 gjs 를 이용하여 자바스크립트 코드를 네이티브 환경에서 동작시키는 문제를 해결하였고, C 언어로 되어있는 라이브러리와 연결하기 위해서는 얼마 전에 아래 글에서 소개했던 gobject-introspection 기술을 이용하였다.

https://nemoux00.wordpress.com/2014/04/26/code-gobject-introspection-%EA%B0%84%EB%8B%A8-%EC%98%88%EC%A0%9C/

현재 chart.js 라는 몇 가지 챠트를 그릴 수 있는 오픈 소스 자바스크립트 프로젝트를 NEMOSHELL 의 클라이언트에서 완벽히 동작시키는데 성공하였기에 간단한 데모 영상과 기본 동작 원리를 소개하고자 한다.

nemotool-js

우선 해야할 작업은 자바스크립트로 되어있는 클라이언트에서 wayland 를 이용할 수 있도록 하는 작업과 최근 많은 자바스크립트 프로젝트가 사용하는 HTML5 canvas 인터페이스를 wayland 의 surface 에 연결하여 cairo 로 렌더링하는 것이다. 일단 cairo 는 gjs 에 이미 들어가있어 쉽게 해결하였고, wayland 는 C 언어로 gobject 형태로 클라이언트 인터페이스를 구현하여 자바스크립트에서 사용할 수 있도록 하였고, HTML5 canvas 는 wayland 의 서페이스에서 cairo context 를 만들어서 연결할 수 있도록 자바스크립트 모듈을 추가로 구현하였다. 앞으로 기존의 쓸만한 자바스크립트로 되어있는 시각화 라이브러리를 하나씩 포팅하다보면 추가적으로 해야할 일은 계속 있겠지만, 현재 간단한 시각화 라이브러리 정도는 잘 동작하니 일단은 만족스럽다. 아래는 chart.js 를 크롬 브라우저에서 띄운 영상과 NEMOSHELL 의 클라이언트로 띄운 영상이다.

그리고 아래 영상은 자바스크립트를 이용하여 간단한 파티클 효과를 구현하고 이를 wayland 의 멀티터치 이벤트를 이용하여 그리는 영상이다.

이를 잘 활용하면 시각적인 부분들은 어느 정도는 비교적 쉽게 해결될 수 있을 것 같다.

[NEMOSHELL] 터미널 & 시그널 처리

오늘 NEMOSHELL 에서 실행한 터미널에서 어플리케이션을 실행하고 나서 CTRL+C (SIGINT) 가 먹지 않는 버그를 발견했다. 일반적인 단일 어플리케이션을 개발하고 있는 상황이라면 바로 시그널 처리에 문제가 있다는걸 알았겠지만, 윈도우 매니저와 쉘을 개발하고 있는 중이기 때문에 처음에는 키보드 입력 값이 터미널 쪽으로 전달되는 과정에서 문제가 있는지 알고 삽질하다가 결국 엉뚱한 곳에서 문제를 해결하였다.

우선 일반적인 그래픽 기반의 터미널이 동작하는 과정을 간단히 설명하도록 하겠다.

terminal

위의 그림은 WAYLAND/WESTON 기반의 그래픽 기반 터미널이 동작하는 과정을 간단히 표현한 것이다. 일단 간단히 실행 준비 과정부터 살펴보면, 사용자가 터미널을 실행하면 터미널은 /bin/bash 의 표준 입출력을 파이프로 연결한 다음 실행한다. 이렇게 되면 터미널에서 파이프를 이용하여 /bin/bash 에 커맨드를 전달하고, 그 출력값을 간단히 받아올 수 있다. (즉, 실질적인 커맨드 기반 쉘의 기능은 /bin/bash 를 그대로 활용하는 것이다.)
그리고 전체 동작 과정은 다음과 같다. 터미널이 포커싱되어 있는 상태에서 키보드를 누르면 먼저 WESTON 이 EVDEV 를 통해 입력값을 받아오고, 터미널에게 wl_keyboard 인터페이스를 이용하여 값을 전달한다. 그리고 터미널에서는 키보드 상태와 전달값을 이용하여 필요한 입력값을 파이프를 통해 /bin/bash 에 전달한다. 그리고 /bin/bash 가 이를 처리하고 출력값이 있다면 반대로 파이프를 이용하여 출력값을 터미널로 전달한다. 마지막으로 터미널은 이 값을 그래픽 엔진(여기서는 CAIRO 벡터 엔진)을 이용하여 그린 다음, wl_surface 인터페이스를 통해 WESTON 에게 전달하면, WESTON 은 이를 그래픽 장치에 반영하게 된다.
위에 간단히 설명한 과정이 일반적인 그래픽 기반의 터미널이 동작하는 과정이다. 그리고 마지막으로 CTRL+C 가 전달되는 과정은 터미널에서 /bin/bash 에게 CTRL+C 에 해당하는 ASCII 코드 값인 0x03 을 전달하면 /bin/bash 가 foreground 로 동작 중인 어플리케이션에게 SIGINT 를 전달하여 어플리케이션은 실행을 종료하거나 등록된 핸들러를 실행하게 된다.

즉, 위에서 설명한 것처럼 CTRL+C 를 키보드로 눌러도 어플리케이션이 반응하지 못할 이유는 너무나도 많다. 다행히 이것저것 디버깅을 하다가 결국 어플리케이션이 SIGINT 를 블로킹하고 있다는 사실을 알아냈다. 알고 보니, /bin/bash 와 터미널도 모두 SIGINT 를 블로킹하고 있었다. 이유는, 당연히(!!!) 나의 실수로 NEMOSHELL 에서 터미널을 실행할 때 시그널을 초기화해주는 걸 깜빡한 거였다. 그래서 부모의 시그널 설정을 그대로 상속받아서 SIGINT 가 블로킹되어있었던 것이다. 이거 때문에 오후를 그냥 날리다니…ㅠㅠ 그래도 덕분에 겸사겸사 이것저것 살펴봤으니 불행 중 다행이다;;