우분투 18.04 이후 kdenlive의 업데이트가 뚝 끊겼습니다.

kdenlive측에서는 우분투는 appimage로 패킹된 버전을 쓰라고 하더군요. 어쩐지 우분투 저장소에 있던 버전이 낮다 싶었습니다.


kdenlive의 우분투 계열은 Appimage로 된 버전을 다운로드 받아서 쓰는 것을 추천한다.

아마도 QT와의 호환문제 및 테마 문제로 인해서 (kde 관련 패키지가 어마어마하게 따라옴)이러한 Appimage 버전을 추천한 것 같습니다.


그러나 이 Appimage버전은 한글 입력이 안 된다는 겁니다!!!

그동안 저는 노가다로 복사 부여넣기를 했는데 원인이 알고보니 여기 있더군요.


https://github.com/qTox/qTox/issues/5320


전혀 다른 프로그램이지만 힌트를 여기서 얻었습니다. 일부 Appimage버전의 경우 libfcitxplatforminputcontextplugin.so 파일이 누락되어서 fcitx 사용자의 경우 한글 입력이 되지 않는 현상이 있다는 것입니다.


해당 라이브러리를 정해진 위치에서 찾아다 넣어만 주면 되는 겁니다.


방법은 Appimage파일을 열고 해당 파일을 찾아서 넣은 다음 다시 패키징을 하면 됩니다.


푸는 것은 kdenlive의 appimage파일만 있으면 되고 다시 묶는 것은 appimagetool만 있으면 됩니다.


https://github.com/AppImage/AppImageKit/releases

여기서 appimagetool의 Appimage파일을 다운로드 받으세요. 요즘은 보통 64비트니까 x86_64버전을 다운로드 받으면 됩니다.

32비트라면 i686을 다운로드 받으면 됩니다.


그리고 아까 다운로드 받은 appimagetool과 kdenlive Appimage파일을 같은 곳에 두고 둘 다 실행 권한을 줍시다. 속성에 들어가서 프로그램으로 실행 허용을 주면 됩니다.


자 이제 Appimage파일들이 있는 곳에서 터미널을 열고 다음과 같이 명령을 줍시다.


./kdenlive-18.08.2-x86_64.AppImage --appimage-extract

이러면 squashfs-root라는 폴더가 생기면서 kdenlive의 Appimage 파일의 압축이 풀리기 시작합니다. 


명령어 한번에 압축이 풀린다.

이 안을 들여다보면 우리가 사용하는 시스템의 루트와 똑같다는 것을 알 수 있습니다.

만약 정상적으로 fcitx환경이 설치된 시스템이라면


/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts
여기에 libfcitxplatforminputcontextplugin.so 파일이 있을 것입니다. 만약 없다면 우분투 기준 fcitx-frontend-qt5 패키지를 설치하시면 됩니다.


이 파일을 복사해서 squashfs-root내의 같은 위치에 넣어주면 되는 것입니다.

Applimage들 있는 곳/squashfs-root/usr/lib/qt5/plugins/platforminputcontexts

이곳에 들어가면 파일이 하나 부족한 것을 알 수 있습니다. ibus용만 들어있지요. 하지만 ibus는 제가 별로라서 안 씁니다.



여기에는 파일이 하나 부족하다



여기에 libfcitxplatforminputcontextplugin.so 파일을 복사해서 넣습니다.


그리고 다시 Appimage를 만들면 되는 겁니다.


아까 Appimage가 있던 터미널에서

./appimagetool-x86_64.AppImage squashfs-root

이렇게 명령을 내리면...



Appimage 파일을 만들기 시작합니다.


이제 이것을 실행해보면...

kdenlive에서 한글 입력이 됩니다!!!!


그러니까 방법은 하나입니다. 누락된 해당 파일을 넣어달라고 하거나 yml파일을 수정해달라고 넣거나... KDE팀에게 요청을 해야겠습니다.


일단 그동안 임시로 제가 수정한 Appimage버전을 사용해주세요.


https://drive.google.com/file/d/1NVgcCq0sYQHzoOoSE6qALB44NQcuGIBi/view?usp=sharing


Appimage로 된 것이니 그냥 다운로드 받은 다음 실행 권한을 주고 실행하면 됩니다.

,

