My version of Manjaro Settings Manager; A work in progress

I’m not sure if this is the appropriate place to post this but it appears to be the only place I can post it.

I am developing a hopefully new version of MSM, in Python and QT.

The App is based on ‘Plugins’, each of which can alos be run stand alone via a container. the main App is called msm.py, the current iteration of the Window and Menu system is merely for demonstration, and for my testing, the Final main Window Container can easily change.

Additional plugins can be contributed by others, provided they adhere to the design, and include a pointer in a config file in ~/.config/manjaro

the Stand alone container is called msm-saw.py and individual plugins can be called.

I have more or less completed the Kernel Manager, which will display EOL Kernels when they are either still on the available Kernels list or, should it happen, after they have been removed from that list, and you the user happen to have it installed.

The User Manager, for Administrators, there is code for non administrators to handle changing their own passwords, but this is not fully tested, and needs some development.

and last a new category, a System Information widget that display the inxi -zv8 results, and optionally copy to the clipboard, for later pasting, with the option to display the data in English rather than system language.

I have some translations in place… I am not certain about how good they are , as they are AI generated, and could be wildly wrong. So at some point in the near future will need help with that.

More or less completed means; pending helpful suggestions, and QA from the Manjaro team members, if they are interested.

Here’s the link…

Here’s some screenshots…

16 Likes

How do I test it? :thinking:

❯ python msm-saw.py
None None
We need to make help
python3 msm-saw.py UserManager

msm-saw + the name of the module you want. I’ll get some help text done as soon as I can.

Note only KernelManager, UserManager and SystemInformation currently working. I’v made a start on TimeAndDateSettings, but nothing up on Git yet.

2 Likes

Aha! :bulb:

Thank you for you contribution! I’m excited. :grin:

Let us know when you’re ready for more testing. I’m sure there are others besides me around here that would be happy to test and provide feedback.

I have two modules Time and DateSettings and LocaleSettings.



Requirements:

    python-pygments
    python-pycountry
    python-babel
    python-pytz
    python-tzlocal
    python-dateutil
    python-six

    
These should all be in the main Manjaro Repositories, so no special install methods needed.

Currently to run the application msm.py you need to have a clone of the git repository, and be in the src directory, or use the full path to the msm.py file python (or uv run) ~/<cloned project path>/src/msm.py.

Each of the Modules can be run stand alone either from the ssrc directory python (or uv run) plugins/<ModuleName>/module_name.py or the full path python (or uv run) ~/<cloned project path>/src/plugins/<ModuleName/module_name.py

or create a virtual environment.
   
Currently the following modules are working.

    SystemInformation (Works on KDE and GNOME, so should work on any other desktop... requires inxi)
    UserManager (But only for the Admin user... There is code for a non Admin user, but this has not been fully tested. Tested on KDE and GNOME)
    KernelManager (only tested on KDE and GNOME)
    TimeAndDateSettings (only tested on KDE and GNOME)
    LocaleSettings (but only fully functional for KDE Plasma)
    


1 Like

You’re missing inxi, pyside6 and python-gobject.

FYI, Arch is slowly working on dropping python-six.

Also, the symlinks to src/Translator.py and src/translations/ in the plugin folders are broken as they link to your home directory. I fixed them in my WIP PKGBUILD that I’m using.

Screenshots are on GNOME using QAdwaitaDecorations and Papirus Dark icons.

System Information

Locale Settings

There is no en_US translation, so it doesn’t work for me:

output
Currently using the following file for translating translations/en_US/LocaleSettings_en_US.json
[Errno 2] No such file or directory: 'translations/en_US/LocaleSettings_en_US.json'
The Locale File we are Going to use for this Module en_US
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
Currently using the following file for translating translations/en_US/LocaleSettings_en_US.json
[Errno 2] No such file or directory: 'translations/en_US/LocaleSettings_en_US.json'
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
Currently using the following file for translating translations/en_US/LocaleSettings_en_US.json
[Errno 2] No such file or directory: 'translations/en_US/LocaleSettings_en_US.json'
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
Currently using the following file for translating translations/en_US/LocaleSettings_en_US.json
[Errno 2] No such file or directory: 'translations/en_US/LocaleSettings_en_US.json'
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
Currently using the following file for translating translations/en_US/LocaleSettings_en_US.json
[Errno 2] No such file or directory: 'translations/en_US/LocaleSettings_en_US.json'
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
Currently using the following file for translating translations/en_US/LocaleSettings_en_US.json
[Errno 2] No such file or directory: 'translations/en_US/LocaleSettings_en_US.json'
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
Currently using the following file for translating translations/en_US/LocaleSettings_en_US.json
[Errno 2] No such file or directory: 'translations/en_US/LocaleSettings_en_US.json'
Dummy Phone Number: +1 (123) 4567890
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
Currently using the following file for translating translations/en_US/LocaleSettings_en_US.json
[Errno 2] No such file or directory: 'translations/en_US/LocaleSettings_en_US.json'
QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout
Currently using the following file for translating translations/en_US/LocaleSettings_en_US.json
[Errno 2] No such file or directory: 'translations/en_US/LocaleSettings_en_US.json'
Traceback (most recent call last):
  File "/usr/bin/msm-ng", line 103, in on_choose_menu_action
    self.load_selected_widget(index)
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
  File "/usr/bin/msm-ng", line 122, in load_selected_widget
    self.load_plugin(index)
    ~~~~~~~~~~~~~~~~^^^^^^^
  File "/usr/bin/msm-ng", line 156, in load_plugin
    self.view.current_widget = widget_class_name(self.translator, self.view.central_widget)  # create object
                               ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/manjaro-settings-manager-ng/src/plugins/LocaleSettings/LocaleSettings.py", line 171, in __init__
    row.detail_label.setText(self.get_data(heading,
                             ~~~~~~~~~~~~~^^^^^^^^^
                                           self.locale_settings_data,
                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
                                           self.current_locale,
                                           ^^^^^^^^^^^^^^^^^^^^
                                           translator)
                                           ^^^^^^^^^^^
  File "/opt/manjaro-settings-manager-ng/src/plugins/LocaleSettings/LocaleSettings.py", line 268, in get_data
    return change_translator.tr(locale_settings_data.get_date())
                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/opt/manjaro-settings-manager-ng/src/plugins/LocaleSettings/LocaleSettingsData.py", line 79, in get_date
    long_date, short_date = self.get_formatted_datetime(self.location, self.timezone)
                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/manjaro-settings-manager-ng/src/plugins/LocaleSettings/LocaleSettingsData.py", line 167, in get_formatted_datetime
    locale.setlocale(locale.LC_ALL, locale_name)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/locale.py", line 615, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

Time And Date Settings

Kernel Manager

Looks good so far.

User Manager

output
Currently using the following file for translating translations/en_US/UserManager_en_US.json
[Errno 2] No such file or directory: 'translations/en_US/UserManager_en_US.json'
Finding Icon
Finding Icon
Still finding icon
Traceback (most recent call last):
  File "/opt/manjaro-settings-manager-ng/src/plugins/UserManager/UsersListWidget.py", line 215, in begin_load_data
    main_icon = self.icon_builder.create_icon(
        data_row["user_full_name"], data_row["user_icon"]
    )
  File "/opt/manjaro-settings-manager-ng/src/plugins/UserManager/UserManagerUtils.py", line 253, in create_icon
    initials = self.get_initials(full_name)
  File "/opt/manjaro-settings-manager-ng/src/plugins/UserManager/UserManagerUtils.py", line 168, in get_initials
    initials = words[0][0].upper() + words[-1][0].upper()
               ~~~~~^^^
IndexError: list index out of range
We should be loading, or reloading available user data
Finding Icon
Finding Icon
Still finding icon
QPaintDevice: Cannot destroy paint device that is being painted
zsh: segmentation fault (core dumped)  msm-ng
2 Likes

I thought I had uploaded the fix for that. Obviously not.

I’ve uploaded some changes, including a PKGBUILD and pyproject.toml.

You should be able to clone the repo and build a package with makepkg --noextract -s, if you run that from the parent directory of the src directory. The application is installed to /usr/local/*. The .desktop files are installed to /usr/share/applications, and all have names that start with MSM to ensure they don’t conflict with anything that might already be there. It also makes them easy to find when testing.

ignore the Build Directory, the file there is so I can test on various VMs, that for reasons I have not been able to find, I can’t share directories with. I suspect it’s my old hardware.

Please let me know what needs improving.

1 Like