====== Flatpak ======
* https://flatpak.org/
* 리눅스 데스크탑 환경을 위한 소프트웨어 패키지, 실행 샌드박스 기능.
* [[linux:snap|Snap]]과 유사
* 샌드박스 형태로 애플리케이션을 설치하기 때문에 의존 패키지에 신경을 덜써도 되고 모든 리눅스 배포판에서 사용가능한 애플리케이션 배포 형태가 된다.
* Flatpak 을 통해 패키징하고 https://flathub.org/ 를 통해 배포하면 어떠한 리눅스 배포판에서도 사용 가능하다.
* 최근 나오는 리눅스 배포판들이 많이 지원하고 있는 듯 보인다. [[linux:mint|Mint Linux]], [[linux:mxlinux|MX Linux]] 등에 기본 설치돼 있음.
* [[https://itsfoss.com/flatpak-guide/|Using Flatpak on Ubuntu and Other Linux [Complete Guide]]]
* [[https://wiki.archlinux.org/index.php/Flatpak|Arch Linux flatpak]]
* [[https://wiki.debian.org/FlatpakHowto|FlatpakHowto - Debian Wiki]]
===== Install / Ubuntu =====
* [[https://flatpak.org/setup/Ubuntu/|Flatpak—the future of application distribution]]
sudo apt install flatpak
# flathub 추가
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# kdeapps 추가
flatpak remote-add --if-not-exists kdeapps --from https://distribute.kde.org/kdeapps.flatpakrepo
# reboot
* [[https://community.kde.org/Guidelines_and_HOWTOs/Flatpak|Guidelines and HOWTOs/Flatpak - KDE Community Wiki]]
* kdeapps 에 있는 앱도 대부분 flathub 에 있는 경우가 많음. 그러나 없는 것도 있긴하다.
===== 사용법 =====
* 앱 조회
flatpak remote-ls
* 검색
flatpak search <검색어>
* 설치
# gimp 설치
flatpak install flathub org.gimp.GIMP
* 사용하지 않는 runtime 삭제
flatpak uninstall --unused
# --user 불필요. system/user 둘다 삭제함.
===== gnome-software-center =====
gnome-software-center 에서 flatpak 검색 및 설치 가능하게 설정.
sudo apt install gnome-software-plugin-flatpak
===== bauh =====
* [[linux:snap|Snap]], [[linux:arch:aur|AUR Arch User Repository]], flatpak 을 지원하는 패키지 관리 GUI
* https://github.com/vinifmor/bauh
===== winepak =====
* [[https://www.winepak.org/|winepak]] [[linux:wine|Linux Wine]] 애플리케이션을 위한 repository
===== 설정 / 환경변수 override =====
* [[https://www.systutorials.com/docs/linux/man/1-flatpak-override/|flatpak-override: Override application requirements - Linux Man Pages (1)]]
* [[https://unix.stackexchange.com/questions/559129/how-do-i-permanently-set-an-environment-variable-for-a-specific-flatpak-applicat|linux - How do I permanently set an environment variable for a specific Flatpak application? - Unix & Linux Stack Exchange]]
# --user 빼면 전역 설정
flatpak override --user --env=VARIABLE_NAME=VARIABLE_VALUE full.application.Name
# 여러건일때
flatpak override --env="VARIABLE_NAME_ONE=VARIABLE_VALUE_ONE VARIABLE_NAME_TWO=VARIABLE_VALUE_TWO" full.application.Name
===== 구 버전 설치 =====
* [[https://askubuntu.com/questions/1349179/how-to-install-a-previous-version-of-gimp-with-flatpak-on-ubuntu-20-04|software installation - How to install a previous version of Gimp with Flatpak on Ubuntu 20.04? - Ask Ubuntu]]
# gimp 로 예시
flatpak remote-info --log flathub org.gimp.GIMP
# commit 버전들이 출력된다. 이중에서 설치하고 싶은 commit hash 선택
# root 권한 필요.
sudo flatpak update --commit= org.gimp.GIMP
# 현재 버전 유지하고 업그레이드 안하게 막기
flatpak mask org.gimp.GIMP
===== 한글 입력기 관련 문제 flatpak/snap 공통 =====
* [[https://github.com/flatpak/flatpak/issues/3350|half apps don't support cjk input. · Issue #3350 · flatpak/flatpak]]
* [[https://kldp.org/node/163341|오픈소스 큰행님들의 snap, flatpak | KLDP]]
* [[linux:inputmethod|Input Method (입력기, 한글)]]가 올바로 작동하지 않는 현상이 발생하고있음.
* 입력기 관련 환경 변수를 강제로 지정해줘야 하는 것으로 보임.
# nimf 로 바꾼다고 할 때,
# 아래 실제로 작동 안함.
flatpak override --env="GTK_IM_MODULE=nimf XMODIFIERS=@im=nimf QT_IM_MODULE=nimf" full.application.Name
flatpak override --env="GTK_IM_MODULE=nimf XMODIFIERS=@im=nimf QT_IM_MODULE=nimf" com.todoist.Todoist
===== Theme =====
* [[linux:theme|Linux Themes]] flatpak 을 설치하면, **시스템의 GTK/QT 테마와 동일한 이름**의 flatpak theme 가 발견되면 자동 적용된다.
* 이름이 불일치 하면 설치가 안된다.
* [[https://docs.flatpak.org/en/latest/desktop-integration.html|Desktop Integration — Flatpak documentation]]
* [[https://www.linuxuprising.com/2018/05/how-to-get-flatpak-apps-to-use-correct.html|How To Get Flatpak Apps To Use The Correct Gtk Theme - Linux Uprising Blog]]
* [[https://itsfoss.com/flatpak-app-apply-theme/|Apply GTK System Themes on Flatpak Apps in Linux]] : 커스텀 설치한 테마 적용.
* Flatpak 의 경우 yaru 테마를 주황색 말고 다른 것으로 변경할 경우 관련 패키지를 찾아서 설치해줘야한다.
* GTK/Icon 테마 목록
flatpak remote-ls flathub | grep org.gtk.Gtk3theme
flatpak remote-ls flathub | grep org.freedesktop.Platform.Icontheme
* QT 테마
flatpak remote-add kdeapps https://distribute.kde.org/kdeapps.flatpakrepo
# 테마 설치
flatpak install kdeapps org.kde.KStyle.Adwaita//5.9
flatpak install kdeapps org.kde.PlatformTheme.QGnomePlatform//5.9
* Yaru 테마 목록
flatpak remote-ls flathub | grep org.gtk.Gtk3theme \
| grep stable | grep Yaru | cut -f 2 -d$'\t'
===== Permission =====
* [[https://flathub.org/apps/details/com.github.tchx84.Flatseal|Flatseal]] 로 플랫팩 애플리케이션 퍼미션 제어 가능.
===== flatpak 내부의 명령 실행하기 =====
* [[https://github.com/flatpak/flatpak/issues/1483|Is it possible to run command line tools from platforms/apps? · Issue #1483 · flatpak/flatpak]]
* flatpak 패키지 안에 cli 명령이 존재하는 경우 이를 실행할 수 있다.
# 예 : org.darktable.Darktable flatpak 안에 있는 darktable-cli 명령 실행
flatpak run --command=darktable-cli org.darktable.Darktable <--arguments-go-here>
===== 참조 =====
* [[https://unix.stackexchange.com/questions/559129/how-do-i-permanently-set-an-environment-variable-for-a-specific-flatpak-applicat|linux - How do I permanently set an environment variable for a specific Flatpak application? - Unix & Linux Stack Exchange]] : 환경변수 지정
* [[https://www.youtube.com/watch?v=GkgPIJp8_30|What are Flatpaks? | How to install and use them. - YouTube]]
* [[https://www.youtube.com/watch?v=IG2wTCacEtQ|What's the deal with Flatpak? (Linux Crash Course Series) - YouTube]]