GithubHelp home page GithubHelp logo

egara / buttermanager Goto Github PK

View Code? Open in Web Editor NEW
117.0 5.0 5.0 99.17 MB

ButterManager is a BTRFS tool for managing snapshots, balancing filesystems and upgrading the system safetly.

License: GNU General Public License v3.0

Python 95.11% Shell 4.89%
managing-snapshots balancing-filesystems arch-linux btrfs aur gui linux

buttermanager's People

Contributors

conan-kudo avatar egara avatar lapineige avatar michel-slm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

buttermanager's Issues

Fatal error when starting up: `ValueError: invalid literal for int() with base 10: ''`

Installed on Fedora 38 using dnf, buttermanager package version buttermanager-2.4.2-6.fc38.noarch.

Starting it from Gnome, a notification appears saying the app crashed. When I start it up on the command line, I get this error:

$ buttermanager 
QSocketNotifier: Can only be used with threads started with QThread
qt.qpa.qgnomeplatform.theme: The desktop style for QtQuick Controls 2 applications is not available on the system (qqc2-desktop-style). The application may look broken.
Traceback (most recent call last):
  File "/usr/bin/buttermanager", line 33, in <module>
    sys.exit(load_entry_point('buttermanager==2.4.2', 'console_scripts', 'buttermanager')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/buttermanager/bm_main.py", line 17, in main
    PasswordWindow(None)
  File "/usr/lib/python3.11/site-packages/buttermanager/buttermanager/buttermanager.py", line 60, in __init__
    self.__buttermanager_configurator.configure()
  File "/usr/lib/python3.11/site-packages/buttermanager/buttermanager/util/utils.py", line 140, in configure
    self.migrate_properties()
  File "/usr/lib/python3.11/site-packages/buttermanager/buttermanager/util/utils.py", line 184, in migrate_properties
    snapshots_to_keep = int(settings.properties_manager.get_property('snapshots_to_keep'))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: ''

Upgrade with snapshots does not take snapshots

I'm using the new fast action button. The process does not do anything to the snapshots and I have to click on the take snapshots button. That process does not remove old snapshots. When does it check for the snapshot amount? I have now defined Snapshots to keep: 3 and There is 2 subvolumes with 6 snapshots.

AUR package depends on grub-btrfs

The AUR package depends on grub-btrfs, in my case I am using systemd-boot. Would be possible done the dependency optional?

I don't know if it is as easy as change the dependency from depends to optdepends or if it is more integrated in the code.

Error if sudo is not found

Title is self-explanatory.

While most systems do have sudo, some don't, including mine (I use doas).

There should be some sort of option to allot for people who might not have sudo on their system.

Snapshot diff : List index out of range

After making a few snapshots (8, out of 7 subvolumes), I tried to show differences between the first (/) snapshot and the current state. The Dialog popup is shown, but in the command ligne I have this error:

(Parent is Breeze::WidgetStateEngine(0x29d1960), parent's thread is QThread(0x2631dd0), current thread is Differentiator(0x7f2514010220)
QObject::installEventFilter(): Cannot filter events for objects in a different thread.
QObject: Cannot create children for a parent that is in a different thread.
(Parent is Breeze::WidgetStateEngine(0x29d1960), parent's thread is QThread(0x2631dd0), current thread is Differentiator(0x7f2514010220)
Traceback (most recent call last):
  File "/opt/buttermanager/buttermanager/buttermanager/filesystem/snapshot.py", line 445, in run
    self.__calculate_differences()
  File "/opt/buttermanager/buttermanager/buttermanager/filesystem/snapshot.py", line 473, in __calculate_differences
    subvolume_name = list(filter(None, subvolume_name_list))[-1]
IndexError: list index out of range

RFE: PAM integration

This would allow users to authenticate using their mechanism of choice (e.g. fingerprint reader) in a consistent way, rather than forcing them to use their passwords.

Snapshot not taken : issue with spaces in name ?

Version : Buttermanager 2.5.0

Hello,

I have selected 3 subvolumes. One include 2 spaces in its name (both subvolume and folder).

If I want to snapshot it, it fails.
I have no log file (why ? 🤔) so I can't share it.

But from the command line: btrfs subvolume snapshot: exactly 2 arguments expected, 4 given

I suppose its the spaces that are causing trouble… what do you think ?

I believe you need to escape the spaces :)

snap package not available

error: cannot open: "buttermanager_1.5_amd64.snap"
I also couldn't find ButterManager in the Snap Store.
I also tried to install it with the Python script but I had to edit the script in a lot of places to get it running without errors, but at the end it didn't install ButterManager anyway.
I tried this on openSUSE Tumbleweed. Installing it on Arch was super easy through the AUR.

Updated system, error

Just throwing this here. did not have time to investigate more. Tried to reinstall but same error. Arch Linux

Traceback (most recent call last):
  File "/usr/lib/python3.11/importlib/metadata/__init__.py", line 563, in from_name
    return next(cls.discover(name=name))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
StopIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/bin/buttermanager", line 33, in <module>
    sys.exit(load_entry_point('buttermanager==2.5.0', 'console_scripts', 'buttermanager')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/bin/buttermanager", line 22, in importlib_load_entry_point
    for entry_point in distribution(dist_name).entry_points
                       ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/metadata/__init__.py", line 981, in distribution
    return Distribution.from_name(distribution_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/metadata/__init__.py", line 565, in from_name
    raise PackageNotFoundError(name)
importlib.metadata.PackageNotFoundError: No package metadata was found for buttermanager

Doesn't start after installation (Gtk-Message: Failed to load module "canberra-gtk-module")

I just installed ButterManager with the snap package on openSUSE Tumbleweed, but when I try to open it, it doesn't start.
Here is the terminal output:

damian101@localhost:~> buttermanager
Gtk-Message: Failed to load module "canberra-gtk-module"
_IceTransSocketUNIXConnect: Cannot connect to non-local host localhost
_IceTransSocketUNIXConnect: Cannot connect to non-local host localhost
Qt: Session management error: Could not open network socket

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32

(python3:30946): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so: wrong ELF class: ELFCLASS32
Traceback (most recent call last):
  File "/snap/buttermanager/x2/usr/lib/python3.5/urllib/request.py", line 1254, in do_open
    h.request(req.get_method(), req.selector, req.data, headers)
  File "/snap/buttermanager/x2/usr/lib/python3.5/http/client.py", line 1106, in request
    self._send_request(method, url, body, headers)
  File "/snap/buttermanager/x2/usr/lib/python3.5/http/client.py", line 1151, in _send_request
    self.endheaders(body)
  File "/snap/buttermanager/x2/usr/lib/python3.5/http/client.py", line 1102, in endheaders
    self._send_output(message_body)
  File "/snap/buttermanager/x2/usr/lib/python3.5/http/client.py", line 934, in _send_output
    self.send(msg)
  File "/snap/buttermanager/x2/usr/lib/python3.5/http/client.py", line 877, in send
    self.connect()
  File "/snap/buttermanager/x2/usr/lib/python3.5/http/client.py", line 1260, in connect
    server_hostname=server_hostname)
  File "/snap/buttermanager/x2/usr/lib/python3.5/ssl.py", line 377, in wrap_socket
    _context=self)
  File "/snap/buttermanager/x2/usr/lib/python3.5/ssl.py", line 752, in __init__
    self.do_handshake()
  File "/snap/buttermanager/x2/usr/lib/python3.5/ssl.py", line 988, in do_handshake
    self._sslobj.do_handshake()
  File "/snap/buttermanager/x2/usr/lib/python3.5/ssl.py", line 633, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/snap/buttermanager/x2/buttermanager/util/utils.py", line 200, in check_version
    response = urllib.request.urlopen(self.__version_url)
  File "/snap/buttermanager/x2/usr/lib/python3.5/urllib/request.py", line 163, in urlopen
    return opener.open(url, data, timeout)
  File "/snap/buttermanager/x2/usr/lib/python3.5/urllib/request.py", line 466, in open
    response = self._open(req, data)
  File "/snap/buttermanager/x2/usr/lib/python3.5/urllib/request.py", line 484, in _open
    '_open', req)
  File "/snap/buttermanager/x2/usr/lib/python3.5/urllib/request.py", line 444, in _call_chain
    result = func(*args)
  File "/snap/buttermanager/x2/usr/lib/python3.5/urllib/request.py", line 1297, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "/snap/buttermanager/x2/usr/lib/python3.5/urllib/request.py", line 1256, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "buttermanager.py", line 865, in <module>
    password_window = PasswordWindow(None)
  File "buttermanager.py", line 69, in __init__
    self.init_ui()
  File "buttermanager.py", line 108, in init_ui
    self.__version_checker.check_version()
  File "/snap/buttermanager/x2/buttermanager/util/utils.py", line 206, in check_version
    self.__logger.error("Error checking new versions of ButterManager. Reason: " + exception.reason)
TypeError: Can't convert 'ssl.SSLError' object to str implicitly
damian101@localhost:~>

Check for updates

Because some users ha installed the application cloning the repository or via the custom snap package, those users won't be aware when a new version is available, so the application should warn when a new release has been deployed.

Consolidation broken

Console output:

btrfs subvolume snapshot: exactly 2 arguments expected, 1 given
btrfs subvolume show: exactly 1 argument expected, 0 given
Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/buttermanager/buttermanager/window/windows.py", line 275, in consolidate
    commandline_output = subprocess.check_output(command, shell=True)
  File "/usr/lib/python3.9/subprocess.py", line 424, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.9/subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['sudo btrfs subvolume show ']' returned non-zero exit status 1.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/buttermanager/buttermanager/window/windows.py", line 278, in consolidate
    str(called_process_error_exception.reason))
