├── debian
├── compat
├── install
├── source
│ └── format
├── lintian-overrides
├── mintupdate.manpages
├── rules
├── control
├── postinst
└── copyright
├── usr
├── lib
│ └── linuxmint
│ │ └── mintUpdate
│ │ ├── dpkg_lock_check.sh
│ │ ├── rel_upgrades
│ │ ├── info.png
│ │ ├── risks.png
│ │ ├── failure.png
│ │ ├── success.png
│ │ ├── features.png
│ │ └── Credits
│ │ ├── checkWarnings.py
│ │ ├── logger.py
│ │ ├── automatic_upgrades.py
│ │ ├── aliases
│ │ ├── mintupdate-cli.py
│ │ ├── proxygsettings.py
│ │ ├── rel_upgrade_root.py
│ │ ├── checkKernels.py
│ │ ├── flatpakUpdater.py
│ │ └── flatpak-update-worker.py
├── bin
│ ├── mintupdate-cli
│ ├── mintupdate-tool
│ ├── mint-release-upgrade
│ ├── mint-release-upgrade-root
│ ├── mint-refresh-cache
│ ├── mintupdate
│ ├── mintupdate-automation
│ └── mintupdate-launcher
└── share
│ ├── icons
│ └── hicolor
│ │ ├── 16x16
│ │ ├── apps
│ │ │ ├── mintupdate.png
│ │ │ ├── software-properties.png
│ │ │ └── mintupdate-release-upgrade.png
│ │ └── status
│ │ │ ├── mintupdate-error.png
│ │ │ ├── mintupdate-checking.png
│ │ │ ├── mintupdate-installing.png
│ │ │ ├── mintupdate-type-kernel.png
│ │ │ ├── mintupdate-up-to-date.png
│ │ │ ├── mintupdate-type-backport.png
│ │ │ ├── mintupdate-type-package.png
│ │ │ ├── mintupdate-type-security.png
│ │ │ ├── mintupdate-type-unstable.png
│ │ │ └── mintupdate-updates-available.png
│ │ ├── 22x22
│ │ ├── apps
│ │ │ ├── mintupdate.png
│ │ │ ├── software-properties.png
│ │ │ └── mintupdate-release-upgrade.png
│ │ └── status
│ │ │ ├── mintupdate-error.png
│ │ │ ├── mintupdate-checking.png
│ │ │ ├── mintupdate-installing.png
│ │ │ ├── mintupdate-type-kernel.png
│ │ │ ├── mintupdate-up-to-date.png
│ │ │ ├── mintupdate-type-backport.png
│ │ │ ├── mintupdate-type-package.png
│ │ │ ├── mintupdate-type-security.png
│ │ │ ├── mintupdate-type-unstable.png
│ │ │ └── mintupdate-updates-available.png
│ │ ├── 24x24
│ │ ├── apps
│ │ │ ├── mintupdate.png
│ │ │ ├── software-properties.png
│ │ │ └── mintupdate-release-upgrade.png
│ │ └── status
│ │ │ ├── mintupdate-error.png
│ │ │ ├── mintupdate-checking.png
│ │ │ ├── mintupdate-installing.png
│ │ │ ├── mintupdate-type-kernel.png
│ │ │ ├── mintupdate-up-to-date.png
│ │ │ ├── mintupdate-type-backport.png
│ │ │ ├── mintupdate-type-package.png
│ │ │ ├── mintupdate-type-security.png
│ │ │ ├── mintupdate-type-unstable.png
│ │ │ └── mintupdate-updates-available.png
│ │ ├── 32x32
│ │ ├── apps
│ │ │ ├── mintupdate.png
│ │ │ ├── software-properties.png
│ │ │ └── mintupdate-release-upgrade.png
│ │ └── status
│ │ │ ├── mintupdate-error.png
│ │ │ ├── mintupdate-checking.png
│ │ │ ├── mintupdate-installing.png
│ │ │ ├── mintupdate-type-kernel.png
│ │ │ ├── mintupdate-up-to-date.png
│ │ │ ├── mintupdate-type-backport.png
│ │ │ ├── mintupdate-type-package.png
│ │ │ ├── mintupdate-type-security.png
│ │ │ ├── mintupdate-type-unstable.png
│ │ │ └── mintupdate-updates-available.png
│ │ ├── 48x48
│ │ ├── apps
│ │ │ ├── mintupdate.png
│ │ │ ├── software-properties.png
│ │ │ └── mintupdate-release-upgrade.png
│ │ └── status
│ │ │ ├── mintupdate-error.png
│ │ │ ├── mintupdate-checking.png
│ │ │ ├── mintupdate-installing.png
│ │ │ ├── mintupdate-type-kernel.png
│ │ │ ├── mintupdate-up-to-date.png
│ │ │ ├── mintupdate-type-backport.png
│ │ │ ├── mintupdate-type-package.png
│ │ │ ├── mintupdate-type-security.png
│ │ │ ├── mintupdate-type-unstable.png
│ │ │ └── mintupdate-updates-available.png
│ │ └── scalable
│ │ └── status
│ │ ├── mintupdate-type-kernel-symbolic.svg
│ │ ├── mintupdate-action-install-symbolic.svg
│ │ ├── mintupdate-up-to-date-symbolic.svg
│ │ ├── mintupdate-warning-symbolic.svg
│ │ ├── mintupdate-type-flatpak-symbolic.svg
│ │ ├── mintupdate-type-unstable-symbolic.svg
│ │ ├── mintupdate-error-symbolic.svg
│ │ ├── mintupdate-type-security-symbolic.svg
│ │ ├── mintupdate-checking-symbolic.svg
│ │ ├── mintupdate-installing-symbolic.svg
│ │ ├── mintupdate-type-3rd-party-symbolic.svg
│ │ ├── mintupdate-updates-available-symbolic.svg
│ │ └── mintupdate-type-package-symbolic.svg
│ ├── linuxmint
│ └── mintupdate
│ │ ├── automation
│ │ ├── blacklist.default
│ │ ├── index.json
│ │ ├── autoremove.sh
│ │ └── 99-mintupdate-temporary.pkla
│ │ ├── shortcuts.ui
│ │ ├── history.ui
│ │ └── information.ui
│ ├── polkit-1
│ └── actions
│ │ ├── com.linuxmint.mint-release-upgrade.policy
│ │ └── com.linuxmint.updates.policy
│ ├── glib-2.0
│ └── schemas
│ │ └── com.linuxmint.updates.gschema.xml
│ └── applications
│ ├── mintupdate.desktop
│ └── mintupdate-kde.desktop
├── test-doc
├── etc
├── logrotate.d
│ └── mintupdate
├── sudoers.d
│ └── mintupdate
└── xdg
│ └── autostart
│ └── mintupdate.desktop
├── test
├── lib
└── systemd
│ └── system
│ ├── mintupdate-automation-autoremove.timer
│ ├── mintupdate-automation-upgrade.timer
│ ├── mintupdate-automation-autoremove.service
│ ├── mintupdate-automation-upgrade.service
│ └── mintupdate-automation-cleanup.service
├── test-case
├── Makefile
├── .github
├── workflows
│ └── build.yml
└── ISSUE_TEMPLATE
│ ├── feature_request.md
│ └── bug_report.md
├── tests
└── test_kernel_window.py
├── doc
└── man
│ ├── mintupdate-launcher.8
│ ├── mint-release-upgrade.8
│ ├── mintupdate.8
│ └── mintupdate-cli.8
├── makepot
└── generate_desktop_files
/debian/compat:
--------------------------------------------------------------------------------
1 | 9
2 |
--------------------------------------------------------------------------------
/debian/install:
--------------------------------------------------------------------------------
1 | etc
2 | lib
3 | usr
4 |
--------------------------------------------------------------------------------
/debian/source/format:
--------------------------------------------------------------------------------
1 | 3.0 (native)
2 |
--------------------------------------------------------------------------------
/debian/lintian-overrides:
--------------------------------------------------------------------------------
1 | image-file-in-usr-lib
2 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/dpkg_lock_check.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | /bin/fuser /var/lib/dpkg/lock
--------------------------------------------------------------------------------
/usr/bin/mintupdate-cli:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | /usr/lib/linuxmint/mintUpdate/mintupdate-cli.py $@
4 |
5 |
--------------------------------------------------------------------------------
/usr/bin/mintupdate-tool:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo "mintupdate-tool is depecrated, please use mintupdate-cli instead."
4 |
5 |
--------------------------------------------------------------------------------
/usr/bin/mint-release-upgrade:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import os
4 | os.system("/usr/lib/linuxmint/mintUpdate/rel_upgrade.py")
5 |
--------------------------------------------------------------------------------
/test-doc:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | for f in $(ls doc/man); do
4 | gzip -c doc/man/$f | sudo tee /usr/share/man/man8/$f.gz 1>/dev/null
5 | done
6 |
--------------------------------------------------------------------------------
/debian/mintupdate.manpages:
--------------------------------------------------------------------------------
1 | doc/man/mint-release-upgrade.8
2 | doc/man/mintupdate.8
3 | doc/man/mintupdate-cli.8
4 | doc/man/mintupdate-launcher.8
5 |
--------------------------------------------------------------------------------
/etc/logrotate.d/mintupdate:
--------------------------------------------------------------------------------
1 | /var/log/mintupdate.log {
2 | rotate 12
3 | monthly
4 | compress
5 | missingok
6 | notifempty
7 | nocreate
8 | }
9 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/rel_upgrades/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/lib/linuxmint/mintUpdate/rel_upgrades/info.png
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/rel_upgrades/risks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/lib/linuxmint/mintUpdate/rel_upgrades/risks.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/apps/mintupdate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/apps/mintupdate.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/apps/mintupdate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/apps/mintupdate.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/apps/mintupdate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/apps/mintupdate.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/apps/mintupdate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/apps/mintupdate.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/apps/mintupdate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/apps/mintupdate.png
--------------------------------------------------------------------------------
/usr/share/linuxmint/mintupdate/automation/blacklist.default:
--------------------------------------------------------------------------------
1 | # Source packages in this list are ignored by automatic updates.
2 | # Add one name per line.
3 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/rel_upgrades/failure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/lib/linuxmint/mintUpdate/rel_upgrades/failure.png
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/rel_upgrades/success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/lib/linuxmint/mintUpdate/rel_upgrades/success.png
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/rel_upgrades/features.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/lib/linuxmint/mintUpdate/rel_upgrades/features.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/apps/software-properties.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/apps/software-properties.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/status/mintupdate-error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/status/mintupdate-error.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/apps/software-properties.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/apps/software-properties.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/status/mintupdate-error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/status/mintupdate-error.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/apps/software-properties.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/apps/software-properties.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/status/mintupdate-error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/status/mintupdate-error.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/apps/software-properties.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/apps/software-properties.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/status/mintupdate-error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/status/mintupdate-error.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/apps/software-properties.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/apps/software-properties.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/status/mintupdate-error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/status/mintupdate-error.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/status/mintupdate-checking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/status/mintupdate-checking.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/status/mintupdate-checking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/status/mintupdate-checking.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/status/mintupdate-checking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/status/mintupdate-checking.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/status/mintupdate-checking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/status/mintupdate-checking.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/status/mintupdate-checking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/status/mintupdate-checking.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/status/mintupdate-installing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/status/mintupdate-installing.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/status/mintupdate-type-kernel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/status/mintupdate-type-kernel.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/status/mintupdate-up-to-date.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/status/mintupdate-up-to-date.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/status/mintupdate-installing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/status/mintupdate-installing.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/status/mintupdate-type-kernel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/status/mintupdate-type-kernel.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/status/mintupdate-up-to-date.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/status/mintupdate-up-to-date.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/status/mintupdate-installing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/status/mintupdate-installing.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/status/mintupdate-type-kernel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/status/mintupdate-type-kernel.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/status/mintupdate-up-to-date.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/status/mintupdate-up-to-date.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/status/mintupdate-installing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/status/mintupdate-installing.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/status/mintupdate-type-kernel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/status/mintupdate-type-kernel.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/status/mintupdate-up-to-date.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/status/mintupdate-up-to-date.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/status/mintupdate-installing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/status/mintupdate-installing.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/status/mintupdate-type-kernel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/status/mintupdate-type-kernel.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/status/mintupdate-up-to-date.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/status/mintupdate-up-to-date.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/apps/mintupdate-release-upgrade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/apps/mintupdate-release-upgrade.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/status/mintupdate-type-backport.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/status/mintupdate-type-backport.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/status/mintupdate-type-package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/status/mintupdate-type-package.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/status/mintupdate-type-security.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/status/mintupdate-type-security.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/status/mintupdate-type-unstable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/status/mintupdate-type-unstable.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/apps/mintupdate-release-upgrade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/apps/mintupdate-release-upgrade.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/status/mintupdate-type-backport.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/status/mintupdate-type-backport.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/status/mintupdate-type-package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/status/mintupdate-type-package.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/status/mintupdate-type-security.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/status/mintupdate-type-security.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/status/mintupdate-type-unstable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/status/mintupdate-type-unstable.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/apps/mintupdate-release-upgrade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/apps/mintupdate-release-upgrade.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/status/mintupdate-type-backport.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/status/mintupdate-type-backport.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/status/mintupdate-type-package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/status/mintupdate-type-package.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/status/mintupdate-type-security.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/status/mintupdate-type-security.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/status/mintupdate-type-unstable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/status/mintupdate-type-unstable.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/apps/mintupdate-release-upgrade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/apps/mintupdate-release-upgrade.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/status/mintupdate-type-backport.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/status/mintupdate-type-backport.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/status/mintupdate-type-package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/status/mintupdate-type-package.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/status/mintupdate-type-security.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/status/mintupdate-type-security.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/status/mintupdate-type-unstable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/status/mintupdate-type-unstable.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/apps/mintupdate-release-upgrade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/apps/mintupdate-release-upgrade.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/status/mintupdate-type-backport.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/status/mintupdate-type-backport.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/status/mintupdate-type-package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/status/mintupdate-type-package.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/status/mintupdate-type-security.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/status/mintupdate-type-security.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/status/mintupdate-type-unstable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/status/mintupdate-type-unstable.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/16x16/status/mintupdate-updates-available.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/16x16/status/mintupdate-updates-available.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/22x22/status/mintupdate-updates-available.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/22x22/status/mintupdate-updates-available.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/24x24/status/mintupdate-updates-available.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/24x24/status/mintupdate-updates-available.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/32x32/status/mintupdate-updates-available.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/32x32/status/mintupdate-updates-available.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/48x48/status/mintupdate-updates-available.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxmint/mintupdate/HEAD/usr/share/icons/hicolor/48x48/status/mintupdate-updates-available.png
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-type-kernel-symbolic.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/etc/sudoers.d/mintupdate:
--------------------------------------------------------------------------------
1 | # Allow any user to check for new system updates without
2 | # requiring user authentication.
3 |
4 | ALL ALL = NOPASSWD:/usr/bin/mint-refresh-cache
5 | ALL ALL = NOPASSWD:/usr/lib/linuxmint/mintUpdate/dpkg_lock_check.sh
6 |
--------------------------------------------------------------------------------
/test:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | sudo rm -rf /usr/lib/linuxmint/mintUpdate
4 | sudo cp -R etc /
5 | sudo cp -R lib/* /lib/
6 | sudo cp -R usr /
7 | sudo glib-compile-schemas /usr/share/glib-2.0/schemas
8 | sudo gtk-update-icon-cache /usr/share/icons/hicolor
9 | mintupdate
10 |
--------------------------------------------------------------------------------
/lib/systemd/system/mintupdate-automation-autoremove.timer:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Update Manager weekly autoremove
3 |
4 | [Timer]
5 | OnCalendar=weekly
6 | OnStartupSec=180m
7 | RandomizedDelaySec=60m
8 | Persistent=true
9 |
10 | [Install]
11 | WantedBy=timers.target
12 |
--------------------------------------------------------------------------------
/lib/systemd/system/mintupdate-automation-upgrade.timer:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Update Manager automatic upgrades
3 |
4 | [Timer]
5 | OnCalendar=daily
6 | OnStartupSec=60m
7 | RandomizedDelaySec=60m
8 | Persistent=true
9 |
10 | [Install]
11 | WantedBy=timers.target
12 |
--------------------------------------------------------------------------------
/lib/systemd/system/mintupdate-automation-autoremove.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Update Manager weekly autoremove
3 |
4 | [Service]
5 | Type=oneshot
6 | CPUQuota=50%
7 | CPUWeight=20
8 | IOWeight=20
9 | ExecStart=/usr/share/linuxmint/mintupdate/automation/autoremove.sh
10 |
--------------------------------------------------------------------------------
/usr/bin/mint-release-upgrade-root:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import subprocess, sys
4 |
5 | if len(sys.argv) != 2:
6 | print("Missing arguments!")
7 | sys.exit(1)
8 |
9 | codename = sys.argv[1]
10 | subprocess.run(["/usr/lib/linuxmint/mintUpdate/rel_upgrade_root.py", codename])
11 |
--------------------------------------------------------------------------------
/lib/systemd/system/mintupdate-automation-upgrade.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Update Manager automatic upgrades
3 | After=network-online.target
4 |
5 | [Service]
6 | Type=oneshot
7 | CPUQuota=50%
8 | CPUWeight=20
9 | IOWeight=20
10 | ExecStart=/usr/lib/linuxmint/mintUpdate/automatic_upgrades.py
11 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/rel_upgrades/Credits:
--------------------------------------------------------------------------------
1 | ---
2 | Metrize Icons
3 | by Alessio Atzeni
4 |
5 | http://alessioatzeni.com/metrize-icons/
6 | https://twitter.com/Bluxart
7 | http://dribbble.com/Bluxart
8 |
9 | No License granted. Distributed under the terms specified by the author.
10 |
11 | ---
12 |
13 | http://icomoon.io
14 | Licensed under GPL
15 |
--------------------------------------------------------------------------------
/debian/rules:
--------------------------------------------------------------------------------
1 | #!/usr/bin/make -f
2 |
3 | DEB_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ')
4 |
5 | %:
6 | dh ${@}
7 |
8 | # Inject version number in the code
9 | override_dh_installdeb:
10 | dh_installdeb
11 | for pkg in $$(dh_listpackages -i); do \
12 | find debian/$$pkg -type f -exec sed -i -e s/__DEB_VERSION__/$(DEB_VERSION)/g {} +; \
13 | done
14 |
--------------------------------------------------------------------------------
/test-case:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | display_usage() {
4 | echo "Usage: test-case testname"
5 | echo -e "test names:"
6 | echo -e " - updates"
7 | echo -e " - self-update"
8 | echo -e " - up-to-date"
9 | echo -e " - error"
10 | echo -e " - layer-error"
11 | echo -e " - tracker-max-age"
12 | }
13 |
14 | if [ $# -le 0 ]
15 | then
16 | display_usage
17 | exit 1
18 | fi
19 |
20 | MINTUPDATE_TEST=$1 ./test
21 |
--------------------------------------------------------------------------------
/usr/bin/mint-refresh-cache:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 | import os
3 | import sys
4 |
5 | if __name__ == "__main__":
6 | if os.getuid() == 0:
7 | try:
8 | import apt
9 | cache = apt.Cache()
10 | cache.update()
11 | except Exception as e:
12 | print("Error: mint-refresh-cache could not update the cache.")
13 | print(e)
14 | else:
15 | print("Error: mint-refresh-cache requires admin privileges")
16 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | all: buildmo
2 |
3 | buildmo:
4 | @echo "Building the mo files"
5 | # WARNING: the second sed below will only works correctly with the languages that don't contain "-"
6 | for file in `ls po/*.po`; do \
7 | lang=`echo $$file | sed 's@po/@@' | sed 's/.po//' | sed 's/mintupdate-//'`; \
8 | install -d usr/share/locale/$$lang/LC_MESSAGES/; \
9 | msgfmt -o usr/share/locale/$$lang/LC_MESSAGES/mintupdate.mo $$file; \
10 | done \
11 |
12 | clean:
13 | rm -rf usr/share/locale
14 |
--------------------------------------------------------------------------------
/usr/bin/mintupdate:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 | import os
3 | import argparse
4 |
5 | if __name__ == "__main__":
6 | # Parse arguments
7 | parser = argparse.ArgumentParser(prog="mintupdate", description="The Linux Mint Update Manager")
8 | parser.add_argument("-v", "--version", action="version", version="__DEB_VERSION__", help="Display the current version")
9 | args = parser.parse_args()
10 | command = "/usr/lib/linuxmint/mintUpdate/mintUpdate.py show &"
11 | os.system(command)
12 |
--------------------------------------------------------------------------------
/usr/share/linuxmint/mintupdate/automation/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "upgrade": ["/etc/systemd/system/timers.target.wants/mintupdate-automation-upgrade.timer", "systemd", "/var/lib/linuxmint/mintupdate-automatic-upgrades-enabled"],
3 | "blacklist": ["/etc/mintupdate.blacklist", "Blacklist", null],
4 | "autoremove": ["/etc/systemd/system/timers.target.wants/mintupdate-automation-autoremove.timer", "systemd", "/var/lib/linuxmint/mintupdate-automatic-removals-enabled"],
5 | "clean": ["/etc/apt/apt.conf.d/99_mintupdate_clean", "apt-daily config", null]
6 | }
7 |
--------------------------------------------------------------------------------
/lib/systemd/system/mintupdate-automation-cleanup.service:
--------------------------------------------------------------------------------
1 | # cleanup in case mintupdate automation was interrupted
2 |
3 | [Unit]
4 | Description=Update Manager Automation Cleanup
5 | ConditionPathExists=|/etc/polkit-1/localauthority/90-mandatory.d/99-mintupdate-temporary.pkla
6 | ConditionPathIsSymbolicLink=|/etc/polkit-1/localauthority/90-mandatory.d/99-mintupdate-temporary.pkla
7 |
8 | [Service]
9 | Type=oneshot
10 | CPUQuota=50%
11 | CPUWeight=20
12 | IOWeight=20
13 | ExecStart=/bin/rm -f /etc/polkit-1/localauthority/90-mandatory.d/99-mintupdate-temporary.pkla
14 |
--------------------------------------------------------------------------------
/.github/workflows/build.yml:
--------------------------------------------------------------------------------
1 | name: Build
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | pull_request:
8 | branches:
9 | - master
10 | workflow_dispatch:
11 |
12 | jobs:
13 | build:
14 | uses: linuxmint/github-actions/.github/workflows/do-builds.yml@master
15 | with:
16 | commit_id: master
17 | ############################## Comma separated list - like 'linuxmint/xapp, linuxmint/cinnamon-desktop'
18 | dependencies: >
19 | linuxmint/mintcommon,
20 | linuxmint/xapp
21 | ##############################
22 |
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-action-install-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/usr/share/linuxmint/mintupdate/automation/autoremove.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | if [ ! -e "/var/lib/linuxmint/mintupdate-automatic-removals-enabled" ]
4 | then
5 | exit
6 | fi
7 |
8 | ln -s /usr/share/linuxmint/mintupdate/automation/99-mintupdate-temporary.pkla /etc/polkit-1/localauthority/90-mandatory.d/99-mintupdate-temporary.pkla
9 | echo "\n-- Automatic Removal $(date):\n" >> /var/log/mintupdate.log
10 | systemd-inhibit --why="Performing autoremoval" --who="Update Manager" --what=shutdown --mode=block /usr/bin/apt-get autoremove --purge -y >> /var/log/mintupdate.log 2>&1
11 | rm -f /etc/polkit-1/localauthority/90-mandatory.d/99-mintupdate-temporary.pkla
12 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: FEATURE REQUEST
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is.
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots/illustrations about the feature request here.
--------------------------------------------------------------------------------
/tests/test_kernel_window.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import sys, os
4 | myPath = os.path.dirname(os.path.abspath(__file__))
5 | sys.path.insert(0, myPath + '/../usr/lib/linuxmint/mintUpdate/')
6 |
7 | from datetime import datetime
8 | from Classes import *
9 | from mintUpdate import *
10 | from checkAPT import *
11 |
12 | # Test KernelVersion object
13 | def test_kernel_version_series_comparison():
14 | version1 = KernelVersion ("4.8.0-2-generic")
15 | version2 = KernelVersion ("4.15.0-43-generic")
16 | version3 = KernelVersion ("4.15.0-44-generic")
17 | assert version1.version_id < version2.version_id
18 | assert version2.version_id < version3.version_id
19 | assert version1.series < version2.series
20 | assert version2.series == version3.series
21 |
22 |
--------------------------------------------------------------------------------
/doc/man/mintupdate-launcher.8:
--------------------------------------------------------------------------------
1 | .\" Title : mintupdate-launcher
2 | .\" Author : gm10
3 | .\" February, 8 2019
4 | .\"
5 | .\" First parameter, NAME, should be all caps
6 | .\" other parameters are allowed: see man(7), man(1)
7 | .TH MINTUPDATE-LAUNCHER 8 "8 February 2019"
8 | .\" Please adjust this date whenever revising the manpage.
9 | .\"
10 | .\" for manpage-specific macros, see man(7)
11 | .SH NAME
12 | mintupdate-launcher \- Linux Mint Update Manager launcher
13 |
14 | .SH SYNOPSIS
15 | \fBmintupdate-launcher\fR
16 |
17 | .SH DESCRIPTION
18 | \fBmintupdate-launcher\fR launches \fBmintupdate-launcher(8)\fR in tray mode. It is typically being run as a startup application in a user session.
19 |
20 | .SH "AUTHOR"
21 | \fBThe Linux Mint developers\fR
22 |
23 | .SH SEE ALSO
24 | \fBmintupdate(8)\fR
25 |
--------------------------------------------------------------------------------
/debian/control:
--------------------------------------------------------------------------------
1 | Source: mintupdate
2 | Section: admin
3 | Priority: optional
4 | Maintainer: Clement Lefebvre
5 | Build-Depends: debhelper (>= 9),
6 | python3,
7 | dh-python
8 | Standards-Version: 3.9.5
9 |
10 | Package: mintupdate
11 | Architecture: all
12 | Depends:
13 | ${python:Depends},
14 | ${misc:Depends},
15 | lsb-release,
16 | apt,
17 | aptkit,
18 | distro-info-data,
19 | psmisc,
20 | python3-apt,
21 | python3-multiprocess,
22 | python3-pycurl,
23 | python3-setproctitle,
24 | python3-xapp (>= 1.6),
25 | systemd,
26 | mint-common (>= 2.4.2),
27 | mint-mirrors,
28 | mint-upgrade-info,
29 | gir1.2-notify-0.7,
30 | gir1.2-xapp-1.0
31 | Description: The Linux Mint Update Manager
32 | Helps installing security updates and new versions of packages.
33 |
--------------------------------------------------------------------------------
/usr/share/linuxmint/mintupdate/automation/99-mintupdate-temporary.pkla:
--------------------------------------------------------------------------------
1 | # Blocks shutdown and reboot commands while mintupdate
2 | # automation is running. Gets removed when automation
3 | # finishes.
4 | #
5 | [mintupdate]
6 | Identity=unix-user:*
7 | Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.stop-multiple-users;org.freedesktop.consolekit.system.restart;org.freedesktop.consolekit.system.restart-multiple-users;org.freedesktop.login1.halt;org.freedesktop.login1.halt-ignore-inhibit;org.freedesktop.login1.halt-multiple-sessions;org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-ignore-inhibit;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-ignore-inhibit;org.freedesktop.login1.power-off-multiple-sessions
8 | ResultInactive=no
9 | ResultActive=no
10 |
--------------------------------------------------------------------------------
/usr/share/polkit-1/actions/com.linuxmint.mint-release-upgrade.policy:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 | Linux Mint
8 | https://linuxmint.com/
9 |
10 |
11 | mintupdate
12 |
13 | no
14 | no
15 | auth_admin_keep
16 |
17 | /usr/bin/mint-release-upgrade-root
18 | true
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/doc/man/mint-release-upgrade.8:
--------------------------------------------------------------------------------
1 | .\" Title : mint-release-upgrade
2 | .\" Author : gm10
3 | .\" February, 8 2019
4 | .\"
5 | .\" First parameter, NAME, should be all caps
6 | .\" other parameters are allowed: see man(7), man(1)
7 | .TH MINT-RELEASE-UPGRADE 8 "8 February 2019"
8 | .\" Please adjust this date whenever revising the manpage.
9 | .\"
10 | .\" for manpage-specific macros, see man(7)
11 | .SH NAME
12 | mint-release-upgrade \- Linux Mint point release installer
13 |
14 | .SH SYNOPSIS
15 | \fBmint-release-upgrade\fR
16 |
17 | .SH DESCRIPTION
18 | \fBmint-release-upgrade\fR is used to install Linux Mint point releases.
19 |
20 | .SH NOTES
21 | \fBmint-release-upgrade\fR is run by \fBmintupdate(8)\fR when the user selects the option to upgrade to the next point release from in mintupdate's Edit menu.
22 |
23 | .SH "AUTHOR"
24 | \fBThe Linux Mint developers\fR
25 |
26 | .SH SEE ALSO
27 | \fBmintupdate(8)\fR
28 |
--------------------------------------------------------------------------------
/makepot:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | intltool-extract --type=gettext/glade usr/share/linuxmint/mintupdate/history.ui
3 | intltool-extract --type=gettext/glade usr/share/linuxmint/mintupdate/information.ui
4 | intltool-extract --type=gettext/glade usr/share/linuxmint/mintupdate/kernels.ui
5 | intltool-extract --type=gettext/glade usr/share/linuxmint/mintupdate/main.ui
6 | intltool-extract --type=gettext/glade usr/share/linuxmint/mintupdate/preferences.ui
7 | intltool-extract --type=gettext/glade usr/share/linuxmint/mintupdate/shortcuts.ui
8 | xgettext --language=Python \
9 | -cTRANSLATORS \
10 | --keyword=_ \
11 | --keyword=N_ \
12 | --output=mintupdate.pot \
13 | usr/lib/linuxmint/mintUpdate/*.py \
14 | generate_desktop_files \
15 | usr/bin/mintupdate-cli \
16 | usr/bin/mint-release-upgrade \
17 | usr/bin/mint-release-upgrade-root \
18 | usr/bin/mintupdate-launcher \
19 | usr/lib/linuxmint/mintUpdate/aliases \
20 | usr/share/linuxmint/mintupdate/*.ui.h
21 |
22 | rm -f usr/share/linuxmint/mintupdate/*.ui.h
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: BUG
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **Screenshots**
14 | If applicable, add screenshots to help explain your problem, you can just drag & drop them here.
15 |
16 | **To Reproduce**
17 | Steps to reproduce the behavior:
18 | 1. Go to '...'
19 | 2. Click on '....'
20 | 3. Scroll down to '....'
21 | 4. See error
22 |
23 | **Expected behavior**
24 | A clear and concise description of what you expected to happen.
25 |
26 | **Distribution:**
27 | - [ ] Linux Mint
28 | - [ ] LMDE
29 | - [ ] Other (please specify)
30 |
31 | **Software version:**
32 | See Help > About in Update Manager.
33 |
34 | **Logs:**
35 | Copy & paste the log output from Update Manager > View > Information here.
36 |
37 | **Crash report:**
38 | If you are reporting a crash, please run `mintupdate` from a terminal window, reproduce the crash and copy & paste any output from the terminal window here.
39 |
40 | **Additional context**
41 | Add any other context about the problem you think might be relevant.
42 |
43 | **Locale:**
44 | If the problem is with text not getting displayed correctly, paste the output of the terminal command `locale`.
--------------------------------------------------------------------------------
/debian/postinst:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # postinst script
3 | # see: dh_installdeb(1)
4 |
5 | set -e
6 |
7 | # summary of how this script can be called:
8 | # * `configure'
9 | # * `abort-upgrade'
10 | # * `abort-remove' `in-favour'
11 | #
12 | # * `abort-deconfigure' `in-favour'
13 | # `removing'
14 | #
15 | # for details, see http://www.debian.org/doc/debian-policy/ or
16 | # the debian-policy package
17 | #
18 |
19 | case "$1" in
20 | configure)
21 | if which glib-compile-schemas >/dev/null 2>&1
22 | then
23 | glib-compile-schemas /usr/share/glib-2.0/schemas
24 | fi
25 | if which systemctl >/dev/null 2>&1
26 | then
27 | systemctl enable mintupdate-automation-cleanup.service || true
28 | systemctl disable mintupdate-automation-upgrade.service || true
29 | systemctl disable mintupdate-automation-autoremove.service || true
30 | fi
31 | ;;
32 | abort-upgrade|abort-remove|abort-deconfigure)
33 | ;;
34 | triggered)
35 | ;;
36 | *)
37 | echo "postinst called with unknown argument \`$1'" >&2
38 | exit 1
39 | ;;
40 | esac
41 |
42 | # dh_installdeb will replace this with shell code automatically
43 | # generated by other debhelper scripts.
44 |
45 | #DEBHELPER#
46 |
47 | exit 0
48 |
49 |
50 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/checkWarnings.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import sys
4 | import apt_pkg
5 |
6 | try:
7 | selection = sys.argv[1:]
8 | #print ' '.join(str(pkg) for pkg in selection)
9 | packages_to_install = []
10 | packages_to_remove = []
11 |
12 | apt_pkg.init()
13 | cache = apt_pkg.Cache(None)
14 |
15 | depcache = apt_pkg.DepCache(cache)
16 | depcache.init()
17 |
18 | with apt_pkg.ActionGroup(depcache):
19 | for package in selection:
20 | pkg = cache[package]
21 | #print "Marking : %s to install" % pkg.Name
22 | depcache.mark_install(pkg)
23 |
24 | depcache.fix_broken()
25 |
26 | #print "Install : %d" % depcache.inst_count
27 | #print "Remove : %d" % depcache.del_count
28 |
29 | # Get changes
30 | for pkg in cache.packages:
31 | if (not depcache.marked_keep(pkg) and
32 | (depcache.marked_install(pkg) or depcache.marked_upgrade(pkg)) and
33 | pkg.name not in selection and
34 | "%s:%s" % (pkg.name, pkg.architecture) not in selection and
35 | pkg.name not in packages_to_install):
36 | packages_to_install.append(pkg.name)
37 | if depcache.marked_delete(pkg) and pkg.name not in packages_to_remove:
38 | packages_to_remove.append(pkg.name)
39 | installations = ' '.join(packages_to_install)
40 | removals = ' '.join(packages_to_remove)
41 | print("%s###%s" % (installations, removals))
42 | except Exception as e:
43 | print(e)
44 | print(sys.exc_info()[0])
45 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/logger.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import os
4 | import datetime
5 | import tempfile
6 | import traceback
7 |
8 | class Logger():
9 |
10 | def __init__(self):
11 | self._create_log()
12 | self.callback = None
13 |
14 | def _create_log(self):
15 | path = os.path.join(tempfile.gettempdir(), "mintUpdate/")
16 | if not os.path.exists(path):
17 | os.umask(0)
18 | os.makedirs(path)
19 | self.log = tempfile.NamedTemporaryFile(mode="w", prefix=path, delete=False)
20 | try:
21 | os.chmod(self.log.name, 0o666)
22 | except:
23 | traceback.print_exc()
24 |
25 | def _log_ready(self):
26 | if self.log.closed:
27 | return False
28 | if not os.path.exists(self.log.name):
29 | self.log.close()
30 | self._create_log()
31 | return True
32 |
33 | def _write(self, separator, line):
34 | timestamp = datetime.datetime.now().strftime('%Y.%m.%d@%H:%M')
35 | line = f"{timestamp} {separator} {line}\n"
36 | if self._log_ready():
37 | self.log.write(line)
38 | self.log.flush()
39 | if self.callback:
40 | self.callback(line)
41 |
42 | def write(self, line):
43 | self._write("++", line)
44 |
45 | def write_error(self, line):
46 | self._write("--", line)
47 |
48 | def read(self):
49 | if not os.path.exists(self.log.name):
50 | self._create_log()
51 | return ""
52 | else:
53 | with open(self.log.name) as f:
54 | return f.read()
55 |
56 | def close(self):
57 | self.log.close()
58 |
59 | def set_callback(self, callback):
60 | self.callback = callback
61 |
62 | def remove_callback(self):
63 | self.callback = None
64 |
--------------------------------------------------------------------------------
/doc/man/mintupdate.8:
--------------------------------------------------------------------------------
1 | .\" Title : mintupdate
2 | .\" Author : gm10
3 | .\" February, 8 2019
4 | .\"
5 | .\" First parameter, NAME, should be all caps
6 | .\" other parameters are allowed: see man(7), man(1)
7 | .TH MINTUPDATE 8 "8 February 2019"
8 | .\" Please adjust this date whenever revising the manpage.
9 | .\"
10 | .\" for manpage-specific macros, see man(7)
11 | .SH NAME
12 | mintupdate \- The Linux Mint Update Manager
13 |
14 | .SH SYNOPSIS
15 | \fBmintupdate\fR [options]
16 |
17 | .SH DESCRIPTION
18 | \fBmintupdate\fR (Update Manager) is Linux Mint's graphical solution to managing software updates available via the apt package management system. It is integrated with the Linux Mint environment and designed to run at session startup.
19 | .PP
20 | In \fBmintupdate\fR's Preferences you find advanced filtering options, can configure the update check schedule and can enable automated maintenance and update functionality.
21 | .PP
22 | \fBmintupdate\fR ensures you are using the recommended kernel for your system, and via the View menu's Linux kernels entry you gain access to an advanced kernel management interface where you install non-default kernels or remove existing ones.
23 | .PP
24 | \fBmintupdate\fR also facilitates installation of Linux Mint point releases as they become available.
25 |
26 | .SH OPTIONS
27 | \fBmintupdate\fR is configured via the GUI and accepts no options except for:
28 | .TP
29 | \fB-v\fR, \fB\-\-version\fR
30 | Display the current version
31 | .PP
32 | See \fBmintupdate-cli(8)\fR for a command line version of mintupdate.
33 |
34 | .SH NOTES
35 | \fBmintupdate\fR's Edit menu entries give acccess to \fBtimeshift-gtk(8)\fR (\fISystem snapshots\fR option), \fBmint-sources(8)\fR (\fISoftware sources\fR option), and \fBmint-release-upgrade(8)\fR (\fIUpgrade to {point release}\fR option).
36 |
37 | \fBmintupdate\fR also provides database updates to \fBmintinstall(8)\fR.
38 |
39 | .SH "AUTHOR"
40 | \fBThe Linux Mint developers\fR
41 |
42 | .SH SEE ALSO
43 | \fBmintupdate-cli(8)\fR, \fBmint-sources(1)\fR, \fBtimeshift-gtk\fR, \fBmintinstall(8)\fR
--------------------------------------------------------------------------------
/doc/man/mintupdate-cli.8:
--------------------------------------------------------------------------------
1 | .\" Title : mintupdate-cli
2 | .\" Author : gm10
3 | .\" February, 8 2019
4 | .\"
5 | .\" First parameter, NAME, should be all caps
6 | .\" other parameters are allowed: see man(7), man(1)
7 | .TH MINTUPDATE-CLI 8 "8 February 2019"
8 | .\" Please adjust this date whenever revising the manpage.
9 | .\"
10 | .\" for manpage-specific macros, see man(7)
11 | .SH NAME
12 | mintupdate-cli \- The Linux Mint Update Manager command line interface.
13 |
14 | .SH SYNOPSIS
15 | \fBmintupdate-cli\fR [options] {list | upgrade}
16 |
17 | .SH DESCRIPTION
18 | \fBmintupdate-cli\fR is the command line interface to mintupdate.
19 | .PP
20 | Unless the \fB-h\fR, or \fB--help\fR option is given, one of the commands below must be present:
21 | .PP
22 | \fBlist\fR
23 | .RS 4
24 | list available upgrades
25 | .RE
26 | .PP
27 | \fBupgrade\fR
28 | .RS 4
29 | apply available upgrades
30 | .RE
31 |
32 | .SH OPTIONS
33 | mintupdate-cli accepts the following options:
34 | .TP
35 | \fB-h\fR, \fB--help\fR
36 | Show a help message and exit
37 | .TP
38 | \fB-k\fR, \fB--only-kernel\fR
39 | Only include kernel updates
40 | .TP
41 | \fB-s\fR, \fB--only-security\fR
42 | Only include security updates
43 | .TP
44 | \fB-i IGNORE\fR, \fB--ignore IGNORE\fR
45 | List of updates to ignore (comma-separated list of source package names).
46 |
47 | Note: You can also blacklist updates by adding them to /etc/mintupdate.blacklist, one source package per line.
48 |
49 | To ignore a specific version, use the format package=version.
50 | .TP
51 | \fB-r\fR, \fB--refresh-cache\fR
52 | Refresh the APT cache
53 | .TP
54 | \fB-d\fR, \fB--dry-run\fR
55 | Simulation mode, don't upgrade anything
56 | .TP
57 | \fB-y\fR, \fB--yes\fR
58 | Automatically answer yes to all questions and always install new configuration files (unless you also use "--keep-configuration" option).
59 | .TP
60 | \fB--install-recommends\fR
61 | Install recommended packages regardless of system defaults.
62 | .TP
63 | \fB--keep-configuration\fR
64 | Always keep local changes in configuration files (use with caution).
65 | .TP
66 | \fB-v\fR, \fB--version\fR
67 | Display the current version
68 |
69 | .SH "AUTHOR"
70 | \fBThe Linux Mint developers\fR
71 |
72 | .SH SEE ALSO
73 | \fBmintupdate(8)\fR
74 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/automatic_upgrades.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import os
4 | import subprocess
5 | import time
6 |
7 | if not os.path.exists("/var/lib/linuxmint/mintupdate-automatic-upgrades-enabled"):
8 | exit(0)
9 |
10 | optionsfile = "/etc/mintupdate-automatic-upgrades.conf"
11 | logfile = "/var/log/mintupdate.log"
12 | power_connectfile="/sys/class/power_supply/AC/online"
13 | log = open(logfile, "a")
14 | log.write("\n-- Automatic Upgrade starting %s:\n" % time.strftime('%a %d %b %Y %H:%M:%S %Z'))
15 | log.flush()
16 |
17 | pkla_source = "/usr/share/linuxmint/mintupdate/automation/99-mintupdate-temporary.pkla"
18 | pkla_target = "/etc/polkit-1/localauthority/90-mandatory.d/99-mintupdate-temporary.pkla"
19 | try:
20 | power_supply_file = open(power_connectfile)
21 | powersupply = power_supply_file.read()[0]=='1'
22 | power_supply_file.close()
23 | except:
24 | powersupply = True
25 | log.write(power_connectfile+" not found. Ignore power supply check.")
26 | if powersupply:
27 | try:
28 | # Put shutdown and reboot blocker into place
29 | os.symlink(pkla_source, pkla_target)
30 | except:
31 | pass
32 |
33 | try:
34 | # Parse options file
35 | arguments = []
36 | if os.path.isfile(optionsfile):
37 | with open(optionsfile) as options:
38 | for line in options:
39 | line = line.strip()
40 | if line and not line.startswith("#"):
41 | arguments.append(line)
42 |
43 | # Run mintupdate-cli through systemd-inhibit
44 | cmd = ["/bin/systemd-inhibit", '--why="Performing automatic updates"',
45 | '--who="Update Manager"', "--what=shutdown", "--mode=block",
46 | "/usr/bin/mintupdate-cli", "upgrade", "--refresh-cache", "--yes"]
47 | cmd.extend(arguments)
48 | subprocess.run(cmd, stdout=log, stderr=log)
49 |
50 | except:
51 | import traceback
52 | log.write("Exception occurred:\n")
53 | log.write(traceback.format_exc())
54 |
55 | try:
56 | # Remove shutdown and reboot blocker
57 | os.unlink(pkla_target)
58 | except:
59 | pass
60 |
61 | log.write("-- Automatic Upgrade completed\n")
62 | else:
63 | log.write("-- Power supply not connected, abort automatic update.\n")
64 | log.close()
65 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/aliases:
--------------------------------------------------------------------------------
1 | # This file contains the names and descriptions for Mint packages.
2 | # The columns are: package names, update name, update short description, update description
3 | # All columns except for the first one are l10nd via LP/makepot
4 |
5 | mdm ##### mdm ##### _("The display manager.") ##### _("MDM is responsible for the login screen and for opening and closing graphical sessions when users log in or log out.")
6 |
7 | cjs ##### cinnamon-cjs ##### _("The Cinnamon javascript interpreter.") ##### _("Most of the visible components in Cinnamon (panel, menus, applets, desklets) are written in Javascript and interpreted by CJS.")
8 | cinnamon-desktop ##### cinnamon-desktop ##### _("The Cinnamon desktop library.") ##### _("This library is used by Cinnamon. It contains the gsettings schemas as well as utility functions.")
9 | cinnamon-menus ##### cinnamon-menus ##### _("The Cinnamon menus library.") ##### _("This library is used by Cinnamon to load the .desktop files.")
10 | cinnamon-screensaver ##### cinnamon-screensaver ##### _("The Cinnamon screensaver.") ##### _("This package is responsible for the Cinnamon screensaver and screen locker.")
11 | cinnamon-session ##### cinnamon-session ##### _("The Cinnamon session manager.") ##### _("The session manager loads the necessary programs and components after you log in and closes them before you log out.")
12 | cinnamon-settings-daemon ##### cinnamon-settings-daemon ##### _("The Cinnamon settings daemon.") ##### _("The settings daemon sets various parameters and handles everything in the background to provide a smooth Cinnamon experience.")
13 | muffin ##### cinnamon-muffin ##### _("The Cinnamon window manager.") ##### _("Muffin is responsible for window management and compositing.")
14 | nemo ##### cinnamon-nemo ##### _("The Cinnamon file manager.") ##### _("Nemo is used to browse directories, to preview files and to launch applications associated with them. It also handles desktop icons.")
15 | cinnamon ##### cinnamon ##### _("The Cinnamon desktop environment.") ##### _("Cinnamon is a modern Linux desktop which provides advanced innovative features and a traditional user experience.")
16 |
--------------------------------------------------------------------------------
/generate_desktop_files:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | DOMAIN = "mintupdate"
4 | PATH = "/usr/share/locale"
5 |
6 | import os, gettext
7 | from mintcommon import additionalfiles
8 | import subprocess
9 |
10 | os.environ['LANGUAGE'] = "en_US.UTF-8"
11 | gettext.install(DOMAIN, PATH)
12 |
13 | prefix = "[Desktop Entry]\n"
14 |
15 | suffix = """Exec=mintupdate
16 | Icon=mintupdate
17 | Terminal=false
18 | Type=Application
19 | Encoding=UTF-8
20 | Categories=Application;System;Settings;XFCE;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;
21 | StartupNotify=false
22 | NotShowIn=KDE;
23 | """
24 |
25 | name = _("Update Manager")
26 | comment = _("Show and install available updates")
27 |
28 | additionalfiles.generate(DOMAIN, PATH, "usr/share/applications/mintupdate.desktop", prefix, "Update Manager", "Show and install available updates", suffix)
29 |
30 | suffix = """Exec=mintupdate
31 | Icon=mintupdate
32 | Terminal=false
33 | Type=Application
34 | Encoding=UTF-8
35 | Categories=System;
36 | StartupNotify=false
37 | OnlyShowIn=KDE;
38 | """
39 |
40 | additionalfiles.generate(DOMAIN, PATH, "usr/share/applications/mintupdate-kde.desktop", prefix, "Update Manager", "Show and install available updates", suffix, genericName="Show and install available updates")
41 |
42 | prefix= """
43 |
46 |
47 |
48 | Linux Mint
49 | https://linuxmint.com/
50 |
51 |
52 | mintupdate
53 | """
54 |
55 | suffix = """
56 |
57 | no
58 | no
59 | auth_admin_keep
60 |
61 | /usr/bin/mintupdate-automation
62 | false
63 |
64 |
65 | """
66 |
67 | additionalfiles.generate_polkit_policy(DOMAIN, PATH, "usr/share/polkit-1/actions/com.linuxmint.updates.policy", prefix, "Update Manager", suffix)
68 |
69 | locales = []
70 | cur_dir = os.getcwd()
71 | os.chdir("/usr/share/locale")
72 | lines = subprocess.getoutput("find */LC_MESSAGES/mintupdate.mo")
73 | for line in lines.split("\n"):
74 | line = line.strip().split("/")[0]
75 | locales.append(line)
76 | os.chdir(cur_dir)
77 |
78 | for locale in locales:
79 | os.system("msgunfmt /usr/share/locale/%s/LC_MESSAGES/mintupdate.mo > /tmp/%s.po" % (locale, locale))
80 |
--------------------------------------------------------------------------------
/debian/copyright:
--------------------------------------------------------------------------------
1 | Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
2 | Upstream-Name: mintupdate
3 | Upstream-Contact: Clement Lefebvre
4 | Source: https://github.com/linuxmint/mintupdate
5 |
6 | Files: *
7 | Copyright: 2007-2015 Clement Lefebvre
8 | License: GPL-3+
9 | This program is free software: you can redistribute it and/or modify
10 | it under the terms of the GNU General Public License as published by
11 | the Free Software Foundation, either version 3 of the License, or (at
12 | your option) any later version.
13 | .
14 | This program is distributed in the hope that it will be useful, but
15 | WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 | General Public License for more details.
18 | .
19 | You should have received a copy of the GNU General Public License
20 | along with this program. If not, see .
21 | .
22 | On Debian systems, the complete text of the GNU General
23 | Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
24 |
25 | Files: usr/lib/linuxmint/mintUpdate/proxygsettings.py
26 | Copyright: 2011-2012 Canonical Ltd.
27 | 2014 Erik Devriendt
28 | License: GPL-3 with special exception
29 | This program is free software: you can redistribute it and/or modify it
30 | under the terms of the GNU General Public License version 3, as published
31 | by the Free Software Foundation.
32 | .
33 | This program is distributed in the hope that it will be useful, but
34 | WITHOUT ANY WARRANTY; without even the implied warranties of
35 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
36 | PURPOSE. See the GNU General Public License for more details.
37 | .
38 | You should have received a copy of the GNU General Public License along
39 | with this program. If not, see .
40 | .
41 | In addition, as a special exception, the copyright holders give
42 | permission to link the code of portions of this program with the
43 | OpenSSL library under certain conditions as described in each
44 | individual source file, and distribute linked combinations
45 | including the two.
46 | You must obey the GNU General Public License in all respects
47 | for all of the code used other than OpenSSL. If you modify
48 | file(s) with this exception, you may extend this exception to your
49 | version of the file(s), but you are not obligated to do so. If you
50 | do not wish to do so, delete this exception statement from your
51 | version. If you delete this exception statement from all source
52 | files in the program, then also delete it here.
53 |
--------------------------------------------------------------------------------
/usr/bin/mintupdate-automation:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 | # pylint: disable=E0602
3 |
4 | import json
5 | import os
6 | import sys
7 | import subprocess
8 | from pathlib import Path
9 |
10 | if not os.getuid() == 0:
11 | print("This command needs to be run as root or with sudo.")
12 | sys.exit(1)
13 |
14 | if len(sys.argv) != 3 or sys.argv[1] not in ("upgrade", "autoremove", "blacklist") or sys.argv[2] not in ("enable", "disable"):
15 | print("Bad arguments")
16 | sys.exit(1)
17 |
18 | # import AUTOMATIONS dict
19 | with open("/usr/share/linuxmint/mintupdate/automation/index.json") as f:
20 | AUTOMATIONS = json.load(f)
21 |
22 | automation_id = sys.argv[1]
23 |
24 | def do_enable(_automation_id):
25 | (filename, name, touchfile) = AUTOMATIONS[_automation_id]
26 | if touchfile is not None or sys.argv[1] == "blacklist":
27 | if name == "systemd":
28 | touch = Path(touchfile)
29 | touch.parent.mkdir(parents=True, exist_ok=True)
30 | touch.touch(exist_ok=True)
31 |
32 | basename = os.path.basename(filename)
33 | subprocess.run(["/bin/systemctl", "start", basename])
34 | subprocess.run(["/bin/systemctl", "enable", basename])
35 | else:
36 | default = "/usr/share/linuxmint/mintupdate/automation/%s.default" % _automation_id
37 | os.system("cp %s %s" % (default, filename))
38 | print("%s %s created." % (name, filename))
39 | if sys.argv[1] == "blacklist":
40 | add_user_blacklist(filename)
41 |
42 | def do_disable(_automation_id):
43 | (filename, name, touchfile) = AUTOMATIONS[_automation_id]
44 | if touchfile is not None:
45 | if name == "systemd":
46 | touch = Path(touchfile)
47 | touch.parent.mkdir(parents=True, exist_ok=True)
48 | touch.unlink(missing_ok=True)
49 |
50 | basename = os.path.basename(filename)
51 | subprocess.run(["/bin/systemctl", "stop", basename])
52 | subprocess.run(["/bin/systemctl", "disable", basename])
53 | else:
54 | os.system("rm -f %s" % filename)
55 | print("%s %s removed." % (name, filename))
56 |
57 | def add_user_blacklist(outfile):
58 | import tempfile
59 | try:
60 | infile = os.path.join(tempfile.gettempdir(), "mintUpdate/blacklist")
61 | with open(infile, "r") as export:
62 | with open(outfile, "a") as f:
63 | for line in export:
64 | f.write(line)
65 | os.remove(infile)
66 | print("User blacklist exported.")
67 | except:
68 | pass
69 |
70 | if sys.argv[2] == "enable":
71 | do_enable(automation_id)
72 | if automation_id == "upgrade":
73 | do_enable("blacklist")
74 | # Enable the cleanup service in case it was disabled manually
75 | subprocess.run(["/bin/systemctl", "enable", "mintupdate-automation-cleanup.service"])
76 | else:
77 | do_disable(automation_id)
78 |
--------------------------------------------------------------------------------
/usr/share/linuxmint/mintupdate/shortcuts.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
75 |
76 |
--------------------------------------------------------------------------------
/usr/share/linuxmint/mintupdate/history.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 400
7 | True
8 | False
9 | False
10 | center
11 | 1000
12 | 500
13 | mintupdate
14 |
15 |
16 | 475
17 | True
18 | False
19 | 12
20 | 12
21 |
22 |
23 | True
24 | True
25 | in
26 |
27 |
28 | True
29 | True
30 | True
31 | True
32 | True
33 | False
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | True
42 | True
43 | 0
44 |
45 |
46 |
47 |
48 | True
49 | False
50 | 15
51 | end
52 |
53 |
54 | Close
55 | True
56 | True
57 | True
58 |
59 |
60 | False
61 | False
62 | 1
63 |
64 |
65 |
66 |
67 | False
68 | True
69 | 1
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-up-to-date-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
88 |
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-warning-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
80 |
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-type-flatpak-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
88 |
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-type-unstable-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
33 |
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-error-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
93 |
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-type-security-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
93 |
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-checking-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
92 |
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-installing-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
89 |
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-type-3rd-party-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
93 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/mintupdate-cli.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import argparse
4 | import fnmatch
5 | import os
6 | import subprocess
7 | import sys
8 | import traceback
9 |
10 | from checkAPT import APTCheck
11 | from Classes import PRIORITY_UPDATES
12 |
13 | if __name__ == "__main__":
14 |
15 | def is_blacklisted(blacklisted_packages, source_name, version):
16 | for blacklist in blacklisted_packages:
17 | if "=" in blacklist:
18 | (bl_pkg, bl_ver) = blacklist.split("=", 1)
19 | else:
20 | bl_pkg = blacklist
21 | bl_ver = None
22 | if fnmatch.fnmatch(source_name, bl_pkg) and (not bl_ver or bl_ver == version):
23 | return True
24 | return False
25 |
26 | parser = argparse.ArgumentParser(prog="mintupdate-cli")
27 | parser.add_argument("command", help="command to run (possible commands are: list, upgrade)")
28 |
29 | group = parser.add_mutually_exclusive_group()
30 | group.add_argument("-k", "--only-kernel", action="store_true", help="only include kernel updates")
31 | group.add_argument("-s", "--only-security", action="store_true", help="only include security updates")
32 | parser.add_argument("-i", "--ignore", help="list of updates to ignore (comma-separated list of source package names). Note: You can also blacklist updates by adding them to /etc/mintupdate.blacklist, one source package per line. To ignore a specific version, use the format package=version.")
33 | parser.add_argument("-r", "--refresh-cache", action="store_true", help="refresh the APT cache")
34 | parser.add_argument("-d", "--dry-run", action="store_true", help="simulation mode, don't upgrade anything")
35 | parser.add_argument("-y", "--yes", action="store_true", help="automatically answer yes to all questions and always install new configuration files (unless you also use \"--keep-configuration\" option)")
36 | parser.add_argument("--install-recommends", action="store_true", help="install recommended packages")
37 | parser.add_argument("--keep-configuration", action="store_true", default=False, help="always keep local changes in configuration files (use with caution)")
38 | parser.add_argument("-v", "--version", action="version", version="__DEB_VERSION__", help="Display the current version")
39 |
40 | args = parser.parse_args()
41 | try:
42 | if args.refresh_cache:
43 | subprocess.run("sudo /usr/bin/mint-refresh-cache", shell=True)
44 | check = APTCheck()
45 | check.find_changes()
46 |
47 | blacklisted = []
48 | if os.path.exists("/etc/mintupdate.blacklist"):
49 | with open("/etc/mintupdate.blacklist") as blacklist_file:
50 | for line in blacklist_file:
51 | line = line.strip()
52 | if line.startswith("#"):
53 | continue
54 | blacklisted.append(line)
55 | if args.ignore:
56 | blacklisted.extend(args.ignore.split(","))
57 |
58 | updates = []
59 | for source_name in sorted(check.updates.keys()):
60 | update = check.updates[source_name]
61 | if source_name in PRIORITY_UPDATES:
62 | updates.append(update)
63 | elif args.only_kernel and update.type != "kernel":
64 | continue
65 | elif args.only_security and update.type != "security":
66 | continue
67 | elif is_blacklisted(blacklisted, update.real_source_name, update.new_version):
68 | continue
69 | else:
70 | updates.append(update)
71 |
72 | if args.command == "list":
73 | for update in updates:
74 | print ("%-15s %-45s %s" % (update.type, update.source_name, update.new_version))
75 | elif args.command == "upgrade":
76 | packages = []
77 | for update in updates:
78 | packages += update.package_names
79 | arguments = ["apt-get", "install"]
80 | if args.dry_run:
81 | arguments.append("--simulate")
82 | if args.yes:
83 | environment = os.environ
84 | environment.update({"DEBIAN_FRONTEND": "noninteractive"})
85 | arguments.append("--assume-yes")
86 | if not args.keep_configuration:
87 | arguments.extend(["--option", "Dpkg::Options::=--force-confnew"])
88 | else:
89 | environment = None
90 | if args.install_recommends:
91 | arguments.append("--install-recommends")
92 | if args.keep_configuration:
93 | arguments.extend(["--option", "Dpkg::Options::=--force-confold"])
94 | subprocess.call(arguments + packages, env=environment)
95 | except:
96 | traceback.print_exc()
97 | sys.exit(1)
98 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/proxygsettings.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | #
3 | # Copyright 2011-2012 Canonical Ltd.
4 | # Copyright 2014 Erik Devriendt
5 | #
6 | # This program is free software: you can redistribute it and/or modify it
7 | # under the terms of the GNU General Public License version 3, as published
8 | # by the Free Software Foundation.
9 | #
10 | # This program is distributed in the hope that it will be useful, but
11 | # WITHOUT ANY WARRANTY; without even the implied warranties of
12 | # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
13 | # PURPOSE. See the GNU General Public License for more details.
14 | #
15 | # You should have received a copy of the GNU General Public License along
16 | # with this program. If not, see .
17 | #
18 | # In addition, as a special exception, the copyright holders give
19 | # permission to link the code of portions of this program with the
20 | # OpenSSL library under certain conditions as described in each
21 | # individual source file, and distribute linked combinations
22 | # including the two.
23 | # You must obey the GNU General Public License in all respects
24 | # for all of the code used other than OpenSSL. If you modify
25 | # file(s) with this exception, you may extend this exception to your
26 | # version of the file(s), but you are not obligated to do so. If you
27 | # do not wish to do so, delete this exception statement from your
28 | # version. If you delete this exception statement from all source
29 | # files in the program, then also delete it here.
30 | """Retrieve the proxy configuration from Gnome."""
31 |
32 | import subprocess
33 |
34 |
35 | GSETTINGS_CMDLINE = "gsettings list-recursively org.gnome.system.proxy"
36 | CANNOT_PARSE_WARNING = "Cannot parse gsettings value: %r"
37 |
38 |
39 | def parse_proxy_hostspec(hostspec):
40 | """Parse the hostspec to get protocol, hostname, username and password."""
41 | protocol = None
42 | username = None
43 | password = None
44 | hostname = hostspec
45 |
46 | if "://" in hostname:
47 | protocol, hostname = hostname.split("://", 1)
48 | if "@" in hostname:
49 | username, hostname = hostname.rsplit("@", 1)
50 | if ":" in username:
51 | username, password = username.split(":", 1)
52 | return protocol, hostname, username, password
53 |
54 |
55 | def proxy_url_from_settings(scheme, gsettings):
56 | """Build and return the proxy URL for the given scheme, based on the gsettings."""
57 | protocol, host, username, pwd = parse_proxy_hostspec(gsettings[scheme + ".host"])
58 | # if the user did not set a proxy for a type (http/https/ftp) we should
59 | # return None to ensure that it is not used
60 | if host == '':
61 | return None
62 |
63 | port = gsettings[scheme + ".port"]
64 |
65 | if scheme == "http" and gsettings["http.use-authentication"]:
66 | username = gsettings["http.authentication-user"]
67 | pwd = gsettings["http.authentication-password"]
68 |
69 | proxy_url = "%s:%d" % (host,port)
70 | if username is not None:
71 | if pwd is not None:
72 | proxy_url = "%s:%s@%s" % (username,pwd,proxy_url)
73 | else:
74 | proxy_url = "%s@%s" % (username,proxy_url)
75 |
76 | if protocol is not None:
77 | proxy_url = "%s://%s" % (protocol, proxy_url)
78 |
79 | return proxy_url
80 |
81 | def get_proxy_settings():
82 | """Parse the proxy settings as returned by the gsettings executable
83 | and return a dictionary with a proxy URL for each scheme ."""
84 | output = subprocess.check_output(GSETTINGS_CMDLINE.split()).decode("utf-8")
85 | gsettings = {}
86 | base_len = len("org.gnome.system.proxy.")
87 | # pylint: disable=E1103
88 | for line in output.split("\n"):
89 | try:
90 | path, key, value = line.split(" ", 2)
91 | except ValueError:
92 | continue
93 | if value.startswith("'"):
94 | parsed_value = value[1:-1]
95 | elif value.startswith(('[', '@')):
96 | parsed_value = value
97 | elif value in ('true', 'false'):
98 | parsed_value = (value == 'true')
99 | elif value.isdigit():
100 | parsed_value = int(value)
101 | else:
102 | print(CANNOT_PARSE_WARNING % value)
103 | parsed_value = value
104 | relative_key = (path + "." + key)[base_len:]
105 | gsettings[relative_key] = parsed_value
106 | mode = gsettings["mode"]
107 | settings = {}
108 | if mode == "manual":
109 | for scheme in ["http", "https"]:
110 | scheme_settings = proxy_url_from_settings(scheme, gsettings)
111 | if scheme_settings is not None:
112 | settings[scheme] = scheme_settings
113 | # If mode is automatic the PAC javascript should be interpreted
114 | # on each request. That is out of scope so it's ignored for now
115 |
116 | return settings
117 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/rel_upgrade_root.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import apt
4 | import aptkit.simpleclient
5 | import gettext
6 | import gi
7 | import os
8 | import subprocess
9 | import sys
10 |
11 | gi.require_version('Gtk', '3.0')
12 | from gi.repository import Gtk
13 |
14 | gettext.install("mintupdate", "/usr/share/locale")
15 |
16 | if os.getuid() != 0:
17 | print("Run this code as root!")
18 | sys.exit(1)
19 |
20 | if len(sys.argv) != 2:
21 | print("Missing arguments!")
22 | sys.exit(1)
23 |
24 | codename = sys.argv[1]
25 | sources_list = f"/usr/share/mint-upgrade-info/{codename}/official-package-repositories.list"
26 | if not os.path.exists(sources_list):
27 | print("Unrecognized release: %s" % codename)
28 | sys.exit(1)
29 |
30 | def file_to_list(filename):
31 | returned_list = []
32 | if os.path.exists(filename):
33 | with open(filename, 'r') as file_handle:
34 | for line in file_handle:
35 | line = line.strip()
36 | if line == "" or line.startswith("#"):
37 | continue
38 | returned_list.append(line)
39 | return returned_list
40 |
41 | class Upgrader():
42 |
43 | def __init__(self):
44 | self.refresh_done = False
45 | self.client = aptkit.simpleclient.SimpleAPTClient()
46 | self.additions = file_to_list(f"/usr/share/mint-upgrade-info/{codename}/additions")
47 | self.removals = file_to_list(f"/usr/share/mint-upgrade-info/{codename}/removals")
48 | self.blacklist = file_to_list(f"/usr/share/mint-upgrade-info/{codename}/blacklist")
49 |
50 | def run(self):
51 | self.update_cache()
52 |
53 | def update_cache(self):
54 | # STEP 1: UPDATE APT SOURCES
55 | if os.path.exists("/etc/apt/sources.list.d/official-source-repositories.list"):
56 | subprocess.run(["rm", "-f", "/etc/apt/sources.list.d/official-source-repositories.list"])
57 | subprocess.run(["cp", sources_list, "/etc/apt/sources.list.d/official-package-repositories.list"])
58 |
59 | # STEP 2: UPDATE APT CACHE
60 | self.client.set_finished_callback(self.on_cache_updated)
61 | self.client.update_cache()
62 |
63 | def on_cache_updated(self, transaction=None, exit_state=None):
64 | # STEP 3: INSTALL MINT UPDATES
65 | cache = apt.Cache()
66 | cache.open(None)
67 | cache.upgrade(True)
68 | packages = []
69 | for pkg in cache.get_changes():
70 | # upgradeable..
71 | if pkg.is_installed and pkg.marked_upgrade:
72 | # not in blacklist..
73 | if pkg.candidate.source_name not in self.blacklist:
74 | # with a new version..
75 | if (pkg.candidate.version != pkg.installed.version):
76 | # from the Mint repos..
77 | for origin in pkg.candidate.origins:
78 | if origin.origin == "linuxmint":
79 | if origin.component != "romeo" and pkg.name != "linux-kernel-generic":
80 | packages.append(pkg.name)
81 |
82 | if len(packages) > 0:
83 | self.client.set_finished_callback(self.on_install_finished)
84 | self.client.install_packages(packages)
85 | else:
86 | self.on_install_finished()
87 |
88 | def on_install_finished(self, transaction=None, exit_state=None):
89 | # STEP 4: ADD PACKAGES
90 | if len(self.additions) > 0:
91 | self.client.set_finished_callback(self.on_additions_finished)
92 | self.client.install_packages(self.additions)
93 | else:
94 | self.on_additions_finished()
95 |
96 | def on_additions_finished(self, transaction=None, exit_state=None):
97 | # STEP 5: REMOVE PACKAGES
98 | removals = []
99 | cache = apt.Cache()
100 | cache.open(None)
101 | for name in self.removals:
102 | if name in cache and cache[name].is_installed:
103 | removals.append(name)
104 | if len(removals) > 0:
105 | self.client.set_finished_callback(self.on_removals_finished)
106 | self.client.remove_packages(removals)
107 | else:
108 | self.on_removals_finished()
109 |
110 | def on_removals_finished(self, transaction=None, exit_state=None):
111 | # STEP 6: UPDATE GRUB
112 | try:
113 | subprocess.run(["update-grub"])
114 | if os.path.exists("/usr/share/ubuntu-system-adjustments/systemd/adjust-grub-title"):
115 | subprocess.run(["/usr/share/ubuntu-system-adjustments/systemd/adjust-grub-title"])
116 | except Exception as detail:
117 | syslog.syslog("Couldn't update grub: %s" % detail)
118 | Gtk.main_quit()
119 | sys.exit(0)
120 |
121 | if __name__ == "__main__":
122 | upgrader =Upgrader()
123 | upgrader.run()
124 | Gtk.main()
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-updates-available-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
98 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/checkKernels.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 | import os
3 | import re
4 | import sys
5 |
6 | import apt
7 |
8 | from Classes import (CONFIGURED_KERNEL_TYPE, SUPPORTED_KERNEL_TYPES,
9 | KernelVersion, get_release_dates)
10 |
11 | if len(sys.argv) > 1 and sys.argv[1] in SUPPORTED_KERNEL_TYPES:
12 | CONFIGURED_KERNEL_TYPE = sys.argv[1]
13 |
14 | release_dates = None
15 | try:
16 | current_version = os.uname().release
17 | cache = apt.Cache()
18 | signed_kernels = ['']
19 | local_kernels = {}
20 | r = re.compile(r'^(?:linux-image-)(?:unsigned-)?(\d.+?)(%s)$' % "|".join(SUPPORTED_KERNEL_TYPES))
21 | for pkg_name in cache.keys():
22 | installed = 0
23 | used = 0
24 | installable = 0
25 | pkg_version = ""
26 | pkg_match = r.match(pkg_name)
27 | if pkg_match:
28 | pkg = cache[pkg_name]
29 | pkg_data = None
30 | if pkg.candidate:
31 | pkg_data = pkg.candidate
32 | elif pkg.installed:
33 | pkg_data = pkg.installed
34 | else:
35 | continue
36 | version = pkg_match.group(1)
37 | kernel_type = pkg_match.group(2)
38 | full_version = version + kernel_type
39 | if pkg.is_installed:
40 | installed = 1
41 | pkg_version = pkg.installed.version
42 | else:
43 | # only offer to install same-type kernels
44 | if kernel_type != CONFIGURED_KERNEL_TYPE:
45 | continue
46 | if pkg.candidate and pkg.candidate.downloadable:
47 | installable = 1
48 | pkg_version = pkg.candidate.version
49 | # filter duplicates (unsigned kernels where signed exists)
50 | if full_version in signed_kernels:
51 | continue
52 | signed_kernels.append(full_version)
53 | if full_version == current_version:
54 | used = 1
55 |
56 | # provide a representation of the version which helps sorting the kernels
57 | versions = KernelVersion(pkg_version).version_id
58 |
59 | if not pkg_data.origins[0].origin:
60 | origin = 0
61 | elif pkg_data.origins[0].origin == 'Ubuntu':
62 | origin = 1
63 | else:
64 | origin = 2
65 |
66 | archive = pkg_data.origins[0].archive
67 |
68 | # get support duration
69 | supported_tag = pkg_data.record.get("Supported")
70 | if not supported_tag and origin == 1 and "-proposed" not in pkg_data.origins[0].archive:
71 | # Workaround for Ubuntu releasing kernels by copying straight from
72 | # -proposed and only adding the Supported tag shortly after.
73 | # To avoid user confusion in the time in-between we just assume
74 | # that all Ubuntu kernels in all pockets but -proposed are supported
75 | # and generate the supported tag based on the distro support duration
76 | if not release_dates:
77 | release_dates = get_release_dates()
78 | distro = pkg.candidate.origins[0].archive.split("-")[0]
79 | if distro in release_dates:
80 | distro_lifetime = (release_dates[distro][1].year - release_dates[distro][0].year) * 12 +\
81 | release_dates[distro][1].month - release_dates[distro][0].month
82 | if distro_lifetime >= 12:
83 | supported_tag = "%sy" % (distro_lifetime // 12)
84 | else:
85 | supported_tag = "%sm" % distro_lifetime
86 | if supported_tag:
87 | if supported_tag.endswith("y"):
88 | # override support duration for HWE kernels in LTS releases,
89 | # these will be handled by the kernel window
90 | if "-hwe" in pkg_data.source_name:
91 | support_duration = -1
92 | else:
93 | support_duration = int(supported_tag[:-1]) * 12
94 | elif supported_tag.endswith("m"):
95 | support_duration = int(supported_tag[:-1])
96 | else:
97 | # unexpected support tag
98 | support_duration = 0
99 | else:
100 | # unsupported
101 | support_duration = 0
102 |
103 | resultString = "KERNEL###%s###%s###%s###%s###%s###%s###%s###%s###%s###%s" % \
104 | (".".join(versions), version, pkg_version, installed, used, installable,
105 | origin, archive, support_duration, kernel_type)
106 | print(resultString.encode("utf-8").decode('ascii', 'xmlcharrefreplace'))
107 |
108 | except Exception as e:
109 | print("ERROR###ERROR###ERROR###ERROR")
110 | print("%s: %s\n" % (e.__class__.__name__, e), file=sys.stderr)
111 | sys.exit(1)
112 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/flatpakUpdater.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import os
4 | import json
5 | import subprocess
6 | import sys
7 |
8 | import gi
9 | gi.require_version('GLib', '2.0')
10 | from gi.repository import GLib
11 |
12 | try:
13 | if not GLib.find_program_in_path("flatpak"):
14 | raise Exception
15 | gi.require_version('Flatpak', '1.0')
16 | from gi.repository import Flatpak
17 | except Exception:
18 | print("No Flatpak support - are flatpak and gir1.2-flatpak-1.0 installed?")
19 | raise NotImplementedError
20 |
21 | from Classes import FlatpakUpdate
22 |
23 | LOG_PATH = os.path.join(GLib.get_home_dir(), '.linuxmint', 'mintupdate', 'flatpak-updates.log')
24 | UPDATE_WORKER_PATH = "/usr/lib/linuxmint/mintUpdate/flatpak-update-worker.py"
25 |
26 | class FlatpakUpdater():
27 | def __init__(self):
28 | self.task = None
29 |
30 | self.updates = []
31 | self.error = None
32 |
33 | def refresh(self):
34 | self.kill_any_helpers()
35 |
36 | try:
37 | subprocess.run([UPDATE_WORKER_PATH, "--refresh"], timeout = 30, stdout=subprocess.DEVNULL)
38 | except subprocess.TimeoutExpired as e:
39 | print("Flatpaks: timed out trying to refresh", str(e))
40 |
41 | def fetch_updates(self):
42 | self.updates = []
43 | output = None
44 |
45 | try:
46 | output = subprocess.run([UPDATE_WORKER_PATH, "--fetch-updates"], timeout=45, stdout=subprocess.PIPE, encoding="utf-8").stdout
47 | except subprocess.TimeoutExpired as e:
48 | print("Flatpaks: timed out trying to get a list of updates", str(e))
49 |
50 | # print(output)
51 |
52 | if output is None:
53 | print("Flatpaks: no updates")
54 | return
55 |
56 | output = output.strip("\n")
57 |
58 | if output == "no-installed":
59 | print("Flatpaks: skipping update check - nothing installed")
60 | return
61 |
62 | if output.startswith("error:"):
63 | self.error = output[6:]
64 | print("Flatpaks: error from fetch-updates call", self.error)
65 | return
66 |
67 | try:
68 | json_data = json.loads(output)
69 | for item in json_data:
70 | self.updates.append(FlatpakUpdate.from_json(item))
71 | except json.JSONDecodeError as e:
72 | print("Flatpaks: unable to parse updates list", str(e))
73 |
74 | print("Flatpak: done generating updates")
75 |
76 | def prepare_start_updates(self, updates):
77 | argv = [UPDATE_WORKER_PATH, "--update-packages"] + [update.ref.format_ref() for update in updates]
78 |
79 | try:
80 | self.proc = subprocess.Popen(argv, stdin=subprocess.PIPE, stdout=subprocess.PIPE, encoding="utf-8")
81 | except Exception as e:
82 | print("Flatpak: Could not start worker: %s" % str(e))
83 | return False
84 |
85 | self.out_pipe = self.proc.stdout
86 | self.in_pipe = self.proc.stdin
87 |
88 | try:
89 | res = self.out_pipe.readline()
90 | if res:
91 | answer = res.strip("\n")
92 | if answer == "ready":
93 | return
94 | else:
95 | raise Exception("Unexpected response from worker - expected 'ready', got '%s'" % answer)
96 | except Exception as e:
97 | print("Flatpak: Could not set up to install updates: %s", str(e))
98 | self.terminate_helper()
99 |
100 | def perform_updates(self):
101 | try:
102 | self.in_pipe.write("start")
103 | self.in_pipe.flush()
104 |
105 | res = self.out_pipe.readline()
106 | if res:
107 | answer = res.strip("\n")
108 | if answer == "done":
109 | print("Flatpaks: updates complete")
110 | elif answer.startswith("error:"):
111 | self.error = answer[6:]
112 | print("Flatpaks: error performing updates: %s" % self.error)
113 | except Exception as e:
114 | print("Flatpak: Could not perform updates: %s", str(e))
115 |
116 | self.terminate_helper()
117 |
118 | def terminate_helper(self):
119 | if self.proc is None:
120 | return
121 |
122 | try:
123 | self.in_pipe.close()
124 | self.out_pipe.close()
125 | except:
126 | pass
127 |
128 | self.proc.terminate()
129 | try:
130 | if self.error is not None:
131 | self.proc.wait() # Error dialog happening
132 | else:
133 | self.proc.wait(5)
134 | except subprocess.TimeoutExpired:
135 | self.proc.kill()
136 |
137 | self.proc = None
138 |
139 | def kill_any_helpers(self):
140 | try:
141 | os.system("killall -q flatpak-update-worker")
142 | except Exception as e:
143 | print (e)
144 | print(sys.exc_info()[0])
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
--------------------------------------------------------------------------------
/usr/bin/mintupdate-launcher:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 | from functools import wraps
3 | import errno
4 | import gettext
5 | import gi
6 | import locale
7 | import os
8 | import signal
9 | import subprocess
10 | import time
11 | import xapp.os
12 | gi.require_version('Notify', '0.7')
13 | from gi.repository import GLib, Gio, Notify
14 |
15 | # i18n
16 | APP = 'mintupdate'
17 | LOCALE_DIR = "/usr/share/locale"
18 | locale.bindtextdomain(APP, LOCALE_DIR)
19 | gettext.bindtextdomain(APP, LOCALE_DIR)
20 | gettext.textdomain(APP)
21 | _ = gettext.gettext
22 |
23 | Notify.init(_("Update Manager"))
24 |
25 | class TimeoutError(Exception):
26 | pass
27 |
28 | # Limit the amount of time a function can run
29 | def timeout(seconds=10, error_message=os.strerror(errno.ETIME)):
30 | def decorator(func):
31 | def _handle_timeout(signum, frame):
32 | raise TimeoutError(error_message)
33 |
34 | def wrapper(*args, **kwargs):
35 | signal.signal(signal.SIGALRM, _handle_timeout)
36 | signal.alarm(seconds)
37 | try:
38 | result = func(*args, **kwargs)
39 | finally:
40 | signal.alarm(0)
41 | return result
42 |
43 | return wraps(func)(wrapper)
44 |
45 | return decorator
46 |
47 | @timeout(600)
48 | def update_cinnamon_spices():
49 | if os.path.exists("/usr/bin/cinnamon"):
50 | print("Updating Cinnamon Spices")
51 | try:
52 | import cinnamon
53 | updater = cinnamon.UpdateManager()
54 | updater.refresh_all_caches()
55 | updates = updater.get_updates()
56 | if len(updates) > 0:
57 | msg = _("The following spices were automatically updated:")
58 | msg = msg + "\n"
59 | for update in updates:
60 | updater.upgrade(update)
61 | msg += "\n- %s (%s)" % (update.uuid, update.spice_type)
62 |
63 | if xapp.os.is_desktop_cinnamon():
64 | subprocess.call(["cinnamon-dbus-command", "RestartCinnamon", "0"])
65 | time.sleep(10) # Give cinnamon some time, otherwise it won't show our notification.
66 | notification_title = _("Cinnamon was restarted")
67 | notification = Notify.Notification.new(notification_title, msg, "cinnamon-symbolic")
68 | notification.set_urgency(2)
69 | notification.set_timeout(Notify.EXPIRES_NEVER)
70 | notification.show()
71 | except Exception as e:
72 | print("An error occurred while updating cinnamon spices: %s" % e)
73 |
74 | @timeout(600)
75 | def process_flatpaks():
76 | if os.path.exists("/usr/bin/flatpak"):
77 | # Remove unused flatpak runtimes. Do it before updating so we're not updating unused
78 | # runtimes unnecessarily.
79 |
80 | try:
81 | print("Purging unused flatpaks")
82 | out = subprocess.run(
83 | [
84 | "flatpak", "uninstall", "--unused", "-y"
85 | ],
86 | stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
87 | print(out.stdout.decode())
88 | except Exception as e:
89 | print("An error occurred while purging unused flatpaks: %s" % e)
90 |
91 | if settings.get_boolean("auto-update-flatpaks"):
92 | print("Updating flatpaks")
93 | try:
94 | # Update flatpaks
95 | out = subprocess.run(
96 | [
97 | "flatpak", "update", "-y"
98 | ],
99 | stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
100 | print(out.stdout.decode())
101 | except Exception as e:
102 | print("An error occurred while updating flatpaks: %s" % e)
103 |
104 | # Install theme if needed
105 | try:
106 | gi.require_version('Flatpak', '1.0')
107 | from gi.repository import Flatpak
108 | from mintcommon.installer import _flatpak
109 |
110 | theme_refs = _flatpak.get_updated_theme_refs()
111 | if theme_refs is not None:
112 | print("Installing new theme to match local theme")
113 | for ref in theme_refs:
114 | out = subprocess.run(
115 | [
116 | "flatpak", "install", "-y", "--system",
117 | ref.get_remote_name(), ref.get_name()
118 | ],
119 | stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
120 | print(out.stdout.decode())
121 | except Exception as e:
122 | print("An error occurred checking for a new flatpak theme: %s" % e)
123 |
124 | if __name__ == "__main__":
125 | if os.getuid() == 0:
126 | print("Error: Do not run this as root")
127 | exit(1)
128 |
129 | if ((not xapp.os.is_live_session()) and (not xapp.os.is_guest_session())):
130 | settings = Gio.Settings(schema_id="com.linuxmint.updates")
131 | # Update Cinnamon spices
132 | if settings.get_boolean("auto-update-cinnamon-spices"):
133 | update_cinnamon_spices()
134 | # Update and auto-remove flatpaks
135 | process_flatpaks()
136 | # Launch mintupdate
137 | os.system("/usr/lib/linuxmint/mintUpdate/mintUpdate.py &")
138 |
--------------------------------------------------------------------------------
/etc/xdg/autostart/mintupdate.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Encoding=UTF-8
3 | Name=Update Manager
4 | Name[af]=Opdateringsbestuurder
5 | Name[am]=የማሻሻያ አስተዳዳሪ
6 | Name[ar]=مدير التحديث
7 | Name[ar_AR]=مدير التحديث
8 | Name[ar_MA]=مدير التحديث
9 | Name[ast]=Xestor d'anovamientos
10 | Name[az]=Yeniləmə İdarəçisi
11 | Name[be]=Кіраўнік абнаўленняў
12 | Name[be@latin]=Кіраўнік абнаўленняў
13 | Name[bg]=Диспечер на актуализациите
14 | Name[bg_BG]=Диспечер на актуализациите
15 | Name[bn]=আপডেট ব্যবস্থাপক
16 | Name[bn_BD]=আপডেট ব্যবস্থাপক
17 | Name[bn_IN]=আপডেট ব্যবস্থাপক
18 | Name[bs]=Menadžer nadogradnji
19 | Name[ca]=Gestor d'actualitzacions
20 | Name[ca@valencia]=Gestor d'actualitzacions
21 | Name[ca_ES@valencia]=Gestor d'actualitzacions
22 | Name[cs]=Správa aktualizací
23 | Name[cs_CZ]=Správa aktualizací
24 | Name[csb]=Menedżera aktualizacëji
25 | Name[cy]=Rheolwr Diweddaru
26 | Name[da]=Opdateringshåndtering
27 | Name[de]=Aktualisierungsverwaltung
28 | Name[de_CH]=Aktualisierungsverwaltung
29 | Name[de_DE]=Aktualisierungsverwaltung
30 | Name[el]=Διαχειριστής Ενημερώσεων
31 | Name[eo]=Ĝisdatiga mastrumilo
32 | Name[es]=Administrador de actualizaciones
33 | Name[es_419]=Administrador de actualizaciones
34 | Name[es_AR]=Administrador de actualizaciones
35 | Name[es_CL]=Administrador de actualizaciones
36 | Name[es_CO]=Administrador de actualizaciones
37 | Name[es_CR]=Administrador de actualizaciones
38 | Name[es_DO]=Administrador de actualizaciones
39 | Name[es_EC]=Administrador de actualizaciones
40 | Name[es_ES]=Administrador de actualizaciones
41 | Name[es_MX]=Administrador de actualizaciones
42 | Name[es_NI]=Administrador de actualizaciones
43 | Name[es_PA]=Administrador de actualizaciones
44 | Name[es_PE]=Administrador de actualizaciones
45 | Name[es_PR]=Administrador de actualizaciones
46 | Name[es_SV]=Administrador de actualizaciones
47 | Name[es_US]=Administrador de actualizaciones
48 | Name[es_UY]=Administrador de actualizaciones
49 | Name[es_VE]=Administrador de actualizaciones
50 | Name[et]=Uuendamishaldur
51 | Name[eu]=Eguneraketa-kudeatzailea
52 | Name[fa]=مدیر بهروزرسانی
53 | Name[fa_AF]=مدیر بهروزرسانی
54 | Name[fa_IR]=مدیر بهروزرسانی
55 | Name[fi]=Päivitysten hallinta
56 | Name[fi_FI]=Päivitysten hallinta
57 | Name[fil]=Tagapamahala ng Update
58 | Name[fo]=Dagføringa fyrisiting
59 | Name[fr]=Gestionnaire de mises à jour
60 | Name[fr_CA]=Gestionnaire de mises à jour
61 | Name[fr_FR]=Gestionnaire de mises à jour
62 | Name[ga]=Bainisteoir Nuashonraithe
63 | Name[gd]=Manaidsear nan ùrachaidhean
64 | Name[gl]=Xestor de actualizacións
65 | Name[gl_ES]=Xestor de actualizacións
66 | Name[gv]=Reireyder stoo noa
67 | Name[he]=מנהל עדכונים
68 | Name[he_IL]=מנהל עדכונים
69 | Name[hi]=अपडेट मैनेजर
70 | Name[hr]=Upravitelj nadopuna
71 | Name[hu]=Frissítéskezelő
72 | Name[hu_HU]=Frissítéskezelő
73 | Name[ia]=Gestor de actualisation
74 | Name[id]=Manajer Pembaruan
75 | Name[id_ID]=Manajer Pembaruan
76 | Name[is]=Uppfærslustjóri
77 | Name[it]=Gestore Aggiornamenti
78 | Name[it_IT]=Gestore Aggiornamenti
79 | Name[ja]=アップデートマネージャ
80 | Name[ja_JP]=アップデートマネージャ
81 | Name[jv]=Penglola penganyaran
82 | Name[kk]=Жаңарту менеджері
83 | Name[km]=កម្មវិធីគ្រប់គ្រងបច្ចុប្បន្នភាព
84 | Name[km_KH]=កម្មវិធីគ្រប់គ្រងបច្ចុប្បន្នភាព
85 | Name[ko]=업데이트 매니저
86 | Name[ko_KR]=업데이트 매니저
87 | Name[ku]=Rêveberiya Rojanekirinê
88 | Name[ku_IQ]=Rêveberiya Rojanekirinê
89 | Name[ky]=Жаңылоо менеджери
90 | Name[lt]=Atnaujinimų tvarkytuvė
91 | Name[lt_LT]=Atnaujinimų tvarkytuvė
92 | Name[lv]=Atjauninājumu pārvaldnieks
93 | Name[lv_LV]=Atjauninājumu pārvaldnieks
94 | Name[mk]=Менаџер за надградба
95 | Name[mk_MK]=Менаџер за надградба
96 | Name[ml]=അപ്ഡേറ്റ് മാനേജർ
97 | Name[mr]=अद्ययावतीकरण प्रबंधक
98 | Name[ms]=Pengurus Kemaskini
99 | Name[ms_MY]=Pengurus Kemaskini
100 | Name[nb]=Oppdateringsbehandler
101 | Name[nb_NO]=Oppdateringsbehandler
102 | Name[nds]=Aktualisierungsverwaltung
103 | Name[ne]=उप्डेट म्यानेजर
104 | Name[nl]=Bijwerkbeheer
105 | Name[nl_NL]=Bijwerkbeheer
106 | Name[nn]=Oppdateringshandsamar
107 | Name[nn_NO]=Oppdateringshandsamar
108 | Name[oc]=Gestionari de mesas a jorn
109 | Name[pa]=ਅੱਪਡੇਟ ਮੈਨੇਜਰ
110 | Name[pl]=Menedżer aktualizacji
111 | Name[pl_PL]=Menedżer aktualizacji
112 | Name[pt]=Gestor de Atualizações
113 | Name[pt_BR]=Gerenciador de Atualizações
114 | Name[pt_PT]=Gestor de Atualizações
115 | Name[ro]=Administrator de actualizări
116 | Name[ro_RO]=Administrator de actualizări
117 | Name[ru]=Менеджер обновлений
118 | Name[si]=යාවත්කාල කිරීම කළමනාකරනය
119 | Name[sk]=Správca aktualizácií
120 | Name[sk_SK]=Správca aktualizácií
121 | Name[sl]=Upravljalnik posodobitev
122 | Name[sl_SI]=Upravljalnik posodobitev
123 | Name[so]=Agaasime Dalacsiiyaha
124 | Name[sq]=Menaxhuesi i Përditësimeve
125 | Name[sr]=Управник ажурирања
126 | Name[sr@Latn]=Upravnik ažuriranja
127 | Name[sr@cyrillic]=Управник ажурирања
128 | Name[sr@ije]=Управник ажурирања
129 | Name[sr@ijekavianlatin]=Управник ажурирања
130 | Name[sr@latin]=Upravnik ažuriranja
131 | Name[sr_RS]=Управник ажурирања
132 | Name[sr_RS@latin]=Upravnik ažuriranja
133 | Name[sv]=Uppdateringshanterare
134 | Name[ta]=மேம்பாட்டு நிர்வகிப்பான்
135 | Name[ta_LK]=மேம்பாட்டு நிர்வகிப்பான்
136 | Name[te]=నవీకరణ నిర్వాహకం
137 | Name[tg]=Мудири навсозиҳо
138 | Name[th]=โปรแกรมจัดการการปรับปรุง
139 | Name[th_TH]=โปรแกรมจัดการการปรับปรุง
140 | Name[tl]=Tagapamahala ng Update
141 | Name[tr]=Güncelleme Yöneticisi
142 | Name[uk]=Менеджер оновлень
143 | Name[uk_UA]=Менеджер оновлень
144 | Name[ur]=اپڈیٹ منتظم
145 | Name[ur_PK]=اپڈیٹ منتظم
146 | Name[vi]=Trình Quản lý Cập nhật
147 | Name[vi_VN]=Trình Quản lý Cập nhật
148 | Name[zh_CN]=更新管理器
149 | Name[zh_HK]=更新管理員
150 | Name[zh_TW]=更新管理員
151 | Comment=Linux Mint Update Manager
152 | Icon=mintupdate
153 | Exec=mintupdate-launcher
154 | Terminal=false
155 | Type=Application
156 | Categories=
157 | X-GNOME-Autostart-Delay=20
158 | X-MATE-Autostart-Delay=20
159 |
--------------------------------------------------------------------------------
/usr/share/polkit-1/actions/com.linuxmint.updates.policy:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 | Linux Mint
8 | https://linuxmint.com/
9 |
10 |
11 | mintupdate
12 | Update Manager
13 | Opdateringsbestuurder
14 | የማሻሻያ አስተዳዳሪ
15 | مدير التحديث
16 | Xestor d'anovamientos
17 | Yeniləmə İdarəçisi
18 | Кіраўнік абнаўленняў
19 | Диспечер на актуализациите
20 | আপডেট ব্যবস্থাপক
21 | Ardoer hizivadurioù
22 | Menadžer nadogradnji
23 | Gestor d'actualitzacions
24 | Gestor d'actualitzacions
25 | Správa aktualizací
26 | Menedżera aktualizacëji
27 | Rheolwr Diweddaru
28 | Opdateringshåndtering
29 | Aktualisierungsverwaltung
30 | Διαχειριστής Ενημερώσεων
31 | Ĝisdatiga mastrumilo
32 | Gestor de actualizaciones
33 | Uuendamishaldur
34 | Eguneraketa-kudeatzailea
35 | مدیر بهروزرسانی
36 | Päivitysten hallinta
37 | Tagapamahala ng Update
38 | Dagføringa fyrisiting
39 | Gestionnaire de mise à jour
40 | Gestionnaire de mise à jour
41 | Bainisteoir Nuashonraithe
42 | Manaidsear nan ùrachaidhean
43 | Xestor de actualizacións
44 | Reireyder stoo noa
45 | מנהל עדכונים
46 | अपडेट मैनेजर
47 | Upravitelj nadopuna
48 | Frissítéskezelő
49 | Gestor de actualisation
50 | Manajer Pembaruan
51 | Gerente de actualisamentes
52 | Uppfærslustjóri
53 | Gestore aggiornamenti
54 | アップデートマネージャー
55 | Penglola penganyaran
56 | Amsefrak n ileqman
57 | Жаңарту менеджері
58 | កម្មវិធីគ្រប់គ្រងបច្ចុប្បន្នភាព
59 | 업데이트 매니저
60 | Rêveberiya Rojanekirinê
61 | Жаңылоо менеджери
62 | Administrator Novationum
63 | ຕົວຈັດການອັບເດດ
64 | Atnaujinimų tvarkytuvė
65 | Atjauninājumu pārvaldnieks
66 | Менаџер за надградба
67 | അപ്ഡേറ്റ് മാനേജർ
68 | अद्ययावतीकरण प्रबंधक
69 | Pengurus Kemaskini
70 | Oppdateringsbehandler
71 | Aktualisierungsverwaltung
72 | उप्डेट म्यानेजर
73 | Bijwerkbeheer
74 | Oppdateringshandsamar
75 | Gestionari de mesas a jorn
76 | ਅੱਪਡੇਟ ਮੈਨੇਜਰ
77 | Menedżer aktualizacji
78 | Gestor de atualizações
79 | Gerenciador de Atualizações
80 | Administrator de actualizări
81 | Менеджер обновлений
82 | යාවත්කාල කිරීම කළමනාකරනය
83 | Správca aktualizácií
84 | Upravljalnik posodobitev
85 | Agaasime Dalacsiiyaha
86 | Menaxhuesi i Përditësimeve
87 | Управник ажурирања
88 | Menadžer ažuriranja
89 | Uppdateringshanterare
90 | மேம்பாட்டு நிர்வகிப்பான்
91 | నవీకరణ నిర్వాహకం
92 | Мудири навсозиҳо
93 | โปรแกรมจัดการการปรับปรุง
94 | Tagapamahala ng Update
95 | Güncelleme Yöneticisi
96 | Диспетчер оновлень
97 | اپڈیٹ منتظم
98 | Yangilanish menejeri
99 | Trình Quản lý Cập nhật
100 | 更新管理器
101 | 更新管理員
102 | 更新管理員
103 |
104 |
105 | no
106 | no
107 | auth_admin_keep
108 |
109 | /usr/bin/mintupdate-automation
110 | false
111 |
112 |
113 |
--------------------------------------------------------------------------------
/usr/share/glib-2.0/schemas/com.linuxmint.updates.gschema.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | true
6 |
7 |
8 |
9 |
10 | false
11 |
12 |
13 |
14 |
15 | false
16 |
17 |
18 |
19 |
20 | false
21 |
22 |
23 |
24 |
25 | []
26 |
27 |
28 |
29 |
30 | true
31 |
32 |
33 |
34 |
35 | 0
36 |
37 |
38 |
39 |
40 | 0
41 |
42 |
43 |
44 |
45 | 0
46 |
47 |
48 |
49 |
50 | 0
51 |
52 |
53 |
54 |
55 | 10
56 |
57 |
58 |
59 |
60 | 0
61 |
62 |
63 |
64 |
65 | 2
66 |
67 |
68 |
69 |
70 | 0
71 |
72 |
73 |
74 |
75 | true
76 |
77 |
78 |
79 |
80 | true
81 |
82 |
83 |
84 |
85 | false
86 |
87 |
88 |
89 |
90 | true
91 |
92 |
93 |
94 |
95 | false
96 |
97 |
98 |
99 |
100 | false
101 |
102 |
103 |
104 |
105 | true
106 |
107 |
108 |
109 |
110 | 790
111 |
112 |
113 |
114 |
115 | 570
116 |
117 |
118 |
119 |
120 | 344
121 |
122 |
123 |
124 |
125 | false
126 |
127 |
128 |
129 |
130 | false
131 |
132 |
133 |
134 |
135 | "-generic"
136 |
137 |
138 |
139 |
140 | false
141 |
142 |
143 |
144 |
145 | true
146 |
147 |
148 |
149 |
150 | 7
151 |
152 |
153 |
154 |
155 | 15
156 |
157 |
158 |
159 |
160 | 30
161 |
162 |
163 |
164 |
165 | 2
166 |
167 |
168 |
169 |
170 | false
171 |
172 |
173 |
174 |
175 | true
176 |
177 |
178 |
179 |
180 | false
181 |
182 |
183 |
184 |
185 | true
186 |
187 |
188 |
189 |
190 | true
191 |
192 |
193 |
194 |
195 |
196 |
--------------------------------------------------------------------------------
/usr/share/linuxmint/mintupdate/information.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | True
7 | False
8 | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
9 | center
10 | 640
11 | 480
12 | mintupdate
13 |
14 |
15 |
16 |
17 |
18 | True
19 | False
20 | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
21 | 12
22 | vertical
23 | 12
24 |
25 |
26 | True
27 | False
28 | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
29 | vertical
30 | 12
31 |
32 |
33 | True
34 | False
35 | 2
36 | 6
37 |
38 |
39 | True
40 | False
41 | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
42 | start
43 | Process ID:
44 |
45 |
46 | 0
47 | 0
48 |
49 |
50 |
51 |
52 | True
53 | False
54 | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
55 | start
56 |
57 |
58 | 1
59 | 0
60 |
61 |
62 |
63 |
64 | True
65 | False
66 | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
67 | start
68 | Log file:
69 |
70 |
71 | 0
72 | 1
73 |
74 |
75 |
76 |
77 | True
78 | False
79 | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
80 | start
81 |
82 |
83 | 1
84 | 1
85 |
86 |
87 |
88 |
89 | False
90 | True
91 | 0
92 |
93 |
94 |
95 |
96 | True
97 | True
98 | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
99 | etched-in
100 |
101 |
102 | 600
103 | 248
104 | True
105 | True
106 | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
107 | 1
108 | False
109 | 3
110 | True
111 |
112 |
113 |
114 |
115 | True
116 | True
117 | 1
118 |
119 |
120 |
121 |
122 | True
123 | True
124 | 0
125 |
126 |
127 |
128 |
129 | True
130 | False
131 | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
132 | end
133 |
134 |
135 | Close
136 | True
137 | True
138 | True
139 | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
140 |
141 |
142 | False
143 | False
144 | 0
145 |
146 |
147 |
148 |
149 | False
150 | False
151 | 1
152 |
153 |
154 |
155 |
156 |
157 |
158 |
--------------------------------------------------------------------------------
/usr/share/applications/mintupdate.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Name=Update Manager
3 | Name[af]=Opdateringsbestuurder
4 | Name[am]=የማሻሻያ አስተዳዳሪ
5 | Name[ar]=مدير التحديث
6 | Name[ast]=Xestor d'anovamientos
7 | Name[az]=Yeniləmə İdarəçisi
8 | Name[be]=Кіраўнік абнаўленняў
9 | Name[bg]=Диспечер на актуализациите
10 | Name[bn]=আপডেট ব্যবস্থাপক
11 | Name[br]=Ardoer hizivadurioù
12 | Name[bs]=Menadžer nadogradnji
13 | Name[ca]=Gestor d'actualitzacions
14 | Name[ca@valencia]=Gestor d'actualitzacions
15 | Name[cs]=Správa aktualizací
16 | Name[csb]=Menedżera aktualizacëji
17 | Name[cy]=Rheolwr Diweddaru
18 | Name[da]=Opdateringshåndtering
19 | Name[de]=Aktualisierungsverwaltung
20 | Name[el]=Διαχειριστής Ενημερώσεων
21 | Name[eo]=Ĝisdatiga mastrumilo
22 | Name[es]=Gestor de actualizaciones
23 | Name[et]=Uuendamishaldur
24 | Name[eu]=Eguneraketa-kudeatzailea
25 | Name[fa]=مدیر بهروزرسانی
26 | Name[fi]=Päivitysten hallinta
27 | Name[fil]=Tagapamahala ng Update
28 | Name[fo]=Dagføringa fyrisiting
29 | Name[fr]=Gestionnaire de mise à jour
30 | Name[fr_CA]=Gestionnaire de mise à jour
31 | Name[ga]=Bainisteoir Nuashonraithe
32 | Name[gd]=Manaidsear nan ùrachaidhean
33 | Name[gl]=Xestor de actualizacións
34 | Name[gv]=Reireyder stoo noa
35 | Name[he]=מנהל עדכונים
36 | Name[hi]=अपडेट मैनेजर
37 | Name[hr]=Upravitelj nadopuna
38 | Name[hu]=Frissítéskezelő
39 | Name[ia]=Gestor de actualisation
40 | Name[id]=Manajer Pembaruan
41 | Name[ie]=Gerente de actualisamentes
42 | Name[is]=Uppfærslustjóri
43 | Name[it]=Gestore aggiornamenti
44 | Name[ja]=アップデートマネージャー
45 | Name[jv]=Penglola penganyaran
46 | Name[kab]=Amsefrak n ileqman
47 | Name[kk]=Жаңарту менеджері
48 | Name[km]=កម្មវិធីគ្រប់គ្រងបច្ចុប្បន្នភាព
49 | Name[ko]=업데이트 매니저
50 | Name[ku]=Rêveberiya Rojanekirinê
51 | Name[ky]=Жаңылоо менеджери
52 | Name[la]=Administrator Novationum
53 | Name[lo]=ຕົວຈັດການອັບເດດ
54 | Name[lt]=Atnaujinimų tvarkytuvė
55 | Name[lv]=Atjauninājumu pārvaldnieks
56 | Name[mk]=Менаџер за надградба
57 | Name[ml]=അപ്ഡേറ്റ് മാനേജർ
58 | Name[mr]=अद्ययावतीकरण प्रबंधक
59 | Name[ms]=Pengurus Kemaskini
60 | Name[nb]=Oppdateringsbehandler
61 | Name[nds]=Aktualisierungsverwaltung
62 | Name[ne]=उप्डेट म्यानेजर
63 | Name[nl]=Bijwerkbeheer
64 | Name[nn]=Oppdateringshandsamar
65 | Name[oc]=Gestionari de mesas a jorn
66 | Name[pa]=ਅੱਪਡੇਟ ਮੈਨੇਜਰ
67 | Name[pl]=Menedżer aktualizacji
68 | Name[pt]=Gestor de atualizações
69 | Name[pt_BR]=Gerenciador de Atualizações
70 | Name[ro]=Administrator de actualizări
71 | Name[ru]=Менеджер обновлений
72 | Name[si]=යාවත්කාල කිරීම කළමනාකරනය
73 | Name[sk]=Správca aktualizácií
74 | Name[sl]=Upravljalnik posodobitev
75 | Name[so]=Agaasime Dalacsiiyaha
76 | Name[sq]=Menaxhuesi i Përditësimeve
77 | Name[sr]=Управник ажурирања
78 | Name[sr@latin]=Menadžer ažuriranja
79 | Name[sv]=Uppdateringshanterare
80 | Name[ta]=மேம்பாட்டு நிர்வகிப்பான்
81 | Name[te]=నవీకరణ నిర్వాహకం
82 | Name[tg]=Мудири навсозиҳо
83 | Name[th]=โปรแกรมจัดการการปรับปรุง
84 | Name[tl]=Tagapamahala ng Update
85 | Name[tr]=Güncelleme Yöneticisi
86 | Name[uk]=Диспетчер оновлень
87 | Name[ur]=اپڈیٹ منتظم
88 | Name[uz]=Yangilanish menejeri
89 | Name[vi]=Trình Quản lý Cập nhật
90 | Name[zh_CN]=更新管理器
91 | Name[zh_HK]=更新管理員
92 | Name[zh_TW]=更新管理員
93 | Comment=Show and install available updates
94 | Comment[af]=Wys en installeer beskikbare opdaterings
95 | Comment[am]=ዝግጁ የሆኑ ማሻሻያዎችን ማሳያ እና መግጠሚያ
96 | Comment[ar]=عرض التحديثات المتاحة وتثبيتها
97 | Comment[ast]=Amosar ya instalar los anovamientos disponibles
98 | Comment[be]=Паказаць і ўсталяваць даступныя абнаўленні
99 | Comment[bg]=Показване и инсталиране на наличните актуализации
100 | Comment[bn]=যে আপডেটসমূহ পাওয়া যাচ্ছে সেগুলো দেখাও এবং ইন্সটল কর
101 | Comment[bs]=Prikaži i instaliraj dostupne nadogradnje
102 | Comment[ca]=Vegeu i instal·leu les actualitzacions disponibles
103 | Comment[ca@valencia]=Vegeu i instal·leu les actualitzacions disponibles
104 | Comment[cs]=Zobrazit a nainstalovat dostupné aktualizace
105 | Comment[csb]=Wëskrzëni ë winstalëjë przëstãpné aktualizacëje
106 | Comment[cy]=Dangos a gosod y diweddariadau sydd ar gael
107 | Comment[da]=Vis og installér tilgængelige opdateringer
108 | Comment[de]=Verfügbare Aktualisierungen anzeigen und installieren
109 | Comment[el]=Εμφάνιση και εγκατάσταση διαθέσιμων ενημερώσεων
110 | Comment[eo]=Montri kaj instali disponeblajn ĝisdatigojn
111 | Comment[es]=Mostrar e instalar las actualizaciones disponibles
112 | Comment[et]=Saadaolevate uuenduste kuvamine ja paigaldamine
113 | Comment[eu]=Erakutsi eta instalatu eguneraketa eskuragarriak
114 | Comment[fa]=نمایش و نصب بهروزرسانیهای موجود
115 | Comment[fi]=Näytä ja asenna saatavilla olevat päivitykset
116 | Comment[fil]=Ipakita at i-install ang mga available na update
117 | Comment[fo]=Vís og legg inn tøkar dagførlsur
118 | Comment[fr]=Afficher et installer les mises à jour proposées
119 | Comment[fr_CA]=Afficher et installer les mises à jour proposées
120 | Comment[ga]=Taispeáin agus suiteáil nuashonruithe atá ar fáil
121 | Comment[gd]=Seall agus stàlaich ùrachaidhean a tha ri làimh
122 | Comment[gl]=Mostra e instala as actualizacións dispoñibles
123 | Comment[gv]=Soilshaghey as cur stoo noa ry-geddyn 'syn co`earrooder
124 | Comment[he]=הצגה והתקנת העדכונים הזמינים
125 | Comment[hi]=उपलब्ध अपडेट दिखाएँ व इंस्टॉल करें
126 | Comment[hr]=Prikaži i instaliraj dostupne nadopune
127 | Comment[hu]=Rendelkezésre álló frissítések megjelenítése és telepítése
128 | Comment[ia]=Monstrar e installar le actualisationes disponibile
129 | Comment[id]=Tampilkan dan instal pembaruan yang tersedia
130 | Comment[ie]=Monstrar e installar disponibil actualisamentes
131 | Comment[is]=Sýna og setja upp tiltækar uppfærslur
132 | Comment[it]=Visualizza e installa gli aggiornamenti disponibili
133 | Comment[ja]=利用可能なアップデートを表示・インストールします
134 | Comment[jv]=Nampilake lan masang penganyaran sing disediakno
135 | Comment[kab]=Sken u sbedd ileqman iwejden
136 | Comment[kk]=Жетімді жаңартуларды көрсету және орнату
137 | Comment[km]=បង្ហាញ និងដំឡើងបច្ចុប្បន្នភាពដែលមាន
138 | Comment[ko]=이용 가능한 업데이트를 보여주고 설치하기
139 | Comment[ku]=Rojanekirinên amade nîşan bide û saz bike
140 | Comment[ky]=Жеткиликтүү жаңылоолорду көрсөтүү жана орнотуу
141 | Comment[la]=Novationes paratas ostende et institue
142 | Comment[lo]=ສະແດງ ແລະ ຕິດຕັ້ງການອັບເດດທີ່ມີຢູ່
143 | Comment[lt]=Rodyti ir įdiegti prieinamus atnaujinimus
144 | Comment[lv]=Rādīt un instalēt pieejamos atjauninājumus
145 | Comment[mk]=Прикажи и инсталирај ги достапните надградби
146 | Comment[ml]=ലഭ്യമായ പുതുക്കലുകൾ പ്രദർശിപ്പിക്കുകയും ഇൻസ്റ്റോൾ ചെയ്യുകയും ചെയ്യുക
147 | Comment[mr]=अद्ययावतन दाखवा आणि स्थापित करा
148 | Comment[ms]=Tunjuk dan pasang kemaskini yang ada
149 | Comment[nb]=Vis og installer tilgjengelige oppdateringer
150 | Comment[nds]=Verfügbare Aktualisierungen anzeigen und installieren
151 | Comment[ne]=रहेका उप्डेट हरु देखौ अनी इन्स्तल्ल गर
152 | Comment[nl]=Beschikbare actualiseringen tonen en installeren
153 | Comment[nn]=Vis og installer tilgjengelege oppdateringar
154 | Comment[oc]=Afichar e installar las mesas a jorn disponiblas
155 | Comment[pa]=ਉਪਲੱਬਧ ਅੱਪਡੇਟ ਵੇਖੋ ਤੇ ਇੰਸਟਾਲ ਕਰੋ
156 | Comment[pl]=Wyświetl i zainstaluj dostępne aktualizacje
157 | Comment[pt]=Mostrar e instalar atualizações disponíveis
158 | Comment[pt_BR]=Exibir e instalar as atualizações disponíveis
159 | Comment[ro]=Arată și instalează actualizările disponibile
160 | Comment[ru]=Показать и установить доступные обновления
161 | Comment[si]=භවිතය සඳහ අති කට්ටල පෙන්වීම සහ ස්ථපනය කිරීම
162 | Comment[sk]=Zobraziť a inštalovať dostupné aktualizácie
163 | Comment[sl]=Pokaži in namesti razpoložljive posodobitve
164 | Comment[so]=Muuji shubna dhamaan dalacsiimadda la heli karo
165 | Comment[sq]=Shfaq dhe instalo përditësimet e disponueshme
166 | Comment[sr]=Прикажи и угради доступна ажурирања
167 | Comment[sr@latin]=Prikaži i instaliraj dostupna ažuriranja
168 | Comment[sv]=Visa och installera tillgängliga uppdateringar
169 | Comment[ta]=கிடைக்கும் மேம்பாடுகளை பட்டியலிட்டு நிறுவு
170 | Comment[te]=లభ్యతలో ఉన్న నవీకరణలను చూపించు మరియు స్థాపించు
171 | Comment[tg]=Намоиш додан ва насб кардани навсозиҳои дастрас
172 | Comment[th]=แสดงและติดตั้งรายการการปรับรุ่นทั้งหมดที่มี
173 | Comment[tl]=Ipakita at i-install ang mga update na mayroon
174 | Comment[tr]=Mevcut güncellemeleri göster ve kur
175 | Comment[uk]=Показати та встановити доступні оновлення
176 | Comment[ur]=دکھائیں اور انسٹال کریں دستاب کردہ اپڈیٹس
177 | Comment[uz]=Mavjud yangilanishlarni ko‘rsatish va o‘rnatish
178 | Comment[vi]=Hiện và cài đặt các bản cập nhật sẵn có
179 | Comment[zh_CN]=显示并安装可用更新
180 | Comment[zh_HK]=顯示並安裝可用的更新
181 | Comment[zh_TW]=顯示並安裝可用的更新
182 | Exec=mintupdate
183 | Icon=mintupdate
184 | Terminal=false
185 | Type=Application
186 | Encoding=UTF-8
187 | Categories=Application;System;Settings;XFCE;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;
188 | StartupNotify=false
189 | NotShowIn=KDE;
190 |
--------------------------------------------------------------------------------
/usr/share/icons/hicolor/scalable/status/mintupdate-type-package-symbolic.svg:
--------------------------------------------------------------------------------
1 |
2 |
130 |
--------------------------------------------------------------------------------
/usr/share/applications/mintupdate-kde.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Name=Update Manager
3 | Name[af]=Opdateringsbestuurder
4 | Name[am]=የማሻሻያ አስተዳዳሪ
5 | Name[ar]=مدير التحديث
6 | Name[ast]=Xestor d'anovamientos
7 | Name[az]=Yeniləmə İdarəçisi
8 | Name[be]=Кіраўнік абнаўленняў
9 | Name[bg]=Диспечер на актуализациите
10 | Name[bn]=আপডেট ব্যবস্থাপক
11 | Name[br]=Ardoer hizivadurioù
12 | Name[bs]=Menadžer nadogradnji
13 | Name[ca]=Gestor d'actualitzacions
14 | Name[ca@valencia]=Gestor d'actualitzacions
15 | Name[cs]=Správa aktualizací
16 | Name[csb]=Menedżera aktualizacëji
17 | Name[cy]=Rheolwr Diweddaru
18 | Name[da]=Opdateringshåndtering
19 | Name[de]=Aktualisierungsverwaltung
20 | Name[el]=Διαχειριστής Ενημερώσεων
21 | Name[eo]=Ĝisdatiga mastrumilo
22 | Name[es]=Gestor de actualizaciones
23 | Name[et]=Uuendamishaldur
24 | Name[eu]=Eguneraketa-kudeatzailea
25 | Name[fa]=مدیر بهروزرسانی
26 | Name[fi]=Päivitysten hallinta
27 | Name[fil]=Tagapamahala ng Update
28 | Name[fo]=Dagføringa fyrisiting
29 | Name[fr]=Gestionnaire de mise à jour
30 | Name[fr_CA]=Gestionnaire de mise à jour
31 | Name[ga]=Bainisteoir Nuashonraithe
32 | Name[gd]=Manaidsear nan ùrachaidhean
33 | Name[gl]=Xestor de actualizacións
34 | Name[gv]=Reireyder stoo noa
35 | Name[he]=מנהל עדכונים
36 | Name[hi]=अपडेट मैनेजर
37 | Name[hr]=Upravitelj nadopuna
38 | Name[hu]=Frissítéskezelő
39 | Name[ia]=Gestor de actualisation
40 | Name[id]=Manajer Pembaruan
41 | Name[ie]=Gerente de actualisamentes
42 | Name[is]=Uppfærslustjóri
43 | Name[it]=Gestore aggiornamenti
44 | Name[ja]=アップデートマネージャー
45 | Name[jv]=Penglola penganyaran
46 | Name[kab]=Amsefrak n ileqman
47 | Name[kk]=Жаңарту менеджері
48 | Name[km]=កម្មវិធីគ្រប់គ្រងបច្ចុប្បន្នភាព
49 | Name[ko]=업데이트 매니저
50 | Name[ku]=Rêveberiya Rojanekirinê
51 | Name[ky]=Жаңылоо менеджери
52 | Name[la]=Administrator Novationum
53 | Name[lo]=ຕົວຈັດການອັບເດດ
54 | Name[lt]=Atnaujinimų tvarkytuvė
55 | Name[lv]=Atjauninājumu pārvaldnieks
56 | Name[mk]=Менаџер за надградба
57 | Name[ml]=അപ്ഡേറ്റ് മാനേജർ
58 | Name[mr]=अद्ययावतीकरण प्रबंधक
59 | Name[ms]=Pengurus Kemaskini
60 | Name[nb]=Oppdateringsbehandler
61 | Name[nds]=Aktualisierungsverwaltung
62 | Name[ne]=उप्डेट म्यानेजर
63 | Name[nl]=Bijwerkbeheer
64 | Name[nn]=Oppdateringshandsamar
65 | Name[oc]=Gestionari de mesas a jorn
66 | Name[pa]=ਅੱਪਡੇਟ ਮੈਨੇਜਰ
67 | Name[pl]=Menedżer aktualizacji
68 | Name[pt]=Gestor de atualizações
69 | Name[pt_BR]=Gerenciador de Atualizações
70 | Name[ro]=Administrator de actualizări
71 | Name[ru]=Менеджер обновлений
72 | Name[si]=යාවත්කාල කිරීම කළමනාකරනය
73 | Name[sk]=Správca aktualizácií
74 | Name[sl]=Upravljalnik posodobitev
75 | Name[so]=Agaasime Dalacsiiyaha
76 | Name[sq]=Menaxhuesi i Përditësimeve
77 | Name[sr]=Управник ажурирања
78 | Name[sr@latin]=Menadžer ažuriranja
79 | Name[sv]=Uppdateringshanterare
80 | Name[ta]=மேம்பாட்டு நிர்வகிப்பான்
81 | Name[te]=నవీకరణ నిర్వాహకం
82 | Name[tg]=Мудири навсозиҳо
83 | Name[th]=โปรแกรมจัดการการปรับปรุง
84 | Name[tl]=Tagapamahala ng Update
85 | Name[tr]=Güncelleme Yöneticisi
86 | Name[uk]=Диспетчер оновлень
87 | Name[ur]=اپڈیٹ منتظم
88 | Name[uz]=Yangilanish menejeri
89 | Name[vi]=Trình Quản lý Cập nhật
90 | Name[zh_CN]=更新管理器
91 | Name[zh_HK]=更新管理員
92 | Name[zh_TW]=更新管理員
93 | Comment=Show and install available updates
94 | Comment[af]=Wys en installeer beskikbare opdaterings
95 | Comment[am]=ዝግጁ የሆኑ ማሻሻያዎችን ማሳያ እና መግጠሚያ
96 | Comment[ar]=عرض التحديثات المتاحة وتثبيتها
97 | Comment[ast]=Amosar ya instalar los anovamientos disponibles
98 | Comment[be]=Паказаць і ўсталяваць даступныя абнаўленні
99 | Comment[bg]=Показване и инсталиране на наличните актуализации
100 | Comment[bn]=যে আপডেটসমূহ পাওয়া যাচ্ছে সেগুলো দেখাও এবং ইন্সটল কর
101 | Comment[bs]=Prikaži i instaliraj dostupne nadogradnje
102 | Comment[ca]=Vegeu i instal·leu les actualitzacions disponibles
103 | Comment[ca@valencia]=Vegeu i instal·leu les actualitzacions disponibles
104 | Comment[cs]=Zobrazit a nainstalovat dostupné aktualizace
105 | Comment[csb]=Wëskrzëni ë winstalëjë przëstãpné aktualizacëje
106 | Comment[cy]=Dangos a gosod y diweddariadau sydd ar gael
107 | Comment[da]=Vis og installér tilgængelige opdateringer
108 | Comment[de]=Verfügbare Aktualisierungen anzeigen und installieren
109 | Comment[el]=Εμφάνιση και εγκατάσταση διαθέσιμων ενημερώσεων
110 | Comment[eo]=Montri kaj instali disponeblajn ĝisdatigojn
111 | Comment[es]=Mostrar e instalar las actualizaciones disponibles
112 | Comment[et]=Saadaolevate uuenduste kuvamine ja paigaldamine
113 | Comment[eu]=Erakutsi eta instalatu eguneraketa eskuragarriak
114 | Comment[fa]=نمایش و نصب بهروزرسانیهای موجود
115 | Comment[fi]=Näytä ja asenna saatavilla olevat päivitykset
116 | Comment[fil]=Ipakita at i-install ang mga available na update
117 | Comment[fo]=Vís og legg inn tøkar dagførlsur
118 | Comment[fr]=Afficher et installer les mises à jour proposées
119 | Comment[fr_CA]=Afficher et installer les mises à jour proposées
120 | Comment[ga]=Taispeáin agus suiteáil nuashonruithe atá ar fáil
121 | Comment[gd]=Seall agus stàlaich ùrachaidhean a tha ri làimh
122 | Comment[gl]=Mostra e instala as actualizacións dispoñibles
123 | Comment[gv]=Soilshaghey as cur stoo noa ry-geddyn 'syn co`earrooder
124 | Comment[he]=הצגה והתקנת העדכונים הזמינים
125 | Comment[hi]=उपलब्ध अपडेट दिखाएँ व इंस्टॉल करें
126 | Comment[hr]=Prikaži i instaliraj dostupne nadopune
127 | Comment[hu]=Rendelkezésre álló frissítések megjelenítése és telepítése
128 | Comment[ia]=Monstrar e installar le actualisationes disponibile
129 | Comment[id]=Tampilkan dan instal pembaruan yang tersedia
130 | Comment[ie]=Monstrar e installar disponibil actualisamentes
131 | Comment[is]=Sýna og setja upp tiltækar uppfærslur
132 | Comment[it]=Visualizza e installa gli aggiornamenti disponibili
133 | Comment[ja]=利用可能なアップデートを表示・インストールします
134 | Comment[jv]=Nampilake lan masang penganyaran sing disediakno
135 | Comment[kab]=Sken u sbedd ileqman iwejden
136 | Comment[kk]=Жетімді жаңартуларды көрсету және орнату
137 | Comment[km]=បង្ហាញ និងដំឡើងបច្ចុប្បន្នភាពដែលមាន
138 | Comment[ko]=이용 가능한 업데이트를 보여주고 설치하기
139 | Comment[ku]=Rojanekirinên amade nîşan bide û saz bike
140 | Comment[ky]=Жеткиликтүү жаңылоолорду көрсөтүү жана орнотуу
141 | Comment[la]=Novationes paratas ostende et institue
142 | Comment[lo]=ສະແດງ ແລະ ຕິດຕັ້ງການອັບເດດທີ່ມີຢູ່
143 | Comment[lt]=Rodyti ir įdiegti prieinamus atnaujinimus
144 | Comment[lv]=Rādīt un instalēt pieejamos atjauninājumus
145 | Comment[mk]=Прикажи и инсталирај ги достапните надградби
146 | Comment[ml]=ലഭ്യമായ പുതുക്കലുകൾ പ്രദർശിപ്പിക്കുകയും ഇൻസ്റ്റോൾ ചെയ്യുകയും ചെയ്യുക
147 | Comment[mr]=अद्ययावतन दाखवा आणि स्थापित करा
148 | Comment[ms]=Tunjuk dan pasang kemaskini yang ada
149 | Comment[nb]=Vis og installer tilgjengelige oppdateringer
150 | Comment[nds]=Verfügbare Aktualisierungen anzeigen und installieren
151 | Comment[ne]=रहेका उप्डेट हरु देखौ अनी इन्स्तल्ल गर
152 | Comment[nl]=Beschikbare actualiseringen tonen en installeren
153 | Comment[nn]=Vis og installer tilgjengelege oppdateringar
154 | Comment[oc]=Afichar e installar las mesas a jorn disponiblas
155 | Comment[pa]=ਉਪਲੱਬਧ ਅੱਪਡੇਟ ਵੇਖੋ ਤੇ ਇੰਸਟਾਲ ਕਰੋ
156 | Comment[pl]=Wyświetl i zainstaluj dostępne aktualizacje
157 | Comment[pt]=Mostrar e instalar atualizações disponíveis
158 | Comment[pt_BR]=Exibir e instalar as atualizações disponíveis
159 | Comment[ro]=Arată și instalează actualizările disponibile
160 | Comment[ru]=Показать и установить доступные обновления
161 | Comment[si]=භවිතය සඳහ අති කට්ටල පෙන්වීම සහ ස්ථපනය කිරීම
162 | Comment[sk]=Zobraziť a inštalovať dostupné aktualizácie
163 | Comment[sl]=Pokaži in namesti razpoložljive posodobitve
164 | Comment[so]=Muuji shubna dhamaan dalacsiimadda la heli karo
165 | Comment[sq]=Shfaq dhe instalo përditësimet e disponueshme
166 | Comment[sr]=Прикажи и угради доступна ажурирања
167 | Comment[sr@latin]=Prikaži i instaliraj dostupna ažuriranja
168 | Comment[sv]=Visa och installera tillgängliga uppdateringar
169 | Comment[ta]=கிடைக்கும் மேம்பாடுகளை பட்டியலிட்டு நிறுவு
170 | Comment[te]=లభ్యతలో ఉన్న నవీకరణలను చూపించు మరియు స్థాపించు
171 | Comment[tg]=Намоиш додан ва насб кардани навсозиҳои дастрас
172 | Comment[th]=แสดงและติดตั้งรายการการปรับรุ่นทั้งหมดที่มี
173 | Comment[tl]=Ipakita at i-install ang mga update na mayroon
174 | Comment[tr]=Mevcut güncellemeleri göster ve kur
175 | Comment[uk]=Показати та встановити доступні оновлення
176 | Comment[ur]=دکھائیں اور انسٹال کریں دستاب کردہ اپڈیٹس
177 | Comment[uz]=Mavjud yangilanishlarni ko‘rsatish va o‘rnatish
178 | Comment[vi]=Hiện và cài đặt các bản cập nhật sẵn có
179 | Comment[zh_CN]=显示并安装可用更新
180 | Comment[zh_HK]=顯示並安裝可用的更新
181 | Comment[zh_TW]=顯示並安裝可用的更新
182 | GenericName=Show and install available updates
183 | GenericName[af]=Wys en installeer beskikbare opdaterings
184 | GenericName[am]=ዝግጁ የሆኑ ማሻሻያዎችን ማሳያ እና መግጠሚያ
185 | GenericName[ar]=عرض التحديثات المتاحة وتثبيتها
186 | GenericName[ast]=Amosar ya instalar los anovamientos disponibles
187 | GenericName[be]=Паказаць і ўсталяваць даступныя абнаўленні
188 | GenericName[bg]=Показване и инсталиране на наличните актуализации
189 | GenericName[bn]=যে আপডেটসমূহ পাওয়া যাচ্ছে সেগুলো দেখাও এবং ইন্সটল কর
190 | GenericName[bs]=Prikaži i instaliraj dostupne nadogradnje
191 | GenericName[ca]=Vegeu i instal·leu les actualitzacions disponibles
192 | GenericName[ca@valencia]=Vegeu i instal·leu les actualitzacions disponibles
193 | GenericName[cs]=Zobrazit a nainstalovat dostupné aktualizace
194 | GenericName[csb]=Wëskrzëni ë winstalëjë przëstãpné aktualizacëje
195 | GenericName[cy]=Dangos a gosod y diweddariadau sydd ar gael
196 | GenericName[da]=Vis og installér tilgængelige opdateringer
197 | GenericName[de]=Verfügbare Aktualisierungen anzeigen und installieren
198 | GenericName[el]=Εμφάνιση και εγκατάσταση διαθέσιμων ενημερώσεων
199 | GenericName[eo]=Montri kaj instali disponeblajn ĝisdatigojn
200 | GenericName[es]=Mostrar e instalar las actualizaciones disponibles
201 | GenericName[et]=Saadaolevate uuenduste kuvamine ja paigaldamine
202 | GenericName[eu]=Erakutsi eta instalatu eguneraketa eskuragarriak
203 | GenericName[fa]=نمایش و نصب بهروزرسانیهای موجود
204 | GenericName[fi]=Näytä ja asenna saatavilla olevat päivitykset
205 | GenericName[fil]=Ipakita at i-install ang mga available na update
206 | GenericName[fo]=Vís og legg inn tøkar dagførlsur
207 | GenericName[fr]=Afficher et installer les mises à jour proposées
208 | GenericName[fr_CA]=Afficher et installer les mises à jour proposées
209 | GenericName[ga]=Taispeáin agus suiteáil nuashonruithe atá ar fáil
210 | GenericName[gd]=Seall agus stàlaich ùrachaidhean a tha ri làimh
211 | GenericName[gl]=Mostra e instala as actualizacións dispoñibles
212 | GenericName[gv]=Soilshaghey as cur stoo noa ry-geddyn 'syn co`earrooder
213 | GenericName[he]=הצגה והתקנת העדכונים הזמינים
214 | GenericName[hi]=उपलब्ध अपडेट दिखाएँ व इंस्टॉल करें
215 | GenericName[hr]=Prikaži i instaliraj dostupne nadopune
216 | GenericName[hu]=Rendelkezésre álló frissítések megjelenítése és telepítése
217 | GenericName[ia]=Monstrar e installar le actualisationes disponibile
218 | GenericName[id]=Tampilkan dan instal pembaruan yang tersedia
219 | GenericName[ie]=Monstrar e installar disponibil actualisamentes
220 | GenericName[is]=Sýna og setja upp tiltækar uppfærslur
221 | GenericName[it]=Visualizza e installa gli aggiornamenti disponibili
222 | GenericName[ja]=利用可能なアップデートを表示・インストールします
223 | GenericName[jv]=Nampilake lan masang penganyaran sing disediakno
224 | GenericName[kab]=Sken u sbedd ileqman iwejden
225 | GenericName[kk]=Жетімді жаңартуларды көрсету және орнату
226 | GenericName[km]=បង្ហាញ និងដំឡើងបច្ចុប្បន្នភាពដែលមាន
227 | GenericName[ko]=이용 가능한 업데이트를 보여주고 설치하기
228 | GenericName[ku]=Rojanekirinên amade nîşan bide û saz bike
229 | GenericName[ky]=Жеткиликтүү жаңылоолорду көрсөтүү жана орнотуу
230 | GenericName[la]=Novationes paratas ostende et institue
231 | GenericName[lo]=ສະແດງ ແລະ ຕິດຕັ້ງການອັບເດດທີ່ມີຢູ່
232 | GenericName[lt]=Rodyti ir įdiegti prieinamus atnaujinimus
233 | GenericName[lv]=Rādīt un instalēt pieejamos atjauninājumus
234 | GenericName[mk]=Прикажи и инсталирај ги достапните надградби
235 | GenericName[ml]=ലഭ്യമായ പുതുക്കലുകൾ പ്രദർശിപ്പിക്കുകയും ഇൻസ്റ്റോൾ ചെയ്യുകയും ചെയ്യുക
236 | GenericName[mr]=अद्ययावतन दाखवा आणि स्थापित करा
237 | GenericName[ms]=Tunjuk dan pasang kemaskini yang ada
238 | GenericName[nb]=Vis og installer tilgjengelige oppdateringer
239 | GenericName[nds]=Verfügbare Aktualisierungen anzeigen und installieren
240 | GenericName[ne]=रहेका उप्डेट हरु देखौ अनी इन्स्तल्ल गर
241 | GenericName[nl]=Beschikbare actualiseringen tonen en installeren
242 | GenericName[nn]=Vis og installer tilgjengelege oppdateringar
243 | GenericName[oc]=Afichar e installar las mesas a jorn disponiblas
244 | GenericName[pa]=ਉਪਲੱਬਧ ਅੱਪਡੇਟ ਵੇਖੋ ਤੇ ਇੰਸਟਾਲ ਕਰੋ
245 | GenericName[pl]=Wyświetl i zainstaluj dostępne aktualizacje
246 | GenericName[pt]=Mostrar e instalar atualizações disponíveis
247 | GenericName[pt_BR]=Exibir e instalar as atualizações disponíveis
248 | GenericName[ro]=Arată și instalează actualizările disponibile
249 | GenericName[ru]=Показать и установить доступные обновления
250 | GenericName[si]=භවිතය සඳහ අති කට්ටල පෙන්වීම සහ ස්ථපනය කිරීම
251 | GenericName[sk]=Zobraziť a inštalovať dostupné aktualizácie
252 | GenericName[sl]=Pokaži in namesti razpoložljive posodobitve
253 | GenericName[so]=Muuji shubna dhamaan dalacsiimadda la heli karo
254 | GenericName[sq]=Shfaq dhe instalo përditësimet e disponueshme
255 | GenericName[sr]=Прикажи и угради доступна ажурирања
256 | GenericName[sr@latin]=Prikaži i instaliraj dostupna ažuriranja
257 | GenericName[sv]=Visa och installera tillgängliga uppdateringar
258 | GenericName[ta]=கிடைக்கும் மேம்பாடுகளை பட்டியலிட்டு நிறுவு
259 | GenericName[te]=లభ్యతలో ఉన్న నవీకరణలను చూపించు మరియు స్థాపించు
260 | GenericName[tg]=Намоиш додан ва насб кардани навсозиҳои дастрас
261 | GenericName[th]=แสดงและติดตั้งรายการการปรับรุ่นทั้งหมดที่มี
262 | GenericName[tl]=Ipakita at i-install ang mga update na mayroon
263 | GenericName[tr]=Mevcut güncellemeleri göster ve kur
264 | GenericName[uk]=Показати та встановити доступні оновлення
265 | GenericName[ur]=دکھائیں اور انسٹال کریں دستاب کردہ اپڈیٹس
266 | GenericName[uz]=Mavjud yangilanishlarni ko‘rsatish va o‘rnatish
267 | GenericName[vi]=Hiện và cài đặt các bản cập nhật sẵn có
268 | GenericName[zh_CN]=显示并安装可用更新
269 | GenericName[zh_HK]=顯示並安裝可用的更新
270 | GenericName[zh_TW]=顯示並安裝可用的更新
271 | Exec=mintupdate
272 | Icon=mintupdate
273 | Terminal=false
274 | Type=Application
275 | Encoding=UTF-8
276 | Categories=System;
277 | StartupNotify=false
278 | OnlyShowIn=KDE;
279 |
--------------------------------------------------------------------------------
/usr/lib/linuxmint/mintUpdate/flatpak-update-worker.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import functools
4 | import os
5 | import argparse
6 | import json
7 | import sys
8 | import setproctitle
9 | from pathlib import Path
10 | import signal
11 | import locale
12 | import gettext
13 |
14 | import gi
15 | gi.require_version('GLib', '2.0')
16 | gi.require_version('Gtk', '3.0')
17 | gi.require_version('Flatpak', '1.0')
18 | from gi.repository import Gtk, GLib, Flatpak, Gio
19 |
20 | from mintcommon.installer import installer
21 | from mintcommon.installer import _flatpak
22 |
23 | from Classes import FlatpakUpdate
24 |
25 | # i18n
26 | APP = 'mintupdate'
27 | LOCALE_DIR = "/usr/share/locale"
28 | locale.bindtextdomain(APP, LOCALE_DIR)
29 | gettext.bindtextdomain(APP, LOCALE_DIR)
30 | gettext.textdomain(APP)
31 | _ = gettext.gettext
32 |
33 | setproctitle.setproctitle("flatpak-update-worker")
34 | GLib.set_application_name(_("Flatpak updates"))
35 |
36 | CHUNK_SIZE = 4096
37 |
38 | LOG_PATH = os.path.join(GLib.get_home_dir(), '.linuxmint', 'mintupdate', 'flatpak-updates.log')
39 |
40 | DEBUG_MODE = False
41 | try:
42 | DEBUG_MODE = os.environ["DEBUG"]
43 | except:
44 | pass
45 |
46 | def debug(*args):
47 | if not DEBUG_MODE:
48 | return
49 | sanitized = [str(arg) for arg in args if arg is not None]
50 | argstr = " ".join(sanitized)
51 | print("flatpak-update-worker (DEBUG): %s" % argstr, file=sys.stderr, flush=True)
52 |
53 | def warn(*args):
54 | sanitized = [str(arg) for arg in args if arg is not None]
55 | argstr = " ".join(sanitized)
56 | print("flatpak-update-worker (WARN): %s" % argstr, file=sys.stderr, flush=True)
57 |
58 | class FlatpakUpdateWorker():
59 | def __init__(self):
60 | self.installer = installer.Installer(installer.PKG_TYPE_FLATPAK)
61 | self.fp_sys = _flatpak.get_fp_sys()
62 | self.task = None
63 |
64 | self.cancellable = Gio.Cancellable()
65 |
66 | if not self.check_for_any_installed():
67 | self.send_to_updater("no-installed")
68 | self.cancellable.cancel()
69 | self.quit()
70 |
71 | self.stdin = Gio.UnixInputStream.new(sys.stdin.fileno(), True)
72 |
73 | self.updates = []
74 |
75 | def check_for_any_installed(self):
76 | try:
77 | installed = self.fp_sys.list_installed_refs(self.cancellable)
78 | except GLib.Error as e:
79 | warn("not able to list installed refs: (%d) %s" % (e.code, e.message))
80 | installed = []
81 |
82 | if len(installed) == 0:
83 | debug("no flatpaks installed, exiting without refreshing")
84 | return False
85 |
86 | debug("%d flatpaks installed, continuing" % len(installed))
87 | return True
88 |
89 | def refresh(self, init=True):
90 | if self.cancellable.is_cancelled():
91 | return
92 |
93 | self.fp_sys.cleanup_local_refs_sync(None)
94 | self.fp_sys.prune_local_repo(None)
95 |
96 | if init:
97 | self.installer.init_sync()
98 |
99 | self.installer.force_new_cache_sync()
100 |
101 | def fetch_updates(self):
102 | if self.cancellable.is_cancelled():
103 | return
104 |
105 | self.installer.connect("appstream-changed", self.on_appstream_loaded)
106 |
107 | if not self.installer.init_sync():
108 | warn("cache not valid, refreshing")
109 | self.installer.init()
110 | else:
111 | debug("cache valid")
112 |
113 | def on_appstream_loaded(self, installer):
114 | self.updates = []
115 | self.installer.select_flatpak_updates(None,
116 | self._fetch_task_ready, self._fetch_updates_error,
117 | None, None,
118 | use_mainloop=False)
119 |
120 | def _fetch_task_ready(self, task):
121 | debug("task object:", task, "transaction:", task.transaction)
122 |
123 | self.task = task
124 | self.error = task.error_message
125 |
126 | if self.error is None and task.transaction is not None:
127 | self._process_fetch_task(task)
128 |
129 | out = json.dumps(self.updates, default=lambda o: o.to_json(), indent=4)
130 | self.send_to_updater(out)
131 | else:
132 | self.send_to_updater(self.error)
133 |
134 | self.quit()
135 | debug("done generating updates", self.error)
136 |
137 | def _fetch_updates_error(self, task):
138 | warn("fetch error", task.error_message)
139 |
140 | def _process_fetch_task(self, task):
141 | trans = task.transaction
142 | ops = trans.get_operations()
143 |
144 | def cmp_ref_name(a, b):
145 | ref_a = Flatpak.Ref.parse(a.get_ref())
146 | ref_b = Flatpak.Ref.parse(b.get_ref())
147 | a_refstr_len = len(ref_a.get_name().split("."))
148 | b_refstr_len = len(ref_b.get_name().split("."))
149 |
150 | return a_refstr_len < b_refstr_len
151 |
152 | ops.sort(key=functools.cmp_to_key(cmp_ref_name))
153 | ops.sort(key=lambda op: Flatpak.Ref.parse(op.get_ref()).get_name())
154 |
155 | for op in ops:
156 | if op.get_operation_type() == Flatpak.TransactionOperationType.UPDATE:
157 | ref = Flatpak.Ref.parse(op.get_ref())
158 | debug("Update: ", op.get_ref(), ref.get_branch())
159 | try:
160 | installed_ref = self.fp_sys.get_installed_ref(ref.get_kind(),
161 | ref.get_name(),
162 | ref.get_arch(),
163 | ref.get_branch(),
164 | None)
165 | installed_ref.load_appdata()
166 | except GLib.Error as e:
167 | if e.code == Flatpak.Error.NOT_INSTALLED:
168 | installed_ref = None
169 |
170 | pkginfo = self.installer.find_pkginfo(ref.format_ref(), installer.PKG_TYPE_FLATPAK, remote=op.get_remote())
171 | try:
172 | update = FlatpakUpdate(op, self.installer, ref, installed_ref, None, pkginfo)
173 |
174 | if self.is_base_package(update) or (not self.add_to_parent_update(update)):
175 | self.updates.append(update)
176 | except Exception as e:
177 | warn("Problem creating FlatpakUpdate for %s: %s" % (ref.format_ref(), e))
178 |
179 | elif op.get_operation_type() == Flatpak.TransactionOperationType.INSTALL:
180 | ref = Flatpak.Ref.parse(op.get_ref())
181 | debug("Install: ", op.get_ref())
182 | try:
183 | remote_ref = self.fp_sys.fetch_remote_ref_sync(op.get_remote(),
184 | ref.get_kind(),
185 | ref.get_name(),
186 | ref.get_arch(),
187 | ref.get_branch(),
188 | None)
189 | except GLib.Error as e:
190 | debug("Can't add ref to install: %s" % e.message)
191 | remote_ref = None
192 |
193 | pkginfo = self.installer.find_pkginfo(ref.format_ref(), installer.PKG_TYPE_FLATPAK, remote=op.get_remote())
194 | try:
195 | update = FlatpakUpdate(op, self.installer, ref, None, remote_ref, pkginfo)
196 |
197 | if self.is_base_package(update) or (not self.add_to_parent_update(update)):
198 | self.updates.append(update)
199 | except Exception as e:
200 | warn("Problem creating FlatpakUpdate for %s: %s" % (ref.format_ref(), e))
201 | task.cancel()
202 |
203 | def add_to_parent_update(self, update):
204 | for maybe_parent in self.updates:
205 | if not update.ref_name.startswith(maybe_parent.ref_name):
206 | continue
207 |
208 | kf = update.metadata
209 |
210 | try:
211 | extension_of = kf.get_string("ExtensionOf", "ref")
212 | if extension_of == maybe_parent.ref.format_ref():
213 | maybe_parent.add_package(update)
214 | return True
215 | except:
216 | pass
217 |
218 | try:
219 | runtime_ref_id = "runtime/%s" % kf.get_string("Runtime", "runtime")
220 |
221 | parent_ref = maybe_parent.ref.format_ref()
222 | if parent_ref == runtime_ref_id:
223 | maybe_parent.add_package(update)
224 | return True
225 | except:
226 | pass
227 |
228 | def is_base_package(self, update):
229 | name = update.ref.format_ref()
230 | if name.startswith("app"):
231 | return True
232 | try:
233 | kf = update.metadata
234 | runtime_ref_id = "runtime/%s" % kf.get_string("Runtime", "runtime")
235 | if name == runtime_ref_id:
236 | return True
237 | except Exception:
238 | return False
239 |
240 | def prepare_start_updates(self, updates):
241 | if self.cancellable.is_cancelled():
242 | return
243 |
244 | debug("creating real update task")
245 | self.error = None
246 |
247 | self.installer.select_flatpak_updates(updates,
248 | self._start_task_ready, self._start_updates_error,
249 | self._execute_finished, None)
250 |
251 | def _start_task_ready(self, task):
252 | self.task = task
253 | self.send_to_updater("ready")
254 |
255 | self.stdin.read_bytes_async(4096, GLib.PRIORITY_DEFAULT, None, self.message_from_updater)
256 |
257 | def _start_updates_error(self, task):
258 | warn("start updates error", task.error_message)
259 | self.send_to_updater(f"error:{task.error_message}")
260 |
261 | def start_updates(self):
262 | self.installer.execute_task(self.task)
263 |
264 | def _execute_finished(self, task):
265 | self.error = task.error_message
266 | if task.error_message is not None:
267 | self.send_to_updater(f"error:{task.error_message}")
268 | else:
269 | self.send_to_updater("done")
270 | self.write_to_log(task)
271 | self.quit()
272 |
273 | def write_to_log(self, task):
274 | try:
275 | entries = task.get_transaction_log()
276 | except:
277 | return
278 |
279 | directory = Path(LOG_PATH).parent
280 |
281 | try:
282 | os.makedirs(directory, exist_ok=True)
283 | with open(LOG_PATH, "a") as f:
284 | for entry in entries:
285 | f.write("%s\n" % entry)
286 | except Exception as e:
287 | warn("Can't write to flatpak update log:", e)
288 |
289 | def send_to_updater(self, msg):
290 | print(msg, flush=True)
291 |
292 | def message_from_updater(self, pipe, res):
293 | if self.cancellable is None or self.cancellable.is_cancelled():
294 | return
295 |
296 | try:
297 | bytes_read = pipe.read_bytes_finish(res)
298 | except GLib.Error as e:
299 | if e.code != Gio.IOErrorEnum.CANCELLED:
300 | warn("Error reading from updater: %s" % e.message)
301 | return
302 |
303 | if bytes_read:
304 | message = bytes_read.get_data().decode().strip("\n")
305 | debug("receiving from updater: '%s'" % message)
306 |
307 | if message == "confirm":
308 | self.confirm_start()
309 | elif message == "start":
310 | self.start_updates()
311 |
312 | pipe.read_bytes_async(4096, GLib.PRIORITY_DEFAULT, self.cancellable, self.message_from_updater)
313 |
314 | def quit(self, data=None):
315 | GLib.timeout_add(0, self.quit_on_ml)
316 |
317 | def quit_on_ml(self):
318 | if self.task:
319 | self.task.cancel()
320 |
321 | self.cancellable.cancel()
322 | Gtk.main_quit()
323 |
324 | if __name__ == "__main__":
325 | parser = argparse.ArgumentParser(description="Flatpak worker for mintupdate")
326 | parser.add_argument("-d", "--debug", help="Print debugging information.",
327 | action="store_true")
328 | parser.add_argument("-r", "--refresh", help="Refresh local flatpak cache and appstream info.",
329 | action="store_true")
330 | parser.add_argument("-f", "--fetch-updates", help="Get a json list of update info.",
331 | action="store_true")
332 | parser.add_argument("-u", "--update-packages", help="Updates packages - one or more flatpak ref strings must be supplied. "
333 | "This process will remain running for communication.",
334 | action="store_true")
335 |
336 | parser.add_argument('refs', metavar='ref', type=str, nargs='*', help='refs to update')
337 | args = parser.parse_args()
338 |
339 | updater = FlatpakUpdateWorker()
340 | GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGTERM, updater.quit, None)
341 |
342 | if args.refresh:
343 | try:
344 | updater.refresh()
345 | exit(0)
346 | except Exception as e:
347 | print(e)
348 | exit(1)
349 | elif args.fetch_updates:
350 | updater.fetch_updates()
351 | elif args.update_packages:
352 | if len(args.refs) == 0:
353 | print("Expected one or more space-separated flatpak refs")
354 | exit(1)
355 | updater.prepare_start_updates(args.refs)
356 | else:
357 | print("nothing to do")
358 | exit(0)
359 |
360 | try:
361 | Gtk.main()
362 | except KeyboardInterrupt:
363 | Gtk.main_quit()
364 |
365 | exit(0)
366 |
--------------------------------------------------------------------------------