{"id":13563088,"url":"https://github.com/popey/unsnap","last_synced_at":"2025-10-20T09:56:38.375Z","repository":{"id":38524005,"uuid":"477637079","full_name":"popey/unsnap","owner":"popey","description":"Quickly migrate from using snap packages to flatpaks","archived":false,"fork":false,"pushed_at":"2024-05-09T09:34:08.000Z","size":420,"stargazers_count":1027,"open_issues_count":28,"forks_count":49,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-05-12T03:21:19.924Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/popey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"popey","ko-fi":"popeydc"}},"created_at":"2022-04-04T09:43:57.000Z","updated_at":"2025-05-04T12:56:38.000Z","dependencies_parsed_at":"2024-08-01T13:28:59.575Z","dependency_job_id":null,"html_url":"https://github.com/popey/unsnap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/popey%2Funsnap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/popey%2Funsnap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/popey%2Funsnap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/popey%2Funsnap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/popey","download_url":"https://codeload.github.com/popey/unsnap/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254485064,"owners_count":22078767,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T13:01:15.046Z","updated_at":"2025-10-20T09:56:33.341Z","avatar_url":"https://github.com/popey.png","language":"Shell","funding_links":["https://github.com/sponsors/popey","popeydc"],"categories":["Applications","Shell","Tools"],"sub_categories":["Utilities"],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\".github/logo.png\" alt=\"unsnap\" width=\"256\" /\u003e\n  \u003cbr /\u003e\n  unsnap\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003cb\u003eQuickly migrate from using snap packages to flatpaks.\u003c/b\u003e\u003c/p\u003e\n\u003cdiv align=\"center\"\u003e\u003cimg src=\".github/screenshot.png\" alt=\"unsnap screenshot\" /\u003e\u003c/div\u003e\n\u003cp align=\"center\"\u003eMade with 💝 for \u003cimg src=\".github/tux.png\" align=\"top\" width=\"18\" /\u003e\u003c/p\u003e\n\n## Introduction\n\nQuickly and easily migrate from using `snap` for applications to `flatpak`. unsnap runs as a two-stage process. unsnap itself generates the scripts to do the actual migration. This enables users to view and/or edit the scripts prior to execution to validate or tweak them.\n\n## Project Status\n\nLet's say it's \"Pre-alpha\", as in \"*It kinda works on my computer*\".\n\nUnless you plan on contributing (see below) it's probably not ready for you, yet.\n\nWe have a Discord for this project:\n[![Discord](https://img.shields.io/discord/955793792626208779?color=0C306A\u0026label=popey%27s%20home%20Discord\u0026logo=Discord\u0026logoColor=ffffff\u0026style=flat-square)](https://discord.gg/dk55RrnZyq)\n\nAlso, please see the [Friendly notice](#friendly-notice) below. \n\n## Running unsnap\n\nSimply clone this repo and then run `unsnap`. After some warnings and checks, this will generate a set of scripts. Run those generated scripts in sequence to achieve unsnappyness.\n\n``` {.bash}\ngit clone https://github.com/popey/unsnap\ncd unsnap\n./unsnap\n```\n\nAlternatively run `unsnap` with the `auto` option to generate **and** run the scripts immediately.\n\n``` {.bash}\n./unsnap auto\n```\n\n## Generated Scripts\n\nThese scripts are generated by unsnap.\n\n* **00-backup** - runs `snap save` for each installed snap being migrated\n* **01-install-flatpak** - if not already installed, will install flatpak package manager\n* **02-enable-flathub** - if not enabled, will add the remote flathub location in flatpak\n* **03-install-flatpaks** - installs equivalent flatpaks for each identified snap\n* **04-remove-snaps** - removes snaps for which the flatpaks have been installed\n* **99-remove-snapd** - removes `snapd` itself, which will remove all snaps\n\n## Package Mapping\n\nunsnap ships with a [applist.csv](./applist.csv) file that contains a mapping of snap package names to flatpak names. This is a one to one mapping. The list is not complete, but contains a subset of applications available in the snap store and flathub. Contributions to this list are most welcome\n\n## Check Mode\n\nTo facilitate checking the snap and flatpak names in the [applist.csv](./applist.csv) file, unsnap has a \"check\" mode. This simply runs through the [applist.csv](./applist.csv) file to check for the existence of every snap and flatpak listed. For this mode to work, both the snap and flatpak commands should be installed. This is an unsnap developer feature, and typically isn't required to be run by users.\n\n``` {.bash}\n./unsnap check\n```\n\n*Note*: In this mode, no scripts are generated, no data is changed, and no flatpaks are installed, but an `unsnap.log`file is generated.\n\n## Application data\n\nCurrently unsnap runs a `snap save` for each snap being migrated. This uses the `snapd` internal mechanism to backup application data. You should ensure you have enough disk space and time for this operation, as some applications will have a lot of data to backup.\n\nMore information about `snap save` can be found in the [snap snapshots documentation](https://snapcraft.io/docs/snapshots).\n\nThe backup can be skipped by omitting running the backup scripts before starting the migration proper.\n\nThe backups made with `snap save` are (by default) stored in `/var/lib/snapd/snapshots` as zip files.\n\nIt's (currently) left as an exercise for the user, to actually *restore* the data, should they need to.\n\n## Logging\n\nunsnap writes to the console, and to a log file called `unsnap.log` in `./log-YYYY-MM-DD.HH.MM.SS` beneath the current directory.\n\n## Excluded snaps\n\nThere's a list of snaps in [excluded_snaps.txt](./excluded_snaps.txt) which are packages from the snap store for which there's no real equivalent in flathub. This includes snaps like `bare`, `core18`, and `core20`. As such we don't want to prompt to migrate people from these to some other flatpak.\n\n*Note*: Yes, I know there are *conceptually* equivalent packages in flathub to these, but those get pulled in as part of the application installs, and do not require management by unsnap itself.\n\nThe purpose of [excluded_snaps.txt](excluded_snaps.txt) is **not** to list packages which are *not yet* available as a flatpak. The purpose is to list packages which will likely *never* be a flatpak. \n\n## Contributions\n\nI knocked this prototype up over the weekend, but it's far from complete. Here're some features that aren't yet complete. Contributions welcome!\n\n* Support distributions other than Ubuntu\n  * According to [snapcraft core18 store page](https://snapcraft.io/core18) (which I have no reason to disbelieve), the following distros are most popular in terms of snaps installed: Manjaro, Linux Mint, Zorin, Debian, Fedora, Pop_OS!, KDE Neon, Raspbian, Centos, elementary OS.\n* Update `applist.csv` to be a more complete list of migratable applications\n  * Consider [submitting](https://github.com/popey/unsnap/issues/new?assignees=\u0026labels=\u0026template=missing-flatpak-report.md\u0026title=) the `missingflatpak.txt` report from running `unsnap` here\n* Update `excluded_snaps.txt` to contain further examples of non-migratable applications\n* Add feature to migrate data from the common snap directories to places flatpak'ed applications can find them\n  * This is a bit hard and may need special cases for some applications. For example 'classic' snaps may store data anywhere, whereas well-confined applications might store in the snap-specific directories.\n\n## Example Generated Script Output\n\nIn this example I installed all the 'featured' snaps (output of `snap find`) on my laptop then ran `unsnap` which generated these scripts.\n\n### 00-backup\n\n``` {.bash}\n#!/usr/bin/env bash\n# Documentation: https://snapcraft.io/docs/snapshots\nsnap save bitwarden blix cecconoid chromium discord firefox flock-chat gimp kdenlive keepassxc krita libreoffice liveforspeed obs-studio onlyoffice-desktopeditors pinta skype slack spotify telegram-desktop thunderbird typeapp-mail vidcutter vlc warble \n```\n\n### 01-install-flatpak\n\n``` {.bash}\n#!/usr/bin/env bash\n# Documentation: https://flatpak.org/setup/Ubuntu\nsudo apt update\nsudo apt install flatpak\n# sudo apt install gnome-software-plugin-flatpak\n```\n\n### 02-enable-flathub\n\n``` {.bash}\n#!/usr/bin/env bash\nsudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo\n```\n\n### 03-install-flatpaks\n\n``` {.bash}\n#!/usr/bin/env bash\nfor f in com.bitwarden org.chromium.Chromium com.discordapp.Discord org.mozilla.firefox org.gimp.GIMP org.kde.kdenlive org.keepassxc.KeePassXC org.kde.krita org.libreoffice.LibreOffice com.obsproject.Studio org.onlyoffice com.github.PintaProject.Pinta com.skype.Client com.slack.Slack com.spotify.Client org.mozilla.Thunderbird com.ozmartians.VidCutter org.videolan.VLC  ; do\n  flatpak install flathub --noninteractive -y $f\ndone\n```\n\n### 04-remove-snaps\n\n``` {.bash}\n#!/usr/bin/env bash\nfor s in bitwarden blix cecconoid chromium discord firefox flock-chat gimp kdenlive keepassxc krita libreoffice liveforspeed obs-studio onlyoffice-desktopeditors pinta skype slack spotify telegram-desktop thunderbird typeapp-mail vidcutter vlc warble  ; do\n  snap remove $s \ndone\n```\n\n### 99-remove-snapd\n\n``` {.bash}\n#!/usr/bin/env bash\necho Removing snapd\nsudo apt remove snapd\n```\n\n### missingflatpak.txt\n\n``` {.bash}\nblix\ncecconoid\nflock-chat\nliveforspeed\ntelegram-desktop\ntypeapp-mail\nwarble\n```\n## Related projects\n\nThe [custom-desktop](https://github.com/natanjunges/custom-desktop) project by [Natan Junges](https://github.com/natanjunges) which provides a set of packages to *revert* an existing Ubuntu install back to something many users may appreciate more. \n\n[deb-get](https://github.com/wimpysworld/deb-get) enables Ubuntu users to install and update deb-based packages of popular applications.\n\n## Friendly notice\n\n*Note*: The existence of unsnap is merely a tool to enable users to switch from snapped applications to flatpak applications. This is not intended as a commentary or slight against any software. It's just a utility.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpopey%2Funsnap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpopey%2Funsnap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpopey%2Funsnap/lists"}