AttributeError: 'CalledProcessError' object has no attribute 'reason'
Aborted

Relevant log:


2021-09-23 17:11:16,835 INFO:ConfigManager. Checking OS. ARCH found
2021-09-23 17:11:16,835 INFO:ConfigManager. Checking Desktop Environment. kde found
2021-09-23 17:11:16,835 INFO:ConfigManager. Installation type: native
2021-09-23 17:11:16,835 INFO:ConfigManager. Creating PropertiesManager...
2021-09-23 17:11:16,836 INFO:ConfigManager. Migration process has finished successfully!
2021-09-23 17:11:16,836 INFO:ConfigManager. Retrieving user's configuration from buttermanager.yaml file and loading it in memory...
2021-09-23 17:11:16,836 INFO:VersionChecker. Checking for a new version of ButterManager. Please wait...
2021-09-23 17:11:16,852 INFO:PasswordWindow. Calculating appropriated base font size for UI elements...
2021-09-23 17:11:16,853 INFO:PasswordWindow. Base font size = 10
2021-09-23 17:11:17,064 INFO:VersionChecker. Last version is 2.4.2 and current version is 2.4.2
2021-09-23 17:11:20,571 INFO:RootSnapshotChecker. Checking if the current snapshot used for root is the default. Please wait...
2021-09-23 17:11:20,783 INFO:ButtermanagerMainWindow. BTRFS filesystems found in the system:
2021-09-23 17:11:20,783 INFO:ButtermanagerMainWindow. BTRFS Filesystem -> UUID: 28a88c3b-5018-40f5-b628-70a519155731; Devices: ['/dev/nvme1n1p2']; Mounted Points: ['/', '/home', '/mnt/defvol']
2021-09-23 17:11:23,095 INFO:ConsolidateSnapshotWindow. Consolidating default root snapshot. The system has booted in /mnt/defvol/_snapshots/root-20210923-0 and it will be consolidated into 
2021-09-23 17:11:23,095 INFO:Subvolume. Deleting subvolume from origin /. Please wait...
2021-09-23 17:11:23,095 INFO:Subvolume. Deleting subvolume from origin /. Please wait...
2021-09-23 17:11:23,103 INFO:Subvolume. Snapshot / deleted.

2021-09-23 17:11:23,103 INFO:Subvolume. Snapshot / deleted.


btrfs-list:

NAME                                 TYPE     EXCL  MOUNTPOINT
28a88c3b                               fs  137.47G (single, 788.23G free)
   [main]                         mainvol       -  /
   _active                         subvol       -  
   _active/home                    subvol       -  /home
      _snapshots/home.20210919_1   rosnap       -  
      _snapshots/home.20210923     rosnap       -  
      _snapshots/home-20210923-0   rosnap       -  
   _snapshots                      subvol       -  
   _active/root                    subvol       -  
_active/root.BROKEN                  snap       -  
_snapshots/root-20210923-0           snap       -  /
_snapshots/root.20210923           rosnap       -  
_snapshots/root.20210919_1         rosnap       -

It is probably because I somehow fucked my filesystem while trying to use btrbk and their restore guide. But I don't really know so I wanted to share the broken case if you want to add some safety checks.

Selecting a subvolume closes Buttermanager

System : Kubuntu 20.10
Version : 2.3, and master

Hello,

When I select a subvolume, or any folder, the app just quit, and if I open it again nothing was saved.
I suppose that's a bug ?

Logs management

  • Implement a button to delete logs
  • Implement new settings:
    • Create a log when a new snapshot is created
    • Keep logs (If this check is not marked, when a snapshot is deleted, then the log related will be deleted too)

Does not create snapshots automatically

Creating snapshots and updating GRUB entries if it is necessary...

When I run the update in the ButterManager I can see that in the log but there is not a new snapshot if I don't make it manually and when I make one it is added to grub menu.
I'm just wondering have I done something wrong or is this how it should work?

Is there an easy way to trigger the automatic snapshot creation when I run the system update from the command line?

built/installed, errors out from cli, nothing from gui

$ /usr/local/bin/buttermanager 
Traceback (most recent call last):
  File "/usr/local/bin/buttermanager", line 33, in <module>
    sys.exit(load_entry_point('buttermanager==2.5.0', 'console_scripts', 'buttermanager')())
  File "/usr/local/bin/buttermanager", line 25, in importlib_load_entry_point
    return next(matches).load()
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 171, in load
    module = import_module(match.group('module'))
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/usr/local/lib/python3.10/dist-packages/buttermanager-2.5.0-py3.10.egg/buttermanager/bm_main.py", line 1, in <module>
    from .buttermanager.buttermanager import PasswordWindow
  File "/usr/local/lib/python3.10/dist-packages/buttermanager-2.5.0-py3.10.egg/buttermanager/buttermanager/buttermanager.py", line 20, in <module>
    from .filesystem import filesystem, snapshot
  File "/usr/local/lib/python3.10/dist-packages/buttermanager-2.5.0-py3.10.egg/buttermanager/buttermanager/filesystem/filesystem.py", line 24, in <module>
    from ..window import windows
  File "/usr/local/lib/python3.10/dist-packages/buttermanager-2.5.0-py3.10.egg/buttermanager/buttermanager/window/windows.py", line 23, in <module>
    from ..filesystem import snapshot
  File "/usr/local/lib/python3.10/dist-packages/buttermanager-2.5.0-py3.10.egg/buttermanager/buttermanager/filesystem/snapshot.py", line 24, in <module>
    from ..util import settings, utils
  File "/usr/local/lib/python3.10/dist-packages/buttermanager-2.5.0-py3.10.egg/buttermanager/buttermanager/util/settings.py", line 22, in <module>
    from . import utils
  File "/usr/local/lib/python3.10/dist-packages/buttermanager-2.5.0-py3.10.egg/buttermanager/buttermanager/util/utils.py", line 26, in <module>
    from PyQt5.QtWidgets import QFileDialog
ImportError: /usr/local/lib/python3.10/dist-packages/PyQt5-5.15.10-py3.10-linux-x86_64.egg/PyQt5/QtWidgets.abi3.so: undefined symbol: _ZdlPvm, version Qt_5

Snapshot error in logs

Hi, I notice a snapshot error in a log.
How to reproduce:

  • I clicked on "update with snapshot button". Everything worked fine.
  • Then I opened the resulting log file. There, I notice the following error:
Checking for system updates. 
-------- 

-------- 
Starting system upgrading process. Please wait... 

-------- 
Creating snapshots and updating GRUB entries if it is necessary... 
-------- 
Create a snapshot of '/mnt/defvol/@/' in '/mnt/defvol/snapshots/root-20211024-0' 

-------- 
Error creating the snapshot /mnt/defvol/@/ 
Error: 'NoneType' object has no attribute 'decode' 
-------- 
Upgrading the system. Please wait... 
:: Synchronising package databases... 
core downloading... 
extra downloading... 
community downloading... 
multilib downloading... 
endeavouros downloading... 
:: Starting full system upgrade... 
resolving dependencies... 
looking for conflicting packages...
  • Finally, I tried to do several snapshots in command line, outside ButterManager. No error message appeared.

Maybe ButterManager is involved in this case ?

Best regards

Not working anymore after GRUB update

I'm getting this message: You have booted into an alternative snapshot. Do you want to consolidate it as your default

I'm not actually totally sure how I ended up with this problem. I'll try to explain.
first GRUB updated to new version and it did not work anymore (boot loop) so I booted up arch install usb and copied /boot/ from older snapshot to the active one. Then I was able to boot again. Then I loaded older snapshot to get everything like it was before the GRUB problem.

Next I had to run grub-install and grub-mkconfig to get the new version of GRUB working but now even if boot any snapshot or the active one buttermanager is always saying that message and consolidation does nothing.

Any tips how to fix this? I don't need my old snapshots.

App not launching

I've never worked with python, but it looks like there is something wrong with string to integer conversion.
Arch Linux, Gnome 40.

Traceback (most recent call last): File "/usr/bin/buttermanager", line 33, in <module> sys.exit(load_entry_point('buttermanager==2.3', 'console_scripts', 'buttermanager')()) File "/usr/lib/python3.9/site-packages/buttermanager/bm_main.py", line 17, in main PasswordWindow(None) File "/usr/lib/python3.9/site-packages/buttermanager/buttermanager/buttermanager.py", line 60, in __init__ self.__buttermanager_configurator.configure() File "/usr/lib/python3.9/site-packages/buttermanager/buttermanager/util/utils.py", line 142, in configure self.migrate_properties() File "/usr/lib/python3.9/site-packages/buttermanager/buttermanager/util/utils.py", line 186, in migrate_properties snapshots_to_keep = int(settings.properties_manager.get_property('snapshots_to_keep')) ValueError: invalid literal for int() with base 10: ''

Not very mobile friendly

With the development of the PinePhone and other linux based phones, having btrfs snapshots seems like a great addition.

Sadly, this tool does not look or function well under a mobile interface yet.

Here's some screenshots to give a hint. ;)

Screenshot_20210328_150828
Screenshot_20210328_150844

Font size very small after upgrade to 2.5

After upgrading to version 2.5.0, the font size went from "normal" to "very very small" (just like on an HDPI screen).
I'm using a 15" laptop, Full HD definition.

Also I'm using a custom scaling in KDE settings (106,25%), just in case it could be related…

By the way : what's new in this version ? :)

Missing dependency for Arch "No module named 'PyQt5.sip'"

python /opt/buttermanager/buttermanager/buttermanager.py 
Traceback (most recent call last):
  File "/opt/buttermanager/buttermanager/buttermanager.py", line 21, in <module>
    import filesystem.filesystem
  File "/opt/buttermanager/buttermanager/filesystem/filesystem.py", line 25, in <module>
    import util.utils
  File "/opt/buttermanager/buttermanager/util/utils.py", line 36, in <module>
    import window.windows
  File "/opt/buttermanager/buttermanager/window/windows.py", line 26, in <module>
    from PyQt5.QtWidgets import QDesktopWidget, QDialog, QMainWindow, QFileDialog
ModuleNotFoundError: No module named 'PyQt5.sip'

I tried installing the PyQt5 package, but it wasn't enough.

There's a package named python2-sip-pyqt5, but none for python 3.

Consolidation not working if docker uses btrfs subvolumes

When trying to restore the previous snapshot I get

Error removing root snapshot because it is not empty and there are subvolumes within it. The consolidation process couldn't be done.

I think this is due to docker using btrfs storage driver when your system is btrfs. https://docs.docker.com/storage/storagedriver/btrfs-driver/

btrfs-list

NAME                                                                                                                                                             TYPE     EXCL  MOUNTPOINT
8d49b3d9                                                                                                                                                           fs  524.44G (single, 397.26G free)
   [main]                                                                                                                                                     mainvol       -  /
   _active                                                                                                                                                     subvol       -  
   _active/home                                                                                                                                                subvol       -  /home
      _snapshots/home-20220509-0                                                                                                                               rosnap       -  
      _snapshots/home-20220510-0                                                                                                                               rosnap       -  
      _snapshots/home-20220510-1                                                                                                                               rosnap       -  
      _snapshots/home-20220515-0                                                                                                                               rosnap       -  
      _snapshots/home-20220516-0                                                                                                                               rosnap       -  
      _snapshots/home-20220522-0                                                                                                                               rosnap       -  
   _snapshots                                                                                                                                                  subvol       -  
   _active/root/var/lib/docker/btrfs/subvolumes/5c0c577fbc807d18f455b25dbf15dd8f2206340ac3219cac28705ddb445870b1                                               subvol       -  
      _active/root/var/lib/docker/btrfs/subvolumes/89da89fb79c534966bdbddfd90f71d75c2787ee5356caf26519c9ef376f40d4f                                              snap       -  
         _active/root/var/lib/docker/btrfs/subvolumes/4f71a21eed30b27a35a7af560304d4c631b5385ae1f0d842f11cb9188c0191ea                                           snap       -  
            _active/root/var/lib/docker/btrfs/subvolumes/53faadbc170d31293d35fc818b6061fc70bad40b84349864fef2664b19ca9230                                        snap       -  
               _active/root/var/lib/docker/btrfs/subvolumes/33458e412d4db56fa713e35e35ff9084c49d4bf73e4b01c78eb81bdf6e471f53                                     snap       -  
                  _active/root/var/lib/docker/btrfs/subvolumes/97122f575ec6ab5203b3d292a0b1c7be1d18cfd60ee27c0b43797614bb6f2e44                                  snap       -  
                     _active/root/var/lib/docker/btrfs/subvolumes/64a1becc16557148dc72eedfcafb898b35d63f0bd421b0ce724a9f7347f45d99                               snap       -  
                        _active/root/var/lib/docker/btrfs/subvolumes/f578126cce5500bab66683244214169cc47e33a60313a95599a4f8df450ead3d                            snap       -  
                           _active/root/var/lib/docker/btrfs/subvolumes/bf3b32b5f38bc6bc10ceafc07dc04fbd4b5cd9b94da94e602f7b361895e7b396                         snap       -  
                              _active/root/var/lib/docker/btrfs/subvolumes/c11b92d4bbd019cd8e2a688d51445327f0b9644ecf90d07e44d5c4e76b168ed3                      snap       -  
                                 _active/root/var/lib/docker/btrfs/subvolumes/07cabea4bd28aaf01f9fd759f3aad7d3baf33fcb46ea88928c250bcad7518db4                   snap       -  
                                    _active/root/var/lib/docker/btrfs/subvolumes/9d6cec32ee4ea01d553b0697507c3158dd24cb21ecf116af80d4ac1471c36ea2                snap       -  
                                       _active/root/var/lib/docker/btrfs/subvolumes/ba9fccbaa568553450a59ebaf885bb48f6d60698ea30754e00d5ff24adb5bf4a             snap       -  
                                          _active/root/var/lib/docker/btrfs/subvolumes/b5132c68ca5ecc28cac84934c1c8b29221808eeee62a16d9a02b9051fac9afdc-init     snap       -  
                                             _active/root/var/lib/docker/btrfs/subvolumes/b5132c68ca5ecc28cac84934c1c8b29221808eeee62a16d9a02b9051fac9afdc       snap       -  
_snapshots/root-20220522-0                                                                                                                                       snap       -  /
_snapshots/root-20220510-1                                                                                                                                       snap       -  
_active/root                                                                                                                                                     snap       -  
_snapshots/root-20220510-0                                                                                                                                       snap       -  
_snapshots/root-20220516-0                                                                                                                                       snap       -  
_snapshots/root-20220515-0                                                                                                                                       snap       -  
_snapshots/root-20220509-0                                                                                                                                       snap       -  

btrfs subvolume list /mnt/defvol/_active/root/var/lib/docker/btrfs/

ID 256 gen 249506 top level 5 path _active
ID 258 gen 249550 top level 256 path _active/home
ID 259 gen 249506 top level 5 path _snapshots
ID 1154 gen 249543 top level 256 path _active/root
ID 2161 gen 249539 top level 1154 path var/lib/docker/btrfs/subvolumes/5c0c577fbc807d18f455b25dbf15dd8f2206340ac3219cac28705ddb445870b1
ID 2162 gen 249540 top level 1154 path var/lib/docker/btrfs/subvolumes/89da89fb79c534966bdbddfd90f71d75c2787ee5356caf26519c9ef376f40d4f
ID 2163 gen 249540 top level 1154 path var/lib/docker/btrfs/subvolumes/4f71a21eed30b27a35a7af560304d4c631b5385ae1f0d842f11cb9188c0191ea
ID 2164 gen 249540 top level 1154 path var/lib/docker/btrfs/subvolumes/53faadbc170d31293d35fc818b6061fc70bad40b84349864fef2664b19ca9230
ID 2165 gen 249540 top level 1154 path var/lib/docker/btrfs/subvolumes/33458e412d4db56fa713e35e35ff9084c49d4bf73e4b01c78eb81bdf6e471f53
ID 2166 gen 249540 top level 1154 path var/lib/docker/btrfs/subvolumes/97122f575ec6ab5203b3d292a0b1c7be1d18cfd60ee27c0b43797614bb6f2e44
ID 2167 gen 249540 top level 1154 path var/lib/docker/btrfs/subvolumes/64a1becc16557148dc72eedfcafb898b35d63f0bd421b0ce724a9f7347f45d99
ID 2168 gen 249540 top level 1154 path var/lib/docker/btrfs/subvolumes/f578126cce5500bab66683244214169cc47e33a60313a95599a4f8df450ead3d
ID 2169 gen 249541 top level 1154 path var/lib/docker/btrfs/subvolumes/bf3b32b5f38bc6bc10ceafc07dc04fbd4b5cd9b94da94e602f7b361895e7b396
ID 2170 gen 249541 top level 1154 path var/lib/docker/btrfs/subvolumes/c11b92d4bbd019cd8e2a688d51445327f0b9644ecf90d07e44d5c4e76b168ed3
ID 2171 gen 249541 top level 1154 path var/lib/docker/btrfs/subvolumes/07cabea4bd28aaf01f9fd759f3aad7d3baf33fcb46ea88928c250bcad7518db4
ID 2172 gen 249542 top level 1154 path var/lib/docker/btrfs/subvolumes/9d6cec32ee4ea01d553b0697507c3158dd24cb21ecf116af80d4ac1471c36ea2
ID 2173 gen 249542 top level 1154 path var/lib/docker/btrfs/subvolumes/ba9fccbaa568553450a59ebaf885bb48f6d60698ea30754e00d5ff24adb5bf4a
ID 2178 gen 249542 top level 1154 path var/lib/docker/btrfs/subvolumes/b5132c68ca5ecc28cac84934c1c8b29221808eeee62a16d9a02b9051fac9afdc-init
ID 2179 gen 249543 top level 1154 path var/lib/docker/btrfs/subvolumes/b5132c68ca5ecc28cac84934c1c8b29221808eeee62a16d9a02b9051fac9afdc
ID 2319 gen 249507 top level 259 path _snapshots/root-20220509-0
ID 2320 gen 234208 top level 259 path _snapshots/home-20220509-0
ID 2321 gen 249507 top level 259 path _snapshots/root-20220510-0
ID 2322 gen 235498 top level 259 path _snapshots/home-20220510-0
ID 2323 gen 249507 top level 259 path _snapshots/root-20220510-1
ID 2324 gen 235785 top level 259 path _snapshots/home-20220510-1
ID 2647 gen 249507 top level 259 path _snapshots/root-20220515-0
ID 2648 gen 240582 top level 259 path _snapshots/home-20220515-0
ID 2649 gen 249507 top level 259 path _snapshots/root-20220516-0
ID 2650 gen 242162 top level 259 path _snapshots/home-20220516-0
ID 2651 gen 249545 top level 259 path _snapshots/root-20220522-0
ID 2652 gen 248927 top level 259 path _snapshots/home-20220522-0

This is such a mess ... not sure if buttermanager can really do much about that.

Any conflicts with other GUIs?

Btrfs Assistant came preinstalled in my distro. Is there any danger in running buttermanager alongside other btrfs GUIS?

"font scaling factor" makes texts overflow

I've set my font scaling factor to 1.33 in gnome
gsettings set org.gnome.desktop.interface text-scaling-factor 1.33
(you can also do it with "gnome-tweaks").

Unfortunately this makes buttermanagers texts overflow.

buttermanager-1
buttermanager-2
buttermanager-3
buttermanager-4
buttermanager-5
buttermanager-6

[Feature Proposal] Show snapshot-exclusive files size

Hello,

I would like to make a proposal : buttermanager could feature a "snapshot exclusive files size" (or rather a "how much storage space as been freed since that snapshot") next to each snapshot.
That would give us an (approximate ?) extra amount of storage that is used by that snapshots, or more precisely by the files (from that snapshot) that are unique (=only found in that snapshot, and no longer present in the system).

I have no idea how doable and difficult it is, I just wanted to know if that something that could be implemented :)
For the record, that's a feature available in Timeshift that I found very handy to catch which snapshot is taking a lot of space.

Thank you

Don't depend on grub

I wanted to try out buttermanager on my arch machine. But the installation of buttermanager would have required to install grub on my system. Since the system gets started via systemd-boot, grub is not available. And I have no intention to install grub, because that could potentially hurt or break my current setup.

Hence, I'm currently not able to install buttermanager on my system.

'unknown': I need something more specific.

I sometimes get an error when updating with snapshots. Not every time, but about 50/50

I think it started happening after the last python version update on Arch. I have rebuild buttermanager from AUR after that update.

Checking for system updates.
--------

--------
Starting system upgrading process. Please wait...

--------
Creating snapshots and updating GRUB entries if it is necessary...
--------
Create a snapshot of '/mnt/defvol/_active/root/' in '/mnt/defvol/_snapshots/root-20211221-0'
Create a readonly snapshot of '/mnt/defvol/_active/home/' in '/mnt/defvol/_snapshots/home-20211221-0'
Upgrading the system. Please wait...
:: Synchronizing package databases...
 system downloading...
 world downloading...
 galaxy downloading...
 lib32 downloading...
 universe downloading...
 extra downloading...
 community downloading...
 multilib downloading...
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...

Packages (11) cmake-3.22.1-3  jsoncpp-1.9.5-1  lib32-libxcrypt-4.4.27-1  libthai-0.1.29-1  libxcrypt-4.4.27-1  nodejs-17.3.0-1  openxr-1.0.20-2  python-cryptography-36.0.1-1  tcl-8.6.12-3  webkit2gtk-2.34.3-1  wine-staging-7.0rc1-1

Total Download Size:   112.43 MiB
Total Installed Size:  695.22 MiB
Net Upgrade Size:       -2.52 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 wine-staging-7.0rc1-1-x86_64 downloading...
 webkit2gtk-2.34.3-1-x86_64 downloading...
 nodejs-17.3.0-1-x86_64 downloading...
 cmake-3.22.1-3-x86_64 downloading...
 tcl-8.6.12-3-x86_64 downloading...
 python-cryptography-36.0.1-1-x86_64 downloading...
 openxr-1.0.20-2-x86_64 downloading...
 libthai-0.1.29-1-x86_64 downloading...
 jsoncpp-1.9.5-1-x86_64 downloading...
 libxcrypt-4.4.27-1-x86_64 downloading...
 lib32-libxcrypt-4.4.27-1-x86_64 downloading...
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
checking available disk space...
:: Processing package changes...
upgrading jsoncpp...
upgrading libxcrypt...
'unknown': I need something more specific.

After this the program hangs. Killing it and trying to update manually says that there is already an update process running.

Restarting results in a broken system sometimes, especially when kernel updates take place.

Anything I can provide or do to debug this issue?

Taking snapshot does not work when manually deleted a previous of the same day

Steps to reproduce:

  1. Use "Take snapshot" twice so that there are two snapshots of today e.g.:
      _snapshots/root-20210924-0
      _snapshots/root-20210924-1
  1. Go to snapshots tab and use the bin to delete the first of the two snapshots e.g.:
    _snapshots/root-20210924-0

  2. Go to main tab and use "Take snapshot" - no new snapshot will be created.

(You have to delete the snapshot with the -1 ending as well for it to work again, or wait for the next day.)

Include a option for yay

Include a option for yay: yay -Syua --noconfirm in order to take into account packages from AUR

New messages

Include some new messages:

  • When there is no space enough in the file system
  • When a balance operation should be done

Cant open on Fedora 39

I just cant open it. I have every dependency that is needed for native and not native install. When i install it and open it with the app menu it doesnt show any window and just terminates itself.

Is there some way to make it work? Why is it not working in the firstplace? What info can I provide?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.