Linux용 Steam에서 Steam Play(Proton)을 사용해서 이런저런 많은 게임을 구동했습니다. 하지만 Wine도 완벽하지 않고 그것을 기반으로 한 Proton도 완벽하지 않기 때문에 모든 게임이 구동되는 것이 아닙니다. 그래서 Protontricks 같은 각종 트릭을 써서 구동을 하고 있습니다. (https://moordev.tistory.com/284)


하지만 게임 구동이 안 되는 것이 Wine문제일 수도 있고 DXVK 문제일 수도 있습니다. 사실 DXVK이전에 WineD3D로 기존 Direct3D게임을 OpenGL로 구동하는 방법이 있었습니다. 이쪽은 느리긴 하지만 구동 자체는 완벽합니다.


보통 DXVK문제로 Steam Play에서 오류가 나는 경우는 다음과 같습니다.


The Island : In To The Mist란 게임으로 GameMaker2 엔진을 사용했고 DirectX11을 요구합니다. 그런데 저 오류 코드는 VRAM관련 오류인데 제 시스템에서 오류가 날 이유가 없습니다. 이 게임은 VRAM을 512MB만을 요구하거든요. 그러니까 하드웨어 문제가 아니라는 의미입니다. 결론은 Proton의 문제란 것이고 이걸 해결 하는 방법은 간단합니다. DXVK를 써서 Vulkan 모드로 구동하지 않고 WineD3D로 OpenGL모드로 구동하게 하면 됩니다.


Vulkan 드라이버 설치 및 SteamPlay를 활성화 했다는 가정하에 이야기 하겠습니다.

SteamPlay 활성화는 https://moordev.tistory.com/282 이 곳을 참고하세요.


게임 이름의 속성으로 들어갑니다.


"시작 옵션 설정..." 버튼을 누릅니다. 


여기에

PROTON_USE_WINED3D11=1 %command%


라고 적어주시면 됩니다. 뒤에 %command%까지 적어주셔야 합니다.

그리고 플레이 버튼을 누르면...


리눅스에서 문제 없이 구동이 됩니다!

만약 Vulkan이 구동이 안 되는 구형 시스템이라면 이 옵션으로 게임이 돌아가는 경우가 많다고 하니까 참고하세요!


Unity3D 엔진을 활용한 게임에서 나는 이런 오류도 같은 방법으로 해결이 가능합니다.

,

일단 먼저 https://moordev.tistory.com/282 이 글을 먼저 보는 것을 추천합니다.


이전에 우린 리눅스용 스팀에서 Proton으로 윈도우용 게임을 실행하는 것을 알아봤습니다. 이전에 PlayonLinux나 직접 Wine으로 삽질하는 것보다 훨씬 더 쉽게 게임을 실행하고 관리 할 수 있게 되었다는 것은 엄청난 발전입니다.


다만 아직도 상당수 게임들은 https://appdb.winehq.org/ 여기서 찾아보듯이 winetricks등을 이용해서 추가 라이브러리를 지정해야 하는 등 여전히 삽질이 필요합니다. 물론 여기까지 왔다는 것 자체가 상당히 고무적인 일입니다.


그래서 이번에는 추가 삽질을 해야하는 게임에 대해 알아보고자 합니다.


이번 타겟은 Puyo puyo Tetris입니다.

이전에도 PlayonLinux로 설치 및 실행까지 성공했던 게임입니다.


이젠 리눅스용 스팀에서 이 게임을 큰 문제없이 실행 가능하다.

사실 이건 Proton으로 큰 문제없이 실행되는 게임입니다. 문제는 실행만 되지 온라인모드만 들어가면 그대로 얼어붙는 문제가 생깁니다. 원인은 X_audio_2_7.dll이 완벽하지 않아서 생긴 일이라고 합니다. 


그걸 알아볼 수 있는 방법은 winehq.org에서 직접 찾아보는 것입니다.

https://appdb.winehq.org/objectManager.php?sClass=version&iId=36583


찾아보니 winetricks로 xact를 설치하고 winecfg에서 xaudio2_7을 네이티브로 설정하라고 나오는군요.


그럼 우린 이걸 응용해서 proton에 적용하면 됩니다.


우린 winetricks대신 protontricks(https://github.com/Sirmentio/protontricks)를 쓰면 됩니다.


설치는

sudo apt install winetricks

wget https://raw.githubusercontent.com/Sirmentio/protontricks/master/protontricks && chmod +x protontricks
sudo mv protontricks /usr/bin/protontricks


이렇게 하고 리눅스용 Steam에서 Puyo Puyo Tetris를 설치합니다.

이건 어렵지도 않지요. 설치가 완료되면 플레이버튼이 활성화 될 겁니다. 일단 플레이 버튼을 눌러서 사전설치 라이브러리를 설치합니다.


이제 Visual C++ Runtime 등이 설치 될 겁니다. 그리고 게임이 실행되겠지만 아쉽게도 음악이 들리지 않고 게임중에 멈추는 일이 일어납니다.


이제 이걸 Protontricks로 처리하면 됩니다. winehq.org에 나온 대로 우린 xact를 설치하고 xaudio2_7을 네이티브 설정만 하면 됩니다.


일단 터미널을 열고 시작해봅시다.

protontricks -s puyo


이렇게 하면

자 괄호안의 숫자코드가 보일겁니다. 저게 APPID입니다. 저걸 복사해서 다음 명령을 칩시다.


protontricks 숫자코드


여기선 숫자코드가 546050이군요.


이제 다음과 같은 창이 뜰겁니다.

터미널 내용도 확인해주세요.


이제 winetricks창에서 Select the default wineprefix를 선택하고 확인을 누릅니다.


다음에선 Install a Windows DLL or component를 선택하고 확인

그리고 아래로 쭉 내려서 xact에 체크하고 확인을 누릅니다.

그러면 이제 터미널에서 무언가 막 지나가면서 설치가 될 겁니다.

그리고 다 되었으면 취소를 눌러서 전 화면으로 돌아옵니다.


이번에는 Run winecfg를 선택

여기는 Wine을 많이 써보셨으면 익숙하실텐데 라이브러리 탭으로 들어갑니다. 그리고 새로 덮어 쓸 라이브러리에 xaudio2_7을 적은 다음 더하기 버튼을 누릅니다. 그러면 네이티브 설정 완료입니다.


덮어쓰기 목록에 xaudio2_7이 들어가게 된다.

그리고 확인을 누른 다음 winetricks창을 닫아주시면 됩니다.


이제 다시 Steam에서 Puyo Puyo Tetris의 플레이버튼을 누르면...


아무 문제 없이 실행이 됩니다!!!!!


Proton은 Vulkan이 지원된다는 가정하에 구동이 됩니다. 만약 Vulkan 실행이 되지 않는다면 mesa-vulkan-drivers 패키지를 설치해보시기 바랍니다.


sudo apt install mesa-vulkan-drivers


일부 AMD GPU의 경우 커널파라미터를 설정해야 할 수도 있습니다.


관리가 권한으로 /etc/default/grub 파일을 열고

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"


이 부분을

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.cik_support=0 amdgpu.cik_support=1 radeon.si_support=0 amdgpu.si_support=1"


이렇게 고쳐준 다음

sudo update-grub


이렇게 명령을 내려주면 radeon 드라이버대신 amdgpu드라이버가 돌아가면서 vulkan 지원이 됩니다.


Protontricks와 리눅스용 스팀을 이용해서 윈도우용 게임을 굴리는 법을 알아봤습니다.

,

이전에 리눅스용 동영상 가속 시스템에 대해 이야기 한 적이 있습니다.

https://moordev.tistory.com/181


VAAPI, VDAPU 등이 존재한다고 했지요. 이중에서 VDPAU는 Nvidia의 것이고 인코딩에 대해서는 호환Wrapper를 써도 쓸 수가 없습니다.

VAAPI는 인텔과 AMD 둘 다 쓸 수 있고 VAAPI는 인코딩과 디코딩 둘 다 지원이 가능합니다.


그래서 vaapi지원 여부를 보기 위해서 vainfo를 봤습니다.

에러가 나네요...


이 경우에는 mesa기반의 vaapi 드라이버가 설치되지 않은 것입니다.

sudo apt install mesa-va-drivers


마찬가지로 vdpau도 확인해 봤습니다.



vdpau도 지원이 안 되는군요...

sudo apt install mesa-vdpau-drivers


이제 지원이 되는군요. VAAPI나 VDPAU로 이제 구동이 됩니다.

VLC나 크롬의 HTML5플레이어를 사용하면 이전보다 훨씬 더 쌩쌩한 것을 볼 수 있습니다.

,

리눅스용 Steam에 Proton이 적용되어서 윈도우 게임을 지원한지 시간이 꽤 지났습니다.


물론 아직도 Proton의 존재를 모르는 사람도 있고 아직 Proton의 성능이 미덥지 못하다고 생각하시는 분도 많습니다. 그도 그럴 것이 Wine부터 모든 API를 완벽하게 지원이 되지 않거든요.


하지만 Vulkan이 지원된다는 가정하에 DirectX9이하 게임이야 Wine으로도 아무 문제 없이 구동되고 DirectX10~DirectX11은 DXVK프로젝트로 쌩쌩하게 구동이 됩니다. 문제는 몇 가지 부가 라이브러리(xact, xinput 호환 문제 등) 정도입니다.


그런데 제가 Proton이야기는 많이 했는데 정작 Proton을 활성화 하는 방법은 한번도 알려드린적이 없더근요.


사실 Proton을 활성화 하는 것은 아주 간단합니다. 이전에는 베타버전에서만 되었지만 이젠 Steam 정식 버전에서도 Proton이 지원됩니다.

리눅스용 스팀에서 왼쪽위의 Steam-설정으로 들어갑니다.


업데이트 된지 얼마 되지 않아서 번역이 되지 않은 것 같다.

그리고 Steam Play에서 Enable Steam Play for all title체크를 하고(이러면 윈도용 게임도 Linux에서 지원 되는 것으로 나옵니다.) 그리고 아래의 Use this tool instead of game-sepcfic selections from Steam에도 체크를 합니다.


그리고 Proton 버전을 선택하면 됩니다. 2018년 10월 현재 안정판은 Proton3.7-8입니다.


그러면 윈도용 게임도 리눅스용 게임에 뜨면서 플레이 버튼이 활성화가 됩니다. 아직 모든 것이 지원되는 것은 아니고 Vulkan이 활성화 되어야 하지만 일단 리눅스용 스팀에서도 게임이 다운로드가 되는 것이지요.

Steam Play로 돌아간다는 메시지가 떠있다.

하지만 Wine 시스템과 달리 Steam의 Proton은 철저하게 Wine의 라이브러리만을 이용합니다. 기존 Wine 시스템에서는 필요에 따라 winetricks나 PlayonLinux의 기능을 이용해서 MS의 라이브러리를 오버라이드해서 쓰곤 했습니다. 하지만 Proton은 그것이 직접적으로 지원되지 않지요.


하지만 Proton도 결국에는 Wine...

winetricks를 Proton에 쓸 수 있게 해주는 툴이 나왔습니다. 일명 protontricks

https://github.com/Sirmentio/protontricks


python3, winetricks를 설치하고 protontricks에서 proton쪽에 winetricks를 써서 설치할 수 있게 해줬습니다.

python3는 보통 기본적으로 설치되어 있으니 넘어가고


sudo apt install winetricks

wget https://raw.githubusercontent.com/Sirmentio/protontricks/master/protontricks && chmod +x protontricks
sudo mv protontricks /usr/bin/protontricks


이렇게 하면 protontricks를 사용할 수 있습니다.


만약 자신이 설치한 게임이 네이티브 라이브러리를 요구한다면

protontricks -s 게임이름

이걸 치면 숫자가 나옵니다.


저기 뒤에있는 숫자가 바로 APPID입니다. 그리고 필요한 라이브러리를 winetricks쓰듯이


protontricks APPID 라이브러리이름


이렇게 하면 winetricks로 라이브러리가 설치됩니다. 즉, winetricks의 커맨드를 대신 할 수 있는 것입니다. 편리하지요.


물론 아직도 winetricks로 난감한건 많습니다. 하지만 이렇게 함으로서 리눅스 게이밍이 점점 더 좋아지고 있다는건 환영할만한 일입니다. 특히 DXVK가 정말 설치하기 힘들었거든요.


이제 PlayonLinux기반보다 더 편리해졌으니 더 게임플레이가 좋아질 것입니다.

,

LibreOffice가 6.x로 업그레이드 된지 많은 시간이 흘렀습니다.


기존 LibreOffice 5.4에서 상당히 많이 변했고 MS오피스의 호환성도 개선되었습니다.

하지만 이런저런 기능이 추가되면서 이젠 너무 무거운 물건이 되어버렸습니다. 저도 어떻게든 꾹참고 쓰려고 했지만 인내심의 한계가 극에 달해버려서 도저히 못버티겠더군요.


2018년 10월 현재 LibreOffice는 6.1.x가 최신 버전이다. 그러나 너무 무거워졌다.

자바도 걷어내고 OpenGL가속도 이용하고 이런저런 방법을 동원했지만 현재 제가 사용하는 사무용 노트북에서 LibreOffice는 너무 무거운 녀석이었습니다.


너무 심각해서 구글의 오피스 슈트를 쓸 생각까지 했습니다. 실제로 크롬을 이용해서 구글 오피스 슈트를 굴리면 아주 쌩쌩하게 잘 동작했습니다.


그런데 구글의 앱은 무조건 온라인 상태여야 한다는 문제가 있고 제가 사용하는 PC의 폰트를 사용하기 어렵다는 단점이 있습니다.


그러다보니 초기 구동속도는 느렸지만 일단 작업에 들어가면 꽤 괜찮은 반응속도를 보였던 LibreOffice 5가 생각이 나더군요. 그래서 이번에는 LibreOffice6를 삭제하고 LibreOffice의 버전을 낮춰보도록 하겠습니다.


현재 LibreOffice 5.x의 최신은 5.4.7.2입니다. 아마 5.4 이후로 업그레이드는 없다고 했기 때문에 이후로도 계속 이 버전이 이용될 것입니다.


5.4.1.2의 deb 패키지는


64비트(amd64)

https://downloadarchive.documentfoundation.org/libreoffice/old/5.4.7.2/deb/x86_64/



32비트는(x86)

https://downloadarchive.documentfoundation.org/libreoffice/old/5.4.7.2/deb/x86/



이곳에서 받을 수 있고


다운로드 받아야 하는 패키지는

제일 위에 있는

LibreOffice_5.4.7.2_Linux_XXX_deb.tar.gz


이것과 중간에 있는


LibreOffice_5.4.7.2_Linux_XXX_deb_langpack_ko.tar.gz


이 두 파일을 찾아서 다운로드 받으시면 됩니다. 중간에 XXX는 시스템 환경(x86, x86_64입니다.)


그리고 기존의 LibreOffice를 삭제합니다.


우선 시냅틱 패키지 관리자를 이용해서(만약 없다면 설치합니다. sudo apt install synaptic) 


libreoffice로 시작되는 모든 패키지를 삭제합니다.

만약 LibreOffice PPA까지 등록 되었다면 해제합니다.


그리고 위에서 다운로드 받은 LibreOffice 5.4패키지를 설치합니다.


일괄 설치이기 때문에 그냥 터미널이 더 편합니다.


압축 푼 곳에서

sudo dpkg -i *.deb


그냥 이게 더 편하다..



그런데 무슨 이유인지 LibreOffice 아이콘이 등록이 되지 않았군요! 물론 로그아웃하고 돌아오면 등록 되어있습니다. 아마도 MATE 버그인 것 같습니다.


일단 터미널에서 libreoffice5.4 명령으로 멀쩡히 LibreOffice가 실행되는지 확인합시다.


으음.. 되는군요!


그리고 도구-옵션 에서

자동업데이트를 그만 두게 합시다.


이제 계속 업데이트한다고 난리 칠 일은 없을겁니다.


이상 리브레오피스 구버전으로 롤백 끝!

,
... 이건 그냥 퍼오긴 좀 그렇고 링크로 대체합니다.

http://nemonein.egloos.com/m/5256608


요약하면

ext4 포맷은 전체 파티션용량의 5%를 기본적으로 예약 용량으로 설정합니다. 만약을 대비한 저널링 등의 용도입니다. 하지만 /home 파티션이나 외장HDD의 경우에는 이러한 예약용량이 불필요하고 또 HDD의 용량 증대로 필요 이상의 용량을 사용하는 것이 사실입니다. 그래서 이를 1%로 줄이는 팁입니다.


저 같은 경우에는 home 파티션이 425GB인데 15GB남았던 용량을 30GB로 늘리는 효과를 얻었습니다.


명령은..


sudo tune2fs -m 1 /dev/sdX1 (등등)


등의 방식으로 ext4의 옵션을 조정하면 됩니다. 자세한 내용은 원본 링크를 참조해주세요.

,

굉장히 오랜만입니다.

요즘에 블로그 포스팅을 자주 안 했더니 접속자 수가 바닥을 치네요.


지금으로부터 한 달전 즈음 Steam으로 유명한 ValveSoftware에서 Proton이라는 것을 공개했습니다. SteamOS에서 Windows전용으로 나온 게임을 구동하겠다는 발상입니다.


https://github.com/ValveSoftware/Proton


실제로 Github를 통해 Proton은 개발을 진행하고 있으며 현재 Steam for Linux의 Beta신청을 통해 이를 이용할 수 있습니다.


굉장히 파격적인 것이지요. 그동안 저는 PlayonLinux를 통해서 Steam for Windows를 설치하고 각종 삽질을 통해서 구동을 했던 것을 그냥 Steam으로 처리 할 수 있게 된 겁니다.


그런데...


문제는 아직 모든 게임이 호환이 되는 것이 아니고 베타 버전이라고 할 만큼 불안정한 모습을 보인다는 것이 문제입니다.


그렇다면 이 물건의 정체는 무엇일까요?


github에 들어가보면 아시겠지만 굉장히 익숙한 라이브러리들이 보일겁니다.


제일 아래에 wine이 보이신가요?


당연히 Windows 호환 레이어인 Wine으로 API호환을 합니다. 여기에 DXVK란 것으로 D3D10~D3D11의 호환을 합니다. 이 DXVK란 놈은 무엇이냐고 하면 D3D10과 D3D11을 Vulkan으로 변환하는 라이브러리입니다.


https://github.com/doitsujin/dxvk


Vulkan은 하드웨어 직접 접근을 표방한 3차원 가속 규격으로 OpenGL의 후계자 취급을 받고 있습니다. 게임에 따라 다르지만 실제로 D3D11보다 Vulkan이 성능은 더 좋습니다. 그걸 이용하는 겁니다.


그런데 DXVK는 설치가 까다롭고 복잡하기로 유명합니다. 그래서 저도 시도를 못했습니다. 그런데 다름아닌 Steam이 그걸 쉽게 만들어버린 것입니다.


그러니까 Proton의 정체는 사실...


Wine+DXVK+각종 오픈소스 결과물들을 Steam에 적용한 결과물입니다.

지금 제가 PlayonLinux로 고생하고 있는 것을 어쩌면 Steam으로 대체해서 쓸 수 있게 될지도 모르는 것이지요. 그러면 기존 Linux용 게임과 Windows용 게임을 통합 관리 할 수 있는 것이고 궁극의 SteamOS가 탄생할 수도 있습니다.


그것은 곧 실패했다는 평가를 받는 SteamBOX의 부활이 될 수도 있는 것입니다.


지금 Proton에 대해 회의적인 반응들이 많은데 저는 굉장한 발전이라고 생각합니다. 리눅스 게임에 대해 접근성을 어마어마하게 향상을 한 엄청난 프로젝트라고 생각합니다. Steam for Linux가 만든 리눅스 게임 생태계에 또 다른 물결이 오고 있는 셈입니다. 심지어 이 프로젝트는 기존 오픈소스 프로젝트에 기여를 하고 있습니다. 과연 이들이 어떻게 될지는 모르겠지만 PC게임계의 큰손인 Valve가 프로젝트를 진행하는 이상 리눅스 기반의 게임 콘솔이 다시 오고 있을 지도 모르겠습니다.

,

Firefox나 Chrome은 초기 구동속도가 매우 느립니다. 처음에 메모리에 올려야 하기 때문인데요. HDD를 쓰는 경우 속도가 더더욱 느려서 처음에 속도가 상당히 느려서 상당히 답답함을 느끼시는 분이 많습니다.


제 시스템에서는 Firefox가 약 10초 Chrome은 40초정도의 초기 실행 성능을 지니고 있습니다. 솔직히 10초는 기다릴만하다고 생각했는데 Windows에서 IE나 Edge를 실행해보셨던 분들은 아시겠지만 얘네들은 바로바로 실행되는 모습을 볼 수 있습니다. 이유야 당연하게도 Windows에서는 미리 컴포넌트들이 메모리에 올라가 있기 때문입니다. 그래서 Chrome은 이명이 느긋한 돼지라는 별명을 지니고 있습니다. Firefox는 여우답게 날렵했지만 Chrome과의 렌더링 속도에서 져버린 이후 Chrome과 같이 초기 구동 속도가 느리지만 웹렌더링 속도를 올리는 방식을 사용합니다.


그럼 방법은 뭐가 있느나...


Chrome의 경우 처음 실행 후에는 다시 실행을 해도 금방 실행이 되는 모습을 보입니다. 왜냐하면 모든 창을 다 꺼도 백그라운드에서 숨을 죽이고 있기 때문입니다.


아래 그림과 같이 말입니다.


크롬은 한번 실행 후에 백그라운드에서 대기를 타는 방식을 사용한다.

이렇게 하면 체감 속도가 엄청 향상되는 효과를 얻습니다. 역으로 말하면 다른 브라우저들도 백그라운드에서 미리 실행을 해두면 웹브라우저를 빠르게 실행이 가능하다는 의미가 될 수 있습니다. 요즘에는 메모리관리를 열심히 해주지 않아도 충분히 사용이 가능한 시대이기 때문에 자주 쓰는 프로그램을 미리 실행해두는 것도 나쁜 생각이 아닙니다. Chrome이야 그렇다 치지만 Firefox는 메모리도 적게 먹으니까 백그라운드에 실행해 두었다고 해도 문제될 것은 없습니다.


http://hamonikr.org/board_aMBI05/52629


여기서 바람곰돌님이 초기 브라우저 속도가 너무 느리다면서 나온 이야기입니다. 그래서 제가 인터넷을 검색해서 Firefox를 백그라운드에서 실행하는 방식을 추천했지요.


https://askubuntu.com/questions/853891/how-can-i-make-firefox-run-in-the-background-like-chromium


여기에 나온방식으로 스크립트를 만들고 Firefox를 컴퓨터 실행 후에 백그라운드로 실행하니 4초만에 실행이 되면서 편하게 사용이 가능해졌다고 하시더군요.


그래서 이렇게 된 거 여기에 이 방식을 한국어로 소개하려고 합니다.


#!/usr/bin/env python3
import subprocess
import os
import signal
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, AppIndicator3
import time

app = "firefox"
winsdir = os.path.join(os.environ["HOME"], ".config/hidden_windows")

try:
    os.mkdir(winsdir)
except FileExistsError:
    pass

def checkruns(app):
    try:
        return subprocess.check_output(["pgrep", app]).decode("utf-8").strip()
    except subprocess.CalledProcessError:
        for w in os.listdir(winsdir):
            if w.startswith(app):
                os.remove(os.path.join(winsdir, w))

def get_currentwins(pid):
    wins = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").splitlines()
    return [l.split()[0] for l in wins if pid in l]

def hide_currentwins(matches):
    # open(os.path.join(winsdir, "windowlist"), "wt").write("\n".join(matches))
    for w in matches:
        open(os.path.join(winsdir, app+"_"+w), "wt")
        subprocess.Popen(["xdotool", "windowunmap", w])

def run_app(app):
    subprocess.Popen(app)
    while True:
        time.sleep(1)
        pid = checkruns(app)
        matches = get_currentwins(pid) if pid else None
        if matches:
            hide_currentwins(matches)
            break

def restore_wins():
    for w in [w for w in os.listdir(winsdir) if w.startswith(app)]:
        wid = w.split("_")[-1]
        subprocess.Popen(["xdotool", "windowmap", wid])
        os.remove(os.path.join(winsdir, w))

def toggle_app(*args):
    pid = checkruns(app)
    if pid:
        matches = get_currentwins(pid)
        if matches:
            hide_currentwins(matches)
        else:
            restore_wins()
    else:
        subprocess.Popen(app)

run_app(app)

class Indicator():
    def __init__(self):
        self.app = 'toggle_app'
        self.indicator = AppIndicator3.Indicator.new(
            self.app, app,
            AppIndicator3.IndicatorCategory.OTHER)
        self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)       
        self.indicator.set_menu(self.create_menu())

    def create_menu(self):
        self.menu = Gtk.Menu()
        item_toggle = Gtk.MenuItem('Toggle '+app)
        item_toggle.connect("activate", toggle_app)
        self.menu.append(item_toggle)
        sep1 = Gtk.SeparatorMenuItem()
        self.menu.append(sep1)
        item_quit = Gtk.MenuItem('Quit')
        item_quit.connect('activate', self.stop)
        self.menu.append(item_quit)
        self.menu.show_all()
        return self.menu

    def stop(self, source):
        Gtk.main_quit()

Indicator()
signal.signal(signal.SIGINT, signal.SIG_DFL)
Gtk.main()





우선 이 방식은 Firefox를 wmctrl을 이용해서 보이지 않게 뒤로 실행하는 방식입니다.

따라서 wmctrl과 xdotool이 필요합니다.


sudo apt-get install wmctrl xdotool


그 다음 python3를 이용해서 firefox를 실행한 후 wmctrl에게 프로세스 ID를 넘겨 보이지 않게 하는 것입니다. 뭐... 이건 그냥 쓰시는 분께는 어려우니까 자세한 설명은 하지 않겠습니다.


위의 스크립트를 복사해서 firefox_bg.py 라고 만들어둡시다.


물론 Python3는 당연히 있다고 생각하고 만드는 것입니다.

해당 스크립트는 만들고 싶은 곳에 만들어 두시면 됩니다.

저는 ~/.firefox_bg/ 에다가 만들었습니다.


그리고 시작프로그램에 해당 스크립트를 실행하게끔 등록합시다.

LinuxMint나 우분투에서는 시작프로그램을 설정 창을 통해 설정할 수 있습니다.


여기서 추가버튼을 누르시고


이름은 마음대로 알기 쉬운 것으로 해주시고

명령은


/bin/bash -c "sleep 5 && python3 ~/.firefox_bg/firefox_bg.py"


이렇게 해둡시다.

뒤의 ~/.firefox_bg/firefox_bg.py 는 제가 해당 위치에 스크립트를 만들어 두었기 때문입니다. 여러분들은 여러분들에게 맞는 위치를 지정해주세요.


설명 부분은 비워도 됩니다.


이제 등록이 되면... 한번 시스템을 껐다 켜 봅시다.


Firefox가 크롬처럼 미리 메모리에 올라와 있습니다. 생각보다 메모리 먹는 양은 많지 않습니다.


그리고 한 가지 더 생각해야 할 것이 있는데 의외로 우리는 웹브라우저를 제일 많이 사용한답니다. 그러니까 Firefox를 미리 메모리에 올렸다고 해도 문제될 것이 없습니다. 물론 크롬을 주로 사용하신다고 하면 Chrome을 이런 식으로 실행해두는 것도 방법입니다.

,

뿌요뿌요 테트리스...

PuyoPuyo Tetris. 2018년 현재 가장 최신판 테트리스이자 뿌요뿌요인 게임입니다. 판권을 둘 다 세가가 갖고 있어서 나올 수 있었던 희대의 콜라보레이션입니다.




현실은 고인물 게임이지만...

아무튼 이걸 Linux에서 굴릴 수 있게 Wine으로 실행해 보게습니다.


Wine을 쓰려면 역시 이 프로그램이 제격이지요. PlayonLinux입니다.


sudo apt install playonlinux


PuyoPuyo Tetris는 DirectX11을 요구하고 64비트에서 구동하는 게임입니다. 그러니까 일단 DirectX11이 되어야 하므로 Wine3.5이상에서 굴러가야 하고 PC가 64비트여야 합니다. 요즘은 다 64비트니까 보통은 굴러가겠지요. 


그럼 PlayonLinux를 실행합니다. 그리고 Wine-Staging으로 굴릴 수 있다면 그것이 더 좋을 것입니다.


도구-Wine버전 관리로 들어갑니다.



여기서 와인버전은 amd64에서 3.10-staging 정도로 해서 설치합니다. staging으로 해주면 상대적으로 성능이 더 낫더군요. dxvk라 해서 DirectX11을 Vulkan으로 변환해주는 것도 있는데 제 PC에서는 안 돌아가더군요. (Vulkan 지원이 아직 안 되는 것일지도 모릅니다.) 일단은 그냥 기본으로 합시다. 어차피 2D게임이라 크게 성능 안 잡아 먹습니다.


그리고 위에서 구성 버튼을 누릅시다.


여기서 새로만들기 버튼을 눌러서 새로운 Prefix를 만듭시다.


그 다음 마법사를 써서 아래 스크린샷과 같이 진행합시다.


당연히 64비트로 해야지요? 게임이 64비트에서 굴러가니까요.

DirectX11 지원을 위해선 3.5이상이 좋다. 여기선 3.10-staging을 선택하자.

이름은 마음대로.

이렇게 하고 필요한 것을 추가해야 합니다. 대표적인 것이 당연하게도 Steam이고 xact(xaudio2_7.dll)입니다.


그럼 그것을 PlayonLinux로 추가해봅시다.

구성에서

아까 만든 Prefix를 왼쪽에서 선택한 다음 오른쪽의 구성요소선택에서 Steam을 눌러 우선 Steam을 설치합니다. 그리고 xact를 눌러서 xaudio2_7 라이브러리를 설치해주셔야 합니다. DirectX9 2010 JUN 버전에서 DLL을 빼낸다음 따로 설치하는 방식을 씁니다.


그다음 이를 네이티브 설정해야 합니다. Wine설정에서 이를 해야합니다.

와인구성 혹은 Wine구성을 누른 다음 xaudio2_7을 적은 다음 더하기 버튼을 눌러서 설정을 합니다. 아래의 dwrite나 gameoverlayrenderer는 Steam설치 시 설정 된 것입니다.


그다음 편하게 하기 위해 바로가기를 만듭시다.



Steam.exe의 바로가기를 만들면 됩니다.



그리고 Steam을 실행하면


단! 그냥 설치 후 바로 실행하면 난감한 일이 일어납니다. Steam이 설치된 것의 ~/PlayOnLinux's virtual drives/PuyoPuyoTetris/drive_c/Program Files (x86)/Steam/steamapps/common/PuyoPuyoTetris에 들어가면 


_CommonRedist_란 폴더가 있습니다. DirectX와 기타 라이브러리가 들어있는 폴더입니다. 하지만 Wine에서는 이게 있어봐야 좋을게 없으므로(아까 PlayonLinux로 다 처리했습니다.) 이걸 삭제해 주시기 바랍니다.


이 폴더는 삭제하자.

그리고 실행하면...


약간의 시간이 흐른 뒤에 세가 로고가 나오면서 실행이 됩니다!!


리눅스에서 실행완료!!

참고로 온라인매치도 아무 문제없이 잘 됩니다.


리눅스에서 실행은 어렵지 않지만 문제는 고인물 게임인게 문제...

,