atomsdevs / atoms Goto Github PK
View Code? Open in Web Editor NEWEasily manage Linux Chroot(s) and Containers with Atoms.
License: GNU General Public License v3.0
Easily manage Linux Chroot(s) and Containers with Atoms.
License: GNU General Public License v3.0
continuation of bottlesdevs/Bottles#1835.
Some Linux-native apps and games require dependencies that the host does not have, in which case they provide themselves, or rely on an environment where they can be provided (Flatpak, Nix, etc).
From what I can tell, Flatpak can spawn a separate bwrap container and utilize a Docker image for that. This would allow for prebuilt images that are compatible with this feature to be used, and would also be an easier alternative to making a Flatpak for said app/game.
A picture is worth a thousand words.
See the screenshot below for the error:
When trying to debug via cli, I ran: flatpak run --devel pm.mirko.Atoms
and got:
error: runtime/org.gnome.Sdk/x86_64/44 not installed
Not sure if it's relevant cause the app works.
Flatpak from Flathub
Arch/KDE
X11
No response
It would be awesome if there was some short instruction on how to run the app locally from source to debug some issue.
I have never developed a flatpak application and I am not even sure if that has any impact on the development process when fixing some non-flatpak related bugs.
It's also not clear to me why there is a CLI submodule. As I understand it, the GTK app and the CLI app are both clients to the code in the Core. Is the CLI needed for the GTK app to work as well, or is it just for convenience?
When updating my Flatpaks from Flathub, I get:
Info: runtime org.gnome.Platform branch 44 is end-of-life, with reason: The GNOME 44 runtime is no longer supported as of March 20, 2024. Please ask your application developer to migrate to a supported platform. Info: applications using this runtime: pm.mirko.Atoms
Could you please update the GNOME Platform runtime? (Given the Flatpak on Flathub is maintained by you guys.)
flatpak update
.Flatpak from Flathub
Arch Linux (but this issue could happen on any distro that uses Flatpak & Flathub)
Wayland
P.S. If you guys are maintaining this package on Flathub officially, you may want to get the package verified. Just food for thought.
Here is the log
$ flatpak run pm.mirko.Atoms
Atom configuration file not found with path: b5dbf374-18c6-4ecf-be98-448ed4b7a81e.atom
/usr/lib/python3.9/site-packages/gi/overrides/Gio.py:42: Warning: g_object_weak_unref: couldn't find weak ref 0x7f1a92ae82b0(0x55b8bb6c2330)
return Gio.Application.run(self, *args, **kwargs)
Flatpak from Flathub
Fedora 36
Wayland
No response
This is of low importance. But should be relatively simple to deal with.
I'm requesting two things:
In X11 this is referring to the WM_NAME and _NET_WM_NAME window attributes. I think it's referred to as the window "title" more often in Wayland, but it might depend on the desktop environment.
I observed this because I am maintaining a keymapper app (https://toshy.app) that converts my keyboard behavior in Linux to working like a Mac, and I was remapping some keys to close the Atoms dialogs with my keyboard's equivalent of Cmd+W (remapped to the Escape key in this instance). The "Preferences" dialog is actually named "Preferences", and the "About" dialog is also named "About" in the window attributes. But the "Shortcuts" dialog just has the name "atoms", which is the same as the application class string of all the dialogs.
I haven't been able to pinpoint exactly where these window attributes are set for each dialog in the code, but if you point me at the right file I may be able to put together a simple PR for this.
Update the window attribute "name/title" from "atoms" to "Shortcuts" to match the "Shortcuts" dialog window title displayed visibly on the title bar, like the other dialogs.
Application class attribute can stay the same (for all dialogs this is currently "atoms") or be updated to match the main window app class of "pm.mirko.Atoms". I can work with it either way.
No response
No response
both the app icon and the symbolic icon aren't following gnome design guidelines
Hello,
Could you please add Zorin Os Immage?
Thanks.
V/R,
A
Add Zorin OS Immage.
No response
No response
I have distrobox installed locally and setup locally on my SteamDeck because if the immutable filesystem. I installed Atoms, used flatseal to give it the permissions needed, and rebooted to make sure everything loads properly. After all that, the option for distrobox is still greyed out.
Is there something I'm missing? Does distrobox integration not work if it is installed locally?
I did select system for installing both the Atoms package and Flatseal package and will be willing to reinstall them as user packages if needed.
Atoms is 90% a console, the user will spend almost all the time writing commands. So providing color schemes will make the experience more pleasant.
Color scheme doesn't theme the console only but the entire window, like in GNOME Text Editor or GNOME Builder.
Copying text from or copying to an atom's console is impossible.
Similar to gnome-terminal
for example Ctrl
+Shift
+C
should be able to copy text from an atom's Console tab and Ctrl
+Shift
+V
should paste the clipboard contents to it.
Perhaps a right-click menu with Copy
and Paste
items would make sense, currently right-clicking on the console does nothing.
No response
Atoms fails to initialize any type of Distrobox container. Tested values are:
Other, unofficial package
Fedora Silverblue 39
Wayland
The package is a test version sent by @mirkobrombin .
As you can see here, it says "Downloading Choosen Image" but it's supposed to be spelled as "Chosen"
Just create a new Atom and you'll see the typo
Flatpak from Flathub
Fedora 36 Silverblue
Wayland
I'm sorry if this sounds nit-picky. I actually really value your work and I hope that I don't come across as annoying
Love the project - just getting into using distrobox from NixOS.
I found a small change in the dependencies
Noted dependency
org.freedesktop.Platform.GL32
Actual dependency
org.freedesktop.Platform.GL32.default
Thanks again - love your work!
I have a use case where I plan on using Atoms as a way to containerize other distro functions that involve using the MPV Media Player within an Atom for my Steam Deck, which has an immutable filesystem thus I am using this as a flatpak workaround without risking potential instability in my main OS by turning read only off.
It works fine in terms of getting mpv to launch and show video for the functions I want it for, however, said video will not have audio, since the drivers aren't properly set up.
I'm trying out a Fedora atom with nonfree repositories manually enabled to do this since Arch Linux is not a stable option to choose for an atom where I can just archinstall and it'll do most of the work, and tried using sudo dnf install pipewire and sudo dnf install pulseaudio in separate fedora atoms and neither of these did the trick in getting audio working in either of them.
I tried to find some way to RTFM my way out of this situation but couldn't find the information I needed, so now I'm here as a last resort.
tl;dr, Can we please get an easy way to pass our host system audio drivers to the Atom we are using, and/or have some kind of GUI checkbox that says "Allow programs/packages to use audio in Atom" if this is possible?
A video tutorial guide on the Bottles Youtube channel on how to set up audio drivers inside of an Atom
No response
It would be nice to have Arch on atoms. It would allow for the use of the AUR.
It should be pretty simple to put together a image. The only problem I can foresee is it getting out of date very quickly
No response
No response
Atoms backend and frontend are already independent from each other. Hosting them in different repositories as separated projects will allow clients to use the backend as a dependency.
Tasks
It seems like a lot of work to recreate the work done by distrobox.
It might be possible to reuse some of the images created by distrobox. They have different configurations but in theory it could be made to work.
Atoms could become a frontend for distrobox
. This would eliminate the burden for maintaining images but would make most of the existing project worthless.
I tried installing a distrobox from the main UI, however when it tries to pull the image and create the instance, no progress seems to occur. In contrast, the application lists and manages distroboxes that were already created via command line run flawlessly. For example, I created a Distrobox via command line, using this command:
distrobox create --image fedora:37 --name fedora
and I have a fully functional Fedora distrobox, which shows up in Atoms. However, if I try to create the same distrobox from Atoms, I am unable to even enter the name of the image in Atom's text field to pull the correct image.
Now here's the weird part. when I ran the Atom flatpak from the command line, I received a prompt, not in the UI but from the command-line itself, asking if I wanted to pull the fedora 37 image. After confirming in the terminal that I wanted to pull the image, the image downloaded and the distrobox was created flawlessly.
Flatpak from Flathub
Garuda Linux
Wayland
No response
So far, I'm enjoying the product, but as of yet, I've been unable to activate distrobox integrations. I've adjusted the talk permissions using flatseal to org.freedesktop.Flatpak and it's still not working. Am I doing something wrong here?
The portage binary seems to be missing from Gentoo. Without it you can not use emerge.
bash: portage: command not found
Flatpak from Flathub
Pop os, Fedora
X11, Wayland
It seems that the image is missing portage
From the README:
To enable the distrobox integration, you need to give Atoms the Flatpak permission to talk to org.freedesktop.Flatpak.
How can one do this? I tried to look for the permission in Flatseal and it isn't exposed there. I couldn't figure it out by looking at the Flatpak documentation either.
The current summary "Easily manage Linux Chroot and Containers." is not ideal (too long, includes "easily", which is usually superfluous in summaries, and ends with a period). I think it could be simplified to something like "Manage Chroot and Containers".
These are the appdata summary guidelines: https://gitlab.gnome.org/GNOME/Initiatives/-/wikis/App-Metadata#summary
Every time I click on the create atom button I get
TypeError: AtomsWindow.on_btn_new_clicked() missing 1 required positional argument: 'action'
Fresh install from flatpak
If I use the "+" button in the corner it works
some programs and scripts are hard coded to use systemctl and won't work on a chroot or a container without being modified
make running systemcl executes servicestl instead
No response
No response
Currently you can install GUI applications in a chroot, but they don't integrate with the host system. You have to launch them from the command line.
The ability to integrate applications from a chroot into the host distro's menu system.
No response
@mirkobrombin thanks for your dedication
Trying to install Debian and Ubuntu under Atoms, being using it before in my old laptop without problems.
But I've found in Arch Linux fresh install I'm using NetworkManager resolv.conf, so there's not stub-resolv.conf
So there's no DNS resolution. Of course, I can ping and so on, so if I remove the symlink I can resolve DNS.
Flatpak from Flathub
Arch Linux + Network Manager resolv.conf
Wayland
Can't /etc/resolv.conf from main system be directly symlinked to the chroot?
Currently, Atoms provides no way of updating the containers or chroots without going into the containers.
Distrobox provides a way of updating its containers using distrobox upgrade
. Chroots are a bit different, but I can imagine it wouldn't be too hard to implement. Ideally, there would be an update all button somewhere, and in the Dashboard of an atom, you could choose to update that specific atom only.
No response
No response
It's actually very simple to get GUI apps to work on Alpine. Simply run xhost +local:; xhost
, and start a GUI app.
Note: this was tested with Fedora rawhide.
To fix this, it should run the command when you open a Alpine chroot.
It could also have an option to rerun xhost +local:
, in case something breaks.
https://wiki.archlinux.org/title/Chroot#Run_graphical_applications_from_chroot
https://wiki.archlinux.org/title/Xhost
When creating a new atom and the checksum fails (in my case because the file specified in the checksum file doesn't exist), instead of raising an exception and showing an error in the ui it just silently crashes in the background and then gets stuck on the creation screen with this error in the terminal:
Error while running async job: <function AtomsNewAtomWindow.__on_btn_create_clicked.<locals>.create_atom at 0x7fd03b87f4c0>
Exception: not enough values to unpack (expected 2, got 1)
File "/app/share/atoms/atoms/utils/threading.py", line 59, in __target
result = self.task_func(*args, **kwargs)
File "/app/share/atoms/atoms/windows/new_atom_window.py", line 120, in create_atom
return self.window.manager.request_new_atom(
File "/app/lib/python3.9/site-packages/atoms_core/atoms.py", line 93, in request_new_atom
return Atom.new(
File "/app/lib/python3.9/site-packages/atoms_core/entities/atom.py", line 168, in new
image = AtomsImageUtils.get_image(
File "/app/lib/python3.9/site-packages/atoms_core/utils/image.py", line 42, in get_image
remote_hash = distribution.read_remote_hash(architecture, release)
File "/app/lib/python3.9/site-packages/atoms_core/entities/distribution.py", line 90, in read_remote_hash
_hash, _file = re.split(r"\s+", line, maxsplit=1)
I want to use this to compile and run some of the packages not offered in my disto repos for that I need to copy paste dependency upgrades and git folders etc a lot.
I couldn't find an easy way to do it from the GUI and been creating text file to chroot directory and cat'ing them.
Would be nice if I didn't have to
Maybe a button near the ones for mounting themes that would share the clipboard between host and user?
I'm guessing It would work if I did the chroot operation in my terminal and used this https://wiki.archlinux.org/title/Chroot
but that in my mind takes away my need for this program, which I would like to use.
No response
When building during the install process I get
install: cannot stat 'serviced': No such file or directory
Error: module servicectl: Child process exited with code 1
From source
Arch Linux
Wayland
No response
There's a way to provide it without Flatpak requirement? it brings security concerns and reduce portabillity.
Firejail could be used to provide sandbox to it? because it supports sandbox via chroot and seccomp too (it does with Firefox AFAIK).
It could be provided statically, like Firefox, Tor, PPSSPP, PlayOnLinux and RPCS3.
Traceback (most recent call last):
File "/app/share/atoms/atoms/views/dashboard.py", line 131, in __on_detach_clicked
attach() if self.__detach_status else detach()
File "/app/share/atoms/atoms/views/dashboard.py", line 125, in detach
self.__detached_window = AtomsDetachedWindow(self.console, "#000000", title=self.atom.name)
File "/app/share/atoms/atoms/windows/detached_window.py", line 35, in __init__
self.__build_ui()
File "/app/share/atoms/atoms/windows/detached_window.py", line 41, in __build_ui
css_provider.load_from_data(str.encode(style))
TypeError: Gtk.CssProvider.load_from_data() takes exactly 3 arguments (2 given)
Click the Detach Console button, the button will change to Attach Console, but no console will appear
Click Attach Console and nothing will happen
Flatpak from Flathub
Fedora 38
Wayland
No response
From what I heard, distrobox supports creating an instance with a custom HOME directory, which is useful if the user wishes to keep the distrobox instance's contents separate from their host system, as otherwise everything will be dumped onto their main Home directory and cause a messy clutter.
As someone who likes keeping their filesystem organized, such a feature is incredibly useful to me and I would like to make use of it, but unfortunately, from what I gathered, it seems this isn't available as an option in Atoms.
Would it be possible to add an option to specify a custom HOME directory in Atoms when creating a distrobox atom?
No response
While I understand that Atoms is not intended to be a proper tool for managing Distrobox instances, it is the only tool that is able to do the job in a way that isn't overwhelming. Pods appears to be a quite complicated tool for most non-technical users to make use of if they happen to wish to have this functionality, and it's also a bit disheartening to have to resort to the command line to have this option as well. So I ask you to at least please consider implementing this, as it's likely not too complicated to implement and wouldn't diverge much from Atoms' vision.
There's a way to make it work on FreeBSD? because FreeBSD has it's own sandbox using namespaces called jails.
(It offers Linux binary compatibility too).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.