216 Commits

Author SHA1 Message Date
Alexandre Arnt
6341f8ad9e - Bugfix in refresh 2025-10-18 11:03:08 -03:00
Alexandre Arnt
8afef025a7 - Updated tx 2025-10-18 09:59:40 -03:00
Alexandre Arnt
22791cdbda Updated tx 2025-10-17 20:14:59 -03:00
Alexandre Arnt
d8b4782142 - Change UI option name 2025-10-17 18:37:40 -03:00
Alexandre Arnt
d333d47760 Updated tx 2025-10-17 18:16:17 -03:00
Alexandre Arnt
5540fa8c1b New screenshot 2025-10-17 14:18:40 -03:00
Alexandre Arnt
252fce719c - Small fixes 2025-10-13 13:28:22 -03:00
Alexandre Arnt
572bdabc3b Bugfix in check updates 2025-10-11 16:04:55 -03:00
Alexandre Arnt
45c472ae29 - Bugfix in AUR outdated list 2025-10-11 15:38:42 -03:00
Alexandre Arnt
e4482c4be8 - Bugfixes 2025-10-11 15:33:48 -03:00
Alexandre Arnt
bb7cbee491 - Bugfixes 2025-10-11 11:35:00 -03:00
Alexandre Arnt
9f97fa93af - Bugfixes 2025-10-11 10:22:56 -03:00
Alexandre Arnt
f406cacd91 - Bugfix 2025-10-10 22:14:18 -03:00
Alexandre Arnt
9ea4e2ced0 - bugfix 2025-10-10 22:04:03 -03:00
Alexandre Arnt
219539db7c - Bugfix 2025-10-10 21:55:00 -03:00
Alexandre Arnt
d704996a71 - Make checkupdates available in AUR mode 2025-10-10 21:43:00 -03:00
Alexandre Arnt
cb555b10fa - Condensed text fixes 2025-10-10 16:14:27 -03:00
Alexandre Arnt
02d0413706 Updated CHANGELOG 2025-10-09 14:35:55 -03:00
Alexandre Arnt
eba4b23398 Updated tx 2025-10-09 14:32:53 -03:00
Alexandre Arnt
3509f956d1 - Add the option to make the whole interface text less condensed. 2025-10-09 14:30:55 -03:00
Alexandre Arnt
133a32d1bb Updated changelog 2025-10-09 10:32:00 -03:00
Alexandre Arnt
a7846c9318 Merge pull request #607 from valchx/valchx/show-current-version-on-system-updates
Show current version of the packages on the System Upgrade window
2025-10-09 10:28:39 -03:00
Alexandre Arnt
97dbbb0e28 - Parser fix 2025-10-08 18:33:43 -03:00
Alexandre Arnt
8ec0c319e4 - BugFix in getting news 2025-10-08 17:59:13 -03:00
Valentin Charoux
99ae4eea09 show current version of package on system update 2025-10-08 22:14:20 +02:00
Alexandre Arnt
7ef564da38 - 0.19... 2025-10-08 17:10:26 -03:00
Alexandre Arnt
46c163548c - Use terminal font in output dialog 2025-10-08 17:06:04 -03:00
Alexandre Arnt
2cebca86ba - BugFix: There was a method called more than once every time distro
news was checked.
2025-10-08 16:44:18 -03:00
Alexandre Arnt
19bff087c8 - BugFix: Octopi crashed after using AUR/KCP tool and clicking on a
package anchor in Output tab.
2025-10-08 15:23:52 -03:00
Alexandre Arnt
a6c6384888 - Add Repository field in Info tab. 2025-10-08 14:52:37 -03:00
Alexandre Arnt
8c89906b21 - Add the option to show/hide "Repository" and "Download Size" columns
in package list.
2025-10-08 14:07:57 -03:00
Alexandre Arnt
6c9af10ef0 - Text spacing fixes 2025-10-08 11:27:15 -03:00
Alexandre Arnt
46bbc195a0 updated tx 2025-10-08 09:46:39 -03:00
Alexandre Arnt
73c7f7cfb8 Updated tx 2025-10-04 09:59:37 -03:00
Alexandre Arnt
6f35213ecc - BugFix: Some outdated AUR pkgs were not showing on notifier (thanks to
urbenlegend).
2025-10-04 09:33:40 -03:00
Alexandre Arnt
97c11f0f10 BugFix: Let's not get a description as a pkgname 2025-10-03 17:57:05 -03:00
Alexandre Arnt
dec6656a44 UI changes 2025-10-03 15:21:14 -03:00
Alexandre Arnt
0875030993 - BugFix: Search for BASH also in "/bin". 2025-09-29 17:47:12 -03:00
Alexandre Arnt
4fd9bc265c - BugFix: Under some conditions Octopi could crash due to shared memory
access failures.
2025-09-29 17:28:04 -03:00
Alexandre Arnt
8781695048 Merge branch 'master' of https://github.com/aarnt/octopi 2025-09-28 20:54:20 -03:00
Alexandre Arnt
4fa4562e65 - Parser fixes 2025-09-28 20:54:07 -03:00
Alexandre Arnt
196e282924 - BugFix: List of outdated KCP packages was not working in KaOS. 2025-09-28 18:17:17 -03:00
Alexandre Arnt
3fc49cb3aa Parser fix 2025-09-28 17:16:47 -03:00
Alexandre Arnt
ab31f28308 Release prep 2025-09-28 16:30:06 -03:00
Alexandre Arnt
dc23455cce Release prep 2025-09-28 16:14:20 -03:00
Alexandre Arnt
51f4d66d1a - BugFix: Force use of BASH shell was not working (thanks to
UnsaltedScholar).
2025-09-28 15:59:44 -03:00
Alexandre Arnt
7aef1f07f8 - Important bugfixes 2025-09-28 12:52:48 -03:00
Alexandre Arnt
1ff216543d Bugfix in french tx 2025-09-28 11:11:12 -03:00
Alexandre Arnt
275655ff61 new dev cycle 2025-09-26 14:10:20 -03:00
Alexandre Arnt
5fefb275c2 Updated tx 2025-09-25 17:29:50 -03:00
Alexandre Arnt
6466b3604f Release prep 2025-09-20 15:30:00 -03:00
Alexandre Arnt
93726ee571 Updated tx and README 2025-09-16 19:22:25 -03:00
Alexandre Arnt
0146c29419 - Parser fix 2025-09-15 18:04:11 -03:00
Alexandre Arnt
e54977c340 - new screenshot 2025-09-15 17:46:39 -03:00
Alexandre Arnt
5b3bc51990 - BugFix in helper 2025-09-15 17:16:22 -03:00
Alexandre Arnt
7b365a1f14 - Disable About from Notifier 2025-09-15 16:53:26 -03:00
Alexandre Arnt
e4fdedaf33 - Bugfixes 2025-09-15 16:13:53 -03:00
Alexandre Arnt
848239572d - BugFix in parser 2025-09-15 15:40:32 -03:00
Alexandre Arnt
e1d9e85945 - BugFix in parser code. 2025-09-15 15:29:04 -03:00
Alexandre Arnt
42a7c320d9 - BugFix in enable/disable UI 2025-09-15 14:54:31 -03:00
Alexandre Arnt
d03b5a84d0 Bugfix 2025-09-15 11:37:37 -03:00
Alexandre Arnt
1e6b2db303 Changed resource name 2025-09-14 08:54:28 -03:00
Alexandre Arnt
a6785e9b7c Changed resource name 2025-09-14 08:50:00 -03:00
Alexandre Arnt
c25ed66c0c - BugFix in search method save logic 2025-09-12 11:24:15 -03:00
Alexandre Arnt
4df0d961e6 Add octopi icon 2025-09-12 10:43:19 -03:00
Alexandre Arnt
aea5e70748 - BugFix 2025-09-11 20:19:20 -03:00
Alexandre Arnt
e9136182c9 - Bugfix 2025-09-11 20:09:46 -03:00
Alexandre Arnt
86288068fa - Added support for garuda-update command when running in Garuda Linux. 2025-09-11 18:51:49 -03:00
Alexandre Arnt
331bec30c8 Added pre-system-upgrade example script 2025-09-11 17:42:10 -03:00
Alexandre Arnt
7cae2d7586 Updated tx 2025-09-11 15:56:34 -03:00
Alexandre Arnt
1b202a25f8 Updated tx 2025-09-11 14:35:22 -03:00
Alexandre Arnt
fae056ec81 - Search option selected by the user is saved on close. 2025-09-10 20:13:48 -03:00
Alexandre Arnt
9dcf3ed14d Updated tx 2025-09-10 09:10:04 -03:00
Alexandre Arnt
f19e55220e - Updated tx 2025-09-08 18:21:02 -03:00
Alexandre Arnt
6938c1f833 - Bugfix in context menu 2025-09-08 18:17:38 -03:00
Alexandre Arnt
7208096fdc - Bugfixes in KCP code 2025-09-08 17:49:16 -03:00
Alexandre Arnt
c4a9677667 Bugfix 2025-09-08 17:11:17 -03:00
Alexandre Arnt
0993cda3a0 - Updated tx 2025-09-08 16:52:52 -03:00
Alexandre Arnt
8bed4c0e46 - Bugfix 2025-09-08 16:14:12 -03:00
Alexandre Arnt
9fdd1a5e89 - bugfix 2025-09-08 16:10:37 -03:00
Alexandre Arnt
1cb421c284 - Added View/Ignored menu option. 2025-09-08 15:29:05 -03:00
Alexandre Arnt
20c2472aa1 Updated screenshot 2025-09-05 18:09:46 -03:00
Alexandre Arnt
dcb99d28ec - Release preparation 2025-09-05 17:40:16 -03:00
Alexandre Arnt
d7e103388a Updated tx 2025-09-05 17:23:36 -03:00
Alexandre Arnt
1ec036202b Updated tx 2025-09-04 17:17:30 -03:00
Alexandre Arnt
a783507d60 Updated tx 2025-09-04 13:04:39 -03:00
Alexandre Arnt
b2c82af9f4 Updated tx 2025-09-04 09:57:38 -03:00
Alexandre Arnt
aaf1e5f6d6 - Bugfix in KaOS rss 2025-09-01 18:46:09 -03:00
Alexandre Arnt
197398e3bc - Bugfix 2025-09-01 18:38:39 -03:00
Alexandre Arnt
38308ac0d0 - Update KaOS rss url 2025-09-01 18:33:03 -03:00
Alexandre Arnt
e0e97795f3 - BugFix 2025-09-01 14:21:18 -03:00
Alexandre Arnt
0b02c78704 - Bugfix in helper 2025-09-01 14:06:27 -03:00
Alexandre Arnt
c7f101f67f Release prep 2025-09-01 13:54:20 -03:00
Alexandre Arnt
ee70dc46a2 - Bugfix 2025-09-01 10:00:28 -03:00
Alexandre Arnt
aafa8522ea Updated tx 2025-09-01 09:25:13 -03:00
Alexandre Arnt
b9b4913bbc Updated tx 2025-08-31 16:50:24 -03:00
Alexandre Arnt
cdc2013cbb - Updated tx 2025-08-29 17:53:30 -03:00
Alexandre Arnt
04adf88088 - Updated tx 2025-08-29 17:50:55 -03:00
Alexandre Arnt
a1d064fbe0 - Updated tx 2025-08-29 17:49:32 -03:00
Alexandre Arnt
150763f0e3 - Added another cmd 2025-08-29 16:37:51 -03:00
Alexandre Arnt
c3afa378d1 - Added support for a user specified backup shell script that needs to
be placed at "/usr/lib/octopi/pre-system-upgrade-script.sh" and executes
before the system upgrades.
2025-08-29 16:00:14 -03:00
Alexandre Arnt
70b8bc97ae - Bugfixes in options dialog. 2025-08-29 11:30:18 -03:00
Alexandre Arnt
256e862382 - Added "Get Latest distro news" menu item to the News tab context menu. 2025-08-29 11:06:04 -03:00
Alexandre Arnt
569e5fe133 - Bugfix 2025-08-29 10:57:34 -03:00
Alexandre Arnt
0d7dd83354 - Added support for Plus and Minus keys to add and remove packages from
the system.
2025-08-29 10:18:37 -03:00
Alexandre Arnt
241ae97423 - Bugfix 2025-08-29 10:00:30 -03:00
Alexandre Arnt
11867b1ee6 - Added support for pacman.conf's IgnorePkg option through "Add to
Ignored" and "Remove from Ignored" actions from the context menu in the
package list.
2025-08-29 09:53:01 -03:00
Alexandre Arnt
603c477ef0 - Initial support for IgnorePkg 2025-08-28 16:00:49 -03:00
Alexandre Arnt
be52ee78a7 - BugFix: Use system theme folder icon in Files tab.
- BugFix: Package list refresh was not running after a group install/
removal.
2025-08-25 19:55:36 -03:00
Alexandre Arnt
840aef9bb9 - Added Apply and Cancel buttons also in the Actions tab. 2025-08-25 17:53:11 -03:00
Alexandre Arnt
dfeb189940 - Updated tx 2025-08-25 13:07:30 -03:00
Alexandre Arnt
07161db266 - BugFix: Make Actions tab visible when a package is selected for
insertion/removal.
2025-08-25 10:55:54 -03:00
Alexandre Arnt
77f6ea88aa - Bugfix 2025-08-25 10:32:08 -03:00
Alexandre Arnt
139950ab25 - BugFix: select Help tab when Octopi runs for the first time. 2025-08-25 10:01:36 -03:00
Alexandre Arnt
c22834118c - BugFix: Use user-selected search option while octopi is running. 2025-08-24 20:23:13 -03:00
Alexandre Arnt
e156b543f5 - Added Tools/pacman-key option to refresh pacman gpg keys. 2025-08-24 18:36:19 -03:00
Alexandre Arnt
4d3278567b - Bugfix 2025-08-24 16:48:33 -03:00
Alexandre Arnt
ce66ccbf03 - Modernization of Options dialog. 2025-08-24 16:36:03 -03:00
Alexandre Arnt
f83f596ce8 Updated tx 2025-08-24 10:30:57 -03:00
Alexandre Arnt
9c047a024c - Debug for pkg contents size 2025-08-22 17:58:12 -03:00
Alexandre Arnt
d4a32751f3 - new defaults 2025-08-22 15:53:03 -03:00
Alexandre Arnt
ab9f709dc2 - Fix icons dir 2025-08-22 13:44:52 -03:00
Alexandre Arnt
bcb2217f49 Updated tx 2025-08-22 13:29:52 -03:00
Alexandre Arnt
dce264509f - Removed unused code and added test code. 2025-08-22 13:25:15 -03:00
Alexandre Arnt
927f208f78 - Bugfix 2025-08-22 11:43:43 -03:00
Alexandre Arnt
93b42b40d4 - Log 2025-08-22 11:40:32 -03:00
Alexandre Arnt
3184a4b17e - Bugfix 2025-08-22 11:32:26 -03:00
Alexandre Arnt
18b4d36f85 - Bugfix in code. 2025-08-22 11:24:21 -03:00
Alexandre Arnt
4c7f7e2b09 - Bugfix in code. 2025-08-22 10:29:06 -03:00
Alexandre Arnt
faa80775a5 - Fix tool name 2025-08-22 10:25:10 -03:00
Alexandre Arnt
7ab4e7fce5 - Adjust for new code. 2025-08-22 10:06:54 -03:00
Alexandre Arnt
cc105bf2e1 - BugFix: Use better way to detect if user is running the tools from the
right place.
2025-08-22 09:44:05 -03:00
Alexandre Arnt
367e8ad750 Updated tx 2025-08-22 09:11:45 -03:00
Alexandre Arnt
6892f5f3c1 - bugfix 2025-08-21 20:13:04 -03:00
Alexandre Arnt
b23353a1f5 - Added CachyOS options. 2025-08-21 20:10:37 -03:00
Alexandre Arnt
9986b1a2cb Updated tx 2025-08-21 18:57:28 -03:00
Alexandre Arnt
4d67fa44e4 Updated tx 2025-08-21 18:21:45 -03:00
Alexandre Arnt
993b95420f - BugFix: qt-sudo now respects user locale settings. 2025-08-21 16:52:00 -03:00
Alexandre Arnt
f4462b9379 - Added "Enable package tooltips" option, so users can disable the
feature when needed.
- Added "Force use of BASH shell" option to ensure compatibility when
the user uses another SHELL.
2025-08-21 15:34:25 -03:00
Alexandre Arnt
c43d148dd7 - Removed debug msg. 2025-08-21 14:29:22 -03:00
Alexandre Arnt
a508fb7b11 - Removed buggy strings. 2025-08-21 14:23:47 -03:00
Alexandre Arnt
6590909116 - Removed non working test. 2025-08-21 14:07:16 -03:00
Alexandre Arnt
44df329672 Merge branch 'master' of https://github.com/aarnt/octopi 2025-08-11 13:59:25 -03:00
Alexandre Arnt
96896f8a87 Updated tx 2025-08-11 13:59:16 -03:00
Alexandre Arnt
448c620c8a Updated README file 2025-05-30 15:46:08 -03:00
Alexandre Arnt
2ec8dbde08 Updated tx 2025-05-25 08:39:09 -03:00
Alexandre Arnt
48fc54d24b - BugFix: Notifier did not fetch updates for the first time when using
"once a day".
2025-05-10 11:44:04 -03:00
Alexandre Arnt
79dd707276 Updated tx 2025-05-10 10:27:57 -03:00
Alexandre Arnt
b1a6fb069c Updated tx 2025-04-26 10:38:16 -03:00
Alexandre Arnt
fb46f9acaa Updated tx 2025-03-15 10:38:54 -03:00
Alexandre Arnt
c86d07aac7 Trying one more time to handle aur params in zsh shell 2025-02-24 11:08:14 -03:00
Alexandre Arnt
c1f24851ea tx 2025-02-22 08:22:21 -03:00
Alexandre Arnt
771b7894ba - Bugfix in test 2025-02-20 19:12:24 -03:00
Alexandre Arnt
aed9f6e27c - BugFix: The act of moving the mouse over the package list was
triggering many "pacman -Si" executions (thanks to RAZUMNO)
2025-02-20 11:03:46 -03:00
Alexandre Arnt
f481213f69 Another cycle begins... 2025-02-19 11:17:21 -03:00
Alexandre Arnt
ab61b62e6d Update tx 2025-02-19 11:12:54 -03:00
Alexandre Arnt
dfb20233f8 Release date 2025-02-18 13:06:33 -03:00
Alexandre Arnt
9c7ed8cfaf - Remove ampersand from Options menu in notifier 2025-02-18 11:23:10 -03:00
Alexandre Arnt
3f25b41b31 Updated file 2025-02-17 19:50:35 -03:00
Alexandre Arnt
3283bec5a5 - Updated tx and release-translations.sh util. 2025-02-17 17:22:26 -03:00
Alexandre Arnt
ec61b6d688 - Clean unused code 2025-02-17 17:15:33 -03:00
Alexandre Arnt
b61d4601e2 Release prep 2025-02-15 19:34:50 -03:00
Alexandre Arnt
938c2403e0 Updated tx 2025-02-15 19:12:59 -03:00
Alexandre Arnt
8f13832c20 Release prep 2025-02-14 17:37:46 -03:00
Alexandre Arnt
2f2709faf1 Updated tx 2025-02-14 17:35:20 -03:00
Alexandre Arnt
c3fd32dc41 Updated tx 2025-02-13 18:46:29 -03:00
Alexandre Arnt
72287b3b88 - Do not translate 2 strings 2025-02-13 18:29:49 -03:00
Alexandre Arnt
4efd887252 - Adjust notifier too 2025-02-13 17:34:28 -03:00
Alexandre Arnt
ab08faaa5b - New str 2025-02-13 17:24:14 -03:00
Alexandre Arnt
6ca2083e03 - Added option to always use the terminal when executing pacman actions. 2025-02-13 17:01:51 -03:00
Alexandre Arnt
2fb3fdc98f - "Always Use the Terminal" code begins. 2025-02-12 19:53:21 -03:00
Alexandre Arnt
3853ca6ebd - Prefer BASH shell when executing commands. 2025-01-19 10:47:37 -03:00
Alexandre Arnt
da166f3f12 Updated tx 2025-01-05 11:04:51 -03:00
Alexandre Arnt
caec196c2e Merge pull request #577 from Integral-Tech/qstring-refactor
refactor: use arg() to enhance readability of string concatenation
2025-01-04 10:44:46 -03:00
Alexandre Arnt
190a7212eb Updated tx 2025-01-04 10:14:00 -03:00
Alexandre Arnt
3d14a55613 Udpated tx 2024-12-22 15:41:18 -03:00
Alexandre Arnt
944b792fb6 Udpated tx 2024-12-21 08:40:16 -03:00
Integral
35e7f07dda refactor: use arg() to enhance readability of string concatenation 2024-12-19 00:59:00 +08:00
Alexandre Arnt
011e7f0ab3 Merge pull request #576 from Integral-Tech/qstring-refactor
refactor: remove redundant QString() constructor calls
2024-12-18 13:15:29 -03:00
Integral
0619e7abef refactor: remove redundant QString() constructor calls 2024-12-18 21:09:37 +08:00
Alexandre Arnt
5afd387086 - Improvement: Let user choose which domain is pinged when checking for
internet access (if ping.archlinux.org is down).
2024-12-15 11:42:55 -03:00
Alexandre Arnt
9f8ca68053 Updated tx 2024-12-15 10:07:01 -03:00
Alexandre Arnt
6ef685235e - BugFix in aurtool params. 2024-11-09 11:33:49 -03:00
Alexandre Arnt
71451bc6b2 Updated tx 2024-11-03 08:55:44 -03:00
Alexandre Arnt
981c27d5db - Added "--editmenu" checkbox on Options dialog if you are using Yay
tool.
2024-10-05 12:22:29 -03:00
Alexandre Arnt
d98b35416f Updated tx 2024-09-28 17:28:06 -03:00
Alexandre Arnt
036ad9fa9e Updated tx 2024-09-15 10:19:20 -03:00
Alexandre Arnt
742c0c9450 Updated tx 2024-09-11 19:09:53 -03:00
Alexandre Arnt
5e2bc3d28d Updated tx 2024-09-11 18:30:12 -03:00
Alexandre Arnt
aa79b18143 - Warning busting. 2024-09-11 17:31:12 -03:00
Alexandre Arnt
8b42b92441 - Fix on play bell sound code. 2024-09-11 14:43:12 -03:00
Alexandre Arnt
ea20c392fe - Add "Play a bell sound" option to the General tab on optionsdialog. 2024-09-11 14:38:16 -03:00
Alexandre Arnt
4fe3873793 - Play a bell sound when the Terminal tab is asking for the user
password.
2024-09-09 20:13:41 -03:00
Alexandre Arnt
d984e110cb Updated tx 2024-09-08 08:54:08 -03:00
Alexandre Arnt
307d00c930 - Use "pacman -Qi" for "outdated" and "newer" pkgs. 2024-08-31 20:30:53 -03:00
Alexandre Arnt
ded9985f1d Updated tx 2024-08-31 09:56:02 -03:00
Alexandre Arnt
1737c189d6 Updated tx 2024-08-27 17:05:48 -03:00
Alexandre Arnt
fef6647228 - Updated tx. 2024-08-27 10:53:31 -03:00
Alexandre Arnt
22d8dbeb7b - BugFix: Help msg for newer packages was wrong because they're not
installed.
2024-08-27 10:30:17 -03:00
Alexandre Arnt
11f0244c14 Merge branch 'master' of https://github.com/aarnt/octopi 2024-08-26 14:42:07 -03:00
Alexandre Arnt
e92ae9e2ad Updated tx 2024-08-26 14:41:59 -03:00
Alexandre Arnt
da22dd0494 Merge pull request #566 from adolfintel/master
Use ping.archlinux.org for connectivity check
2024-08-21 11:33:33 -03:00
Federico Dossena
da78109d95 Use ping.archlinux.org for connectivity check 2024-08-21 10:34:22 +02:00
Alexandre Arnt
cb75753731 Updated tx 2024-08-15 17:39:57 -03:00
Alexandre Arnt
a2ef33a2c9 Merge pull request #565 from utuhiro78/master
Fix the Transifex page
2024-08-13 13:38:26 -03:00
utuhiro78
9e78ec4399 Fix the Transifex page 2024-08-13 18:04:19 +09:00
Alexandre Arnt
9fd06ba0a6 Updated tx 2024-08-03 10:05:33 -03:00
Alexandre Arnt
ef303c9cbe - Update parser. 2024-07-28 12:02:49 -03:00
Alexandre Arnt
5b95de1dc8 Updated pt_BR tx 2024-07-27 22:13:33 -03:00
Alexandre Arnt
7ea04ad750 - String fix 2024-07-21 10:06:15 -03:00
Alexandre Arnt
886b111b78 - BugFix: Code for EndeavorOS news was incomplete (thanks to
LegitGreenBoi).
2024-07-21 10:05:04 -03:00
Alexandre Arnt
bbd78805bf Updated tx 2024-07-13 15:15:33 -03:00
Alexandre Arnt
a09e782ead Updated tx 2024-06-30 10:15:12 -03:00
Alexandre Arnt
10b51b1416 - Improvement: Show a "Collecting transaction data..." msg before
presenting the transaction dialog, as it can be quite slow on some
systems (thanks to Valdir).
2024-06-23 19:49:12 -03:00
Alexandre Arnt
429bd605d4 Updated CHANGELOG 2024-06-20 19:30:17 -03:00
Alexandre Arnt
a12054032a Updated tx 2024-06-20 19:27:39 -03:00
423 changed files with 94251 additions and 14035 deletions

7
.gitignore vendored
View File

@@ -4,7 +4,9 @@
Makefile
bin/**
build/**
build_dir/**
helper/*.o
helper/.qtc_clangd/**
helper/moc*.*
helper/octphelper
cachecleaner/bin/**
@@ -13,6 +15,11 @@ cachecleaner/.qtc_clangd/**
notifier/bin/**
notifier/build/**
notifier/.qtc_clangd/**
notifier/.qtc/**
notifier/.cmake/**
notifier/CMakeCache*
notifier/CMakeFiles*
notifier/qtcsettings.cmake
octopi.pro.user
qrc_resources.cpp
repoeditor/.qtc_clangd/**

View File

@@ -1,5 +1,72 @@
0.19 (dev)
BugFix: Pressing F11 to maximize bottom panel crashed Octopi if Info tab was selected.
BugFix: Octopi crashed after using AUR/KCP tool and clicking on a package anchor
in Output tab.
BugFix: Optional deps dialog had a column header named "3" instead of "Repository".
BugFix: Some outdated AUR pkgs were not showing on notifier (thanks to urbenlegend).
BugFix: There was a method called more than once every time distro news was checked.
Add the option to make the whole interface text less condensed.
Add the option to show/hide "Repository" and "Download Size" columns in package list.
Add Repository field in Info tab.
Make "Search for outdated AUR packages" a notifier only option.
Enable Check updates and System upgrade tool buttons in AUR mode.
Show current version of the packages on Notifier's System Upgrade dialog
(thanks to valchx's code).
Added chinese description for the application name in desktop file.
Updated translations.
0.18.1 (2025-09-29)
BugFix: French translation was not working properly (thanks to roxfr).
BugFix: Yay searches with version 12.5.2 crashed Octopi (thanks to nije-to-sve).
BugFix: Search for BASH also in "/bin".
BugFix: Force use of BASH shell was not working (thanks to UnsaltedScholar).
BugFix: List of outdated KCP packages was not working in KaOS.
BugFix: Under some conditions Octopi could crash due to shared memory access failures.
Updated translations.
0.18.0 (2025-09-20)
BugFix: The act of moving the mouse over the package list was triggering many
"pacman -Si" executions (thanks to RAZUMNO).
BugFix: Notifier did not fetch updates for the first time when using "once a day".
BugFix: qt-sudo now respects user locale settings (thanks to D10RUS).
BugFix: Use better way to detect if user is running the tools from the right place.
BugFix: Select Help tab when Octopi runs for the first time.
BugFix: Make Actions tab visible when a package is selected for insertion/removal.
BugFix: Use system theme folder icon in Files tab.
BugFix: Package list refresh was not running after a group install/removal.
BugFix: ILoveCandy option was not working 100% in parser.
Search option selected by the user is saved on close.
Added support for garuda-update command when running in Garuda Linux.
Added support for a user specified backup shell script that needs to be placed at
"/usr/lib/octopi/pre-system-upgrade.sh" and executes before the system upgrades.
Added support for pacman.conf's IgnorePkg option through "Add to Ignored" and
"Remove from Ignored" actions from the context menu in the package list.
Added View/Ignored menu option.
Added support for Plus and Minus keys to add and remove packages from the system.
Added "Get Latest distro news" menu item to the News tab context menu.
Added Apply and Cancel buttons also in the Actions tab.
Added "Enable package tooltips" option, so users can disable the feature when needed.
Added "Force use of BASH shell" option to ensure compatibility when the user
uses another SHELL.
Added Tools/pacman-key option to refresh pacman gpg keys.
Modernization of Options dialog.
Updated translations.
0.17.0 (2025-02-18)
BugFix: Code for EndeavourOS news was incomplete (thanks to LegitGreenBoi).
BugFix: Help msg for newer packages was wrong because they're not installed.
Prefer Bash shell (/usr/bin/bash) when executing package commands.
Added "--editmenu" checkbox on Options dialog if you are using Yay tool.
Added option to always use the terminal when executing pacman actions.
Play a bell sound when the Terminal tab is asking for the user password.
Improvement: Let user choose which domain is pinged when checking for internet access
(if ping.archlinux.org is down).
Improvement: Show a "Collecting transaction data..." msg before presenting the transaction
dialog, as it can be quite slow on some systems (thanks to Valdir).
Updated translations.
0.16.2 (2024-06-17)
BugFix: Increased width of Terminal tab labels on optionsdialog.
BugFix: Increased width of Terminal tab labels on Options dialog.
BugFix: Removed a debug msg when octopi was not being executed with "-d".
Updated translations.

View File

@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.5)
project(octopi VERSION 0.16.2 LANGUAGES CXX)
project(octopi VERSION 0.19.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -14,10 +14,10 @@ add_subdirectory(cachecleaner)
add_subdirectory(repoeditor)
if (USE_QTERMWIDGET6)
find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat Gui Network Xml Widgets LinguistTools)
find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat Gui Network Xml Widgets LinguistTools Multimedia)
find_package(qtermwidget6 REQUIRED)
else()
find_package(Qt5 REQUIRED COMPONENTS Core Gui Network Xml Widgets LinguistTools)
find_package(Qt5 REQUIRED COMPONENTS Core Gui Network Xml Widgets LinguistTools Multimedia)
find_package(qtermwidget5 REQUIRED)
endif()
@@ -114,17 +114,17 @@ target_compile_definitions(octopi PRIVATE OCTOPI_EXTENSIONS ALPM_BACKEND QT_DEPR
if (USE_QTERMWIDGET6)
target_include_directories(octopi PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${Qt6Core_INCLUDE_DIRS} ${Qt6Gui_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS} ${Qt6Xml_INCLUDE_DIRS} ${Qt6Widgets_INCLUDE_DIRS})
target_link_libraries(octopi PRIVATE Qt6::Core Qt6::Gui Qt6::Network Qt6::Xml Qt6::Widgets qtermwidget6 alpm_octopi_utils)
target_link_libraries(octopi PRIVATE Qt6::Core Qt6::Gui Qt6::Network Qt6::Xml Qt6::Widgets Qt6::Multimedia qtermwidget6 alpm_octopi_utils)
else()
target_include_directories(octopi PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})
target_link_libraries(octopi PRIVATE Qt5::Core Qt5::Gui Qt5::Network Qt5::Xml Qt5::Widgets qtermwidget5 alpm_octopi_utils)
target_link_libraries(octopi PRIVATE Qt5::Core Qt5::Gui Qt5::Network Qt5::Xml Qt5::Widgets Qt5::Multimedia qtermwidget5 alpm_octopi_utils)
endif()
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/resources/images/octopi_green.png" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
file(RENAME "${CMAKE_CURRENT_BINARY_DIR}/octopi_green.png" "${CMAKE_CURRENT_BINARY_DIR}/octopi.png")
install(TARGETS octopi RUNTIME DESTINATION bin LIBRARY DESTINATION lib PUBLIC_HEADER DESTINATION include)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/octopi.desktop" DESTINATION share/applications)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/octopi.png" "${CMAKE_CURRENT_SOURCE_DIR}/resources/images/octopi_green.png" DESTINATION share/icons/gnome/32x32/apps)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/octopi.png" "${CMAKE_CURRENT_SOURCE_DIR}/resources/images/octopi_green.png" DESTINATION share/icons/hicolor/48x48/apps)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/octopi.png" "${CMAKE_CURRENT_SOURCE_DIR}/resources/images/octopi_green.png"
"${CMAKE_CURRENT_SOURCE_DIR}/resources/images/octopi_red.png" "${CMAKE_CURRENT_SOURCE_DIR}/resources/images/octopi_yellow.png" DESTINATION share/icons)
"${CMAKE_CURRENT_SOURCE_DIR}/resources/images/octopi_red.png" "${CMAKE_CURRENT_SOURCE_DIR}/resources/images/octopi_yellow.png" DESTINATION share/icons/hicolor/48x48/apps)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" DESTINATION share/licenses/octopi)

View File

@@ -1,6 +1,6 @@
_pkgname=octopi
pkgname=octopi-git
pkgver=0.16.2.latest
pkgver=0.19.0.latest
pkgrel=1
pkgdesc="This is Octopi, a powerful Pacman frontend using Qt libs (git checkout)"
url="https://tintaescura.com/projects/octopi/"
@@ -17,10 +17,10 @@ prepare() {
cp resources/images/octopi_green.png resources/images/octopi.png
}
pkgver() {
cd "${_pkgname}"
git describe --long --tags --abbrev=7 | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//'
}
#pkgver() {
# cd "${_pkgname}"
# git describe --long --tags --abbrev=7 | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//'
#}
build() {
cd "${_pkgname}"

View File

@@ -1,10 +1,12 @@
## This is Octopi, a powerful Pacman/AUR front end using Qt libs.
![Main window](https://raw.githubusercontent.com/aarnt/octopi/master/octopi-mainwindow.png)
![Options dialog](https://raw.githubusercontent.com/aarnt/octopi/master/octopi-optionsdialog.png)
![Main window with qss](https://raw.githubusercontent.com/aarnt/octopi/master/octopi-mainwindow-with-qss.png)
The project site is hosted on https://tintaescura.com/projects/octopi
Currently, 12 Linux distros are compatible with it
Currently, 11 Linux distros are compatible with it
* [ArchBang](http://archbang.org/)
* [Archcraft](https://archcraft.io/)
@@ -17,7 +19,6 @@ Currently, 12 Linux distros are compatible with it
* [KaOS](https://kaosx.us/)
* [Manjaro](https://manjaro.org/)
* [Obarun Linux](https://web.obarun.org/index.php?id=1)
* [Parabola GNU/Linux-libre](https://www.parabola.nu/)
### What you must install in order to have Octopi fully functional
@@ -74,13 +75,15 @@ $ make
# make install
```
You can also use the available PKGBUILD script that helps you build Octopi with all its tools:
You can also use the available PKGBUILD script that helps you build latest Octopi development version with all its tools(*):
```
$ cd OCTOPI_PATH (where you git cloned the source code)
$ makepkg -f
```
(*) It may contain bugs. You have been warned.
### Steps to build Octopi source code (CMake)
As an alternative to qmake, Octopi can also be built with CMake. Make sure that at least CMake 3.5 is installed.
@@ -125,13 +128,13 @@ You'll need to install [pacaur](https://github.com/rmarquis/pacaur), [paru](http
[pikaur](https://github.com/actionless/pikaur), [trizen](https://github.com/trizen/trizen) or
[yay](https://github.com/Jguer/yay) in your system.
If neither of the previous tools are found Octopi will download latest "yay-bin" github binary.
In KaOS, [kcp](https://github.com/bvaudour/kcp) will be supported out of the box.
In KaOS, [kcp](https://codeberg.org/bvaudour/kcp) will be supported out of the box.
### Ways to help/support Octopi
* You can "Star" it on the Github page - https://github.com/aarnt/octopi/
* You can vote in the AUR package available on https://aur.archlinux.org/packages/octopi/
* You can translate it to your mother language on https://www.transifex.com/projects/p/octopi/
* You can translate it to your mother language on https://explore.transifex.com/arnt/octopi/
* You can follow author's twitter account on https://twitter.com/aaarnt
* You can buy author's technical book (currently in portuguese) about Octopi and Qt5 on
http://www.amazon.com.br/Aprendendo-Qt-com-projeto-Octopi-ebook/dp/B015ICHKV6

View File

@@ -44,8 +44,13 @@ int main( int argc, char *argv[] )
app.sendMessage(QStringLiteral("RAISE"));
QTranslator appTranslator;
appTranslator.load(QLatin1String(":/resources/translations/octopi_cachecleaner_") +
QLocale::system().name());
bool success = appTranslator.load(QLatin1String(":/resources/translations/octopi_cachecleaner_") +
QLocale::system().name());
if (!success)
{
success = appTranslator.load(QStringLiteral(":/resources/translations/octopi_cachecleaner_en.qm"));
}
app.installTranslator(&appTranslator);
if (UnixCommand::isRootRunning()){
@@ -71,7 +76,7 @@ int main( int argc, char *argv[] )
return (-5);
}
if (!UnixCommand::isOctoToolRunning(QStringLiteral("octopi-cachecle")))
if (!UnixCommand::isOctoToolRunning(QStringLiteral("octopi-cachecleaner")))
{
QMessageBox::critical(nullptr, StrConstants::getApplicationName(), StrConstants::getErrorRunOctopiCacheCleanerAsUsrBin());
return (-6);

View File

@@ -70,7 +70,7 @@ PackageGroupModel::PackageGroupModel(QString optionsString,
*/
PackageGroupModel::~PackageGroupModel()
{
UnixCommand::removeSharedMemFiles();
//UnixCommand::removeSharedMemFiles();
delete m_acc;
delete m_cmd;
}
@@ -100,7 +100,7 @@ void PackageGroupModel::keepArchivesChanged()
*/
QString PackageGroupModel::getOptions()
{
return m_optionsString + QLatin1String("-k ") + QString::number(m_spinner->value());
return QStringLiteral("%1-k %2").arg(m_optionsString).arg(m_spinner->value());
}
/*

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="af" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="af_ZA" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="be" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="be_BY" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="bs" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="bs_BA" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Keš čistač - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Deinstalirani paketi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Zadrži</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>Zadržati broj starih verzija</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Osvježi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Instalirani paketi</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Očisti</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Očisti %1</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="cmn" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="cs_CZ" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="de_AT" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="de_DE" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="en_CZ" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="en_IN" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="en_PL" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="en_SE" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="eo" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Malinstalitaj Pakaĵoj</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Konservi :</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Refreŝigi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Instalitaj Pakaĵoj</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Purigi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Purigi %1</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="es" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Limpiador de caché</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Paquetes desinstalados</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Mantener:</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>Número de versiones antiguas a mantener</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Refrescar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Paquetes instalados</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Limpiar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Limpiar %1</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="es_CL" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Limpiador Cache-Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Paquetes desinstalados</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Mantener :</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>Número de versiones anteriores a mantener</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Refrescar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Paquetes instalados</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Limpiar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Limpiar %1</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="es_CR" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="es_MX" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Limpiador de Caché - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Paquetes desinstalados</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Conservar:</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>Número de versión anterior a conservar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Actualizar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Paquetes instalados</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Limpiar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Limpiar %1</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="es_NI" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="es_PE" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Borrar Cache - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Refrescar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Borrar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="fa_IR" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Cache Cleaner - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>بسته های حذف شده</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>نگهداری</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>تعداد ورژنهایی که باقی میمانند</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>تازه سازی</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>بسته های نصب شده</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>تمیز کردن</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>پاک کردن 1%</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr_CA" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr_CH" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Nettoyeur de cache - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Paquets non-installés</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Conserver :</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>Nombre d&apos;anciennes versions à conserver</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Actualiser</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Paquets installés</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Nettoyer</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Nettoyer %1</translation>
</message>
</context>
</TS>

View File

@@ -4,7 +4,7 @@
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Octopi cache tisztítása</translation>
<translation>Gyorsítótár-tisztító - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
@@ -15,7 +15,7 @@
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Megtart:</translation>
<translation>Megtartás:</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="id_ID" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Pembersih Cache - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Paket yang dihapus</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Jaga :</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="ie" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Vacuar li cache de Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Desinstallat paccages</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Retener:</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>Un númere de old versiones a retener</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Refriscar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Installat paccages</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Vacuar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Vacuar %1</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="is" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Skyndiminni hreinsun - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Fjarlægðir pakkar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Halda :</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>Fjöldi af gömlum útgáfum til geymslu</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Hressa við</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Uppsettir pakkar</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Hreinsa</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Hreinsa %1</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="is_IS" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="it_IT" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -4,7 +4,7 @@
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation> - Octopi</translation>
<translation> - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="ja_JP" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="lv" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Kešatmiņas tīrītājs - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Atinstalētās pakas</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Saglabāt:</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>Saglabājamo versiju skaits</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Atjaunot</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Instalētās pakas</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Tīrīt</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Tīrīt %1</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="oc" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Paquets desinstallats</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Refrescar</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Paquets desinstallats</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="pl_PL" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="ru_RU" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Очистка кэша - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Удалённые пакеты</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Оставить:</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>Сколько старых версий оставить</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Перечитать</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Установленные пакеты</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Очистить</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Очистить %1</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="sr" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Čistač Keša - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Uklonjeni paketi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Zadržati:</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>Broj starih verzija za čuvanje</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Osveži</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Instalirani paketi</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Očisti</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Čisto 1%</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="sv_SE" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation>Cachestädare - Octopi</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation>Avinstallerade paket</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation>Behåll :</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation>Antal gamla versioner att behålla</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation>Uppdatera</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation>Installerade paket</translation>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation>Städa</translation>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation>Städa %1</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="th" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="th_TH" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh" version="2.0">
<context>
<name>CacheCleaner</name>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
<source>Cache Cleaner - Octopi</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
<source>Uninstalled packages</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
<source>Keep :</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
<source>Number of old versions to keep</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
<source>Refresh</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
<source>Installed packages</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>PackageGroupModel</name>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
<source>Clean</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
<source>Clean %1</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@@ -2,4 +2,4 @@
This is a simple helper to execute octopi transactions. It aims to ease integration with sudo NOPASSWD switch.
NOPASSWD mode will *ONLY* work with integrated ["octopi-sudo"](https://github.com/aarnt/octopi/tree/master/sudo) root escalation tool.
NOPASSWD mode will *ONLY* work with integrated ["qt-sudo"](https://github.com/aarnt/qt-sudo) root escalation tool.

View File

@@ -58,6 +58,10 @@ int main(int argc, char *argv[])
{
return helper.executePkgTransactionWithSharedMem();
}
else if (argList->getSwitch(QStringLiteral("-test-pre-system-upgrade-script")))
{
helper.validatePreUpgradeScript();
}
else
{
QTextStream qout(stdout);

View File

@@ -21,6 +21,11 @@
#include "../src/constants.h"
#include "octopihelper.h"
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
#include <limits.h>
#include <QProcess>
#include <QDir>
#include <QObject>
@@ -175,55 +180,74 @@ QString OctopiHelper::getProxySettings()
return (settings.value(ctn_KEY_PROXY_SETTINGS, QLatin1String("")).toString());
}
/*
* Retrieves the PID of the given process
*/
pid_t OctopiHelper::findPidByName(const QString &processName)
{
DIR *dir = opendir("/proc");
if (!dir) {
return -1;
}
struct dirent *entry;
while ((entry = readdir(dir)) != nullptr) {
if (entry->d_type != DT_DIR)
continue;
bool ok;
pid_t pid = QLatin1String(entry->d_name).toInt(&ok);
if (!ok)
continue;
QString cmdPath = QStringLiteral("/proc/%1/comm").arg(pid);
QFile cmdFile(cmdPath);
if (cmdFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
QString name = QLatin1String(cmdFile.readLine()).trimmed();
if (name == processName) {
closedir(dir);
log(QStringLiteral("Found PID %1 for process %2").arg(pid).arg(processName));
return pid;
}
}
}
closedir(dir);
return -1;
}
/*
* Tests if the given process is running from the expected file path (/usr/bin)
*/
bool OctopiHelper::isProcessRunningFromPath(pid_t pid)
{
QString exeLink = QStringLiteral("/proc/%1/exe").arg(pid);
char actualPath[PATH_MAX];
ssize_t len = readlink(exeLink.toLocal8Bit().constData(), actualPath, sizeof(actualPath) - 1);
if (len == -1) {
//perror("readlink");
return false;
}
actualPath[len] = '\0';
QString realPath = QFileInfo(QString::fromLocal8Bit(actualPath)).canonicalFilePath();
log(QStringLiteral("Path of PID %1 is %2").arg(pid).arg(realPath));
return realPath.startsWith(QStringLiteral("/usr/bin"));
}
/*
* Checks if Octopi/Octopi-notifier, cache-cleaner, etc is being executed
*/
bool OctopiHelper::isOctoToolRunning(const QString &octoToolName)
{
bool res=false;
QProcess proc;
proc.setProcessEnvironment(getProcessEnvironment());
QStringList sl;
sl << QStringLiteral("-C");
sl << octoToolName;
sl << QStringLiteral("-o");
sl << QStringLiteral("command");
proc.start(QStringLiteral("/usr/bin/ps"), sl);
proc.waitForFinished();
QString out = QString::fromUtf8(proc.readAll().trimmed());
if (out.contains(QLatin1String("|"))) return false;
out=out.remove(QStringLiteral("\n"));
out=out.remove(QStringLiteral("COMMAND"));
if (octoToolName==QLatin1String("octopi-cachecle"))
{
if (out == QLatin1String("/usr/bin/octopi-cachecleaner")) res=true;
pid_t pid = findPidByName(octoToolName);
if (pid == -1) {
return false;
}
else
{
QStringList options;
options << QStringLiteral("/usr/bin/octopi-notifier -d");
options << QStringLiteral("/usr/bin/octopi -d");
options << QStringLiteral("/usr/bin/octopi -sysupgrade");
options << QStringLiteral("/usr/bin/octopi -sysupgrade-noconfirm");
//QRegularExpression re(QStringLiteral("(/usr/bin/octopi-notifier -session )[a-fA-F0-9_]+"));
QRegularExpression re(QStringLiteral("(/usr/bin/octopi-notifier.*)"));
QRegularExpressionMatch match = re.match(out);
bool hasMatchInSession = match.capturedLength()==out.length();
re=QRegularExpression(QStringLiteral("(/usr/bin/octopi -style )\\S+"));
match = re.match(out);
bool hasMatchInStyle = match.capturedLength()==out.length();
if (out == QLatin1String("/usr/bin/") + octoToolName ||
(options.indexOf(out)!=-1) ||
(hasMatchInSession) ||
(hasMatchInStyle)) res=true;
}
return res;
return isProcessRunningFromPath(pid);
}
/*
@@ -231,6 +255,7 @@ bool OctopiHelper::isOctoToolRunning(const QString &octoToolName)
*/
int OctopiHelper::executePkgTransactionWithSharedMem()
{
bool systemUpgradeCommand = false;
bool isOctopiRunning=isOctoToolRunning(QStringLiteral("octopi"));
bool isNotifierRunning=isOctoToolRunning(QStringLiteral("octopi-notifier"));
bool isCacheCleanerRunning=isOctoToolRunning(QStringLiteral("octopi-cachecle"));
@@ -282,6 +307,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
(line == QLatin1String("echo -e")) ||
(line == QLatin1String("echo \"PAKtC\"")) ||
(line == QLatin1String("read -n 1 -p \"PAKtC\"")) ||
(line == QLatin1String("garuda-update")) ||
(line == QLatin1String("pkgfile -u")) ||
(line == QLatin1String("paccache -r -k 0")) ||
(line == QLatin1String("paccache -r -k 1")) ||
@@ -302,10 +328,11 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
{
testCommandFromOctopi=true;
}
else if (line.startsWith(QLatin1String("pacman -Syu")))
else if (line.startsWith(QLatin1String("pacman -Syu")) || line == QLatin1String("garuda-update"))
{
testCommandFromOctopi=true;
testCommandFromNotifier=true;
systemUpgradeCommand=true;
}
else if (line.startsWith(QLatin1String("paccache -r -k")))
{
@@ -328,6 +355,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
contents = contents.replace(QLatin1String("killall pacman"), QLatin1String("/usr/bin/killall pacman"));
contents = contents.replace(QLatin1String("rm ") + ctn_PACMAN_DATABASE_LOCK_FILE, QLatin1String("/usr/bin/rm ") + ctn_PACMAN_DATABASE_LOCK_FILE);
contents = contents.replace(QLatin1String("pkgfile -u"), QLatin1String("/usr/bin/pkgfile -u"));
contents = contents.replace(QLatin1String("garuda-update"), QLatin1String("/usr/bin/garuda-update"));
contents = contents.replace(QLatin1String("paccache -r"), QLatin1String("/usr/bin/paccache -r"));
contents = contents.replace(QLatin1String("pacman -Fy"), QLatin1String("/usr/bin/pacman -Fy"));
contents = contents.replace(QLatin1String("pacman -Syu"), QLatin1String("/usr/bin/pacman -Syu"));
@@ -478,6 +506,19 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
QFile *ftemp = generateTemporaryFile();
QTextStream out(ftemp);
out << QLatin1String("unalias -a\n");
// If we are going to upgrade the system, let's check if we find /usr/lib/octopi/pre-system-upgrade.sh file
if (systemUpgradeCommand)
{
// If the file exists and is valid...
if (validatePreUpgradeScript())
{
// Let's put it inside the command list
out << ctn_PRE_SYSTEM_UPGRADE_SCRIPT + QLatin1Char('\n');
}
}
QString proxySettings = getProxySettings();
if (!proxySettings.isEmpty())
{
@@ -487,9 +528,9 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
out << QLatin1String("export http_proxy=") + proxySettings + QLatin1Char('\n');
else if (proxySettings.contains(QLatin1String("https://")))
out << QLatin1String("export https_proxy=") + proxySettings + QLatin1Char('\n');
}
}
out << QLatin1String("unalias -a\n") << contents;
out << contents;
log(QLatin1String("Exec as root: ") + contents.trimmed());
@@ -503,3 +544,106 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
return m_process->exitCode();
}
bool OctopiHelper::isShellScript(const QString &filePath)
{
QFile file(filePath);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return false;
QTextStream in(&file);
QString firstLine = in.readLine().trimmed();
return firstLine.startsWith(QStringLiteral("#!")) && firstLine.contains(QStringLiteral("sh"));
}
bool OctopiHelper::onlyAllowedCommands(const QString &filePath)
{
QTextStream qout(stdout);
QSet<QString> allowedCommands = {
QStringLiteral("echo"), QStringLiteral("checkupdates"), QStringLiteral("sudo"),
QStringLiteral("timeshift"), QStringLiteral("if"), QStringLiteral("fi"),
QStringLiteral("then"), QStringLiteral("grep"), QStringLiteral("awk"),
QStringLiteral("exit"), QStringLiteral("|"), QStringLiteral(">"),
QStringLiteral("/dev/null"), QStringLiteral("["), QStringLiteral("]"),
QStringLiteral("rsync"), QStringLiteral("snapper"), QStringLiteral("cp")
};
QFile file(filePath);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return false;
QTextStream in(&file);
while (!in.atEnd())
{
QString line = in.readLine().trimmed();
// Skip comments and empty lines
if (line.isEmpty() || line.startsWith(QLatin1Char('#')))
continue;
// Remove quoted strings (both "..." and '...')
QRegularExpression quoted(QStringLiteral("\"[^\"]*\"|'[^']*'"));
line.replace(quoted, QStringLiteral("")); // Remove strings inside quotes
// Remove parentheses/braces/quotes to simplify parsing
line.replace(QRegularExpression(QStringLiteral("[`(){}]")), QStringLiteral(" "));
// Split into tokens
QStringList tokens = line.split(QRegularExpression(QStringLiteral("\\s+")), Qt::SkipEmptyParts);
for (const QString &token : tokens)
{
if (token == QStringLiteral("|"))
continue;
// Skip arguments and variables
if (token.startsWith(QLatin1Char('-')) || token.startsWith(QLatin1Char('$')) || token[0].isDigit() || token.endsWith(QLatin1Char('=')))
continue;
if (!allowedCommands.contains(token))
{
qout << "Forbidden command found: " << token << Qt::endl;
return false;
}
}
}
return true;
}
bool OctopiHelper::validatePreUpgradeScript()
{
QTextStream qout(stdout);
QString path = ctn_PRE_SYSTEM_UPGRADE_SCRIPT;
QFileInfo fileInfo(path);
if (!fileInfo.exists())
{
return false;
}
// Is this a symbolic link?
if (fileInfo.isSymLink())
fileInfo = QFileInfo(fileInfo.symLinkTarget());
QString realPath = fileInfo.absoluteFilePath();
if (!fileInfo.isFile() || !fileInfo.isReadable())
{
return false;
}
if (!isShellScript(realPath)) {
qout << "File is not a shell script." << Qt::endl;
return false;
}
if (!onlyAllowedCommands(realPath))
{
qout << ctn_PRE_SYSTEM_UPGRADE_SCRIPT << " has forbidden commands." << Qt::endl;
return false;
}
return true;
}

View File

@@ -34,6 +34,8 @@ Q_OBJECT
private:
int m_exitCode;
const QString ctn_PRE_SYSTEM_UPGRADE_SCRIPT = QStringLiteral("/usr/lib/octopi/pre-system-upgrade.sh");
QProcess *m_process;
QProcessEnvironment getProcessEnvironment();
QString m_suspiciousChars;
@@ -43,6 +45,10 @@ private:
static QString getProxySettings();
pid_t findPidByName(const QString &processName);
bool isProcessRunningFromPath(pid_t pid);
static QFile* generateTemporaryFile(){
quint32 gen = QRandomGenerator::global()->generate();
m_temporaryFile = new QFile(ctn_TEMP_ACTIONS_FILE + QString::number(gen));
@@ -52,6 +58,9 @@ private:
return m_temporaryFile;
}
bool isShellScript(const QString &filePath);
bool onlyAllowedCommands(const QString &filePath);
public:
OctopiHelper();
virtual ~OctopiHelper();
@@ -60,6 +69,8 @@ public:
int executePkgTransactionWithSharedMem();
inline int getExitCode() { return m_exitCode; }
bool isOctoToolRunning(const QString &octoToolName);
bool validatePreUpgradeScript();
};
#endif // OCTOPIHELPER_H

View File

@@ -3,10 +3,10 @@ option(USE_KF5NOTIFICATIONS "Build with KF5Notifications support" OFF)
option(USE_KF6NOTIFICATIONS "Build with KF6StatusNotifierItem support" OFF)
if (USE_QTERMWIDGET6)
find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat Xml Gui Widgets Network)
find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat Xml Gui Widgets Network Multimedia)
find_package(qtermwidget6 REQUIRED)
else()
find_package(Qt5 REQUIRED COMPONENTS Core Xml Gui Widgets Network)
find_package(Qt5 REQUIRED COMPONENTS Core Xml Gui Widgets Network Multimedia)
find_package(qtermwidget5 REQUIRED)
endif()
@@ -89,7 +89,7 @@ target_compile_definitions(octopi-notifier PRIVATE OCTOPI_EXTENSIONS ALPM_BACKEN
if (USE_QTERMWIDGET6)
target_include_directories(octopi-notifier PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt6Core_INCLUDE_DIRS} ${Qt6Xml_INCLUDE_DIRS} ${Qt6Gui_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS})
target_link_libraries(octopi-notifier PRIVATE Qt6::Core Qt6::Xml Qt6::Gui Qt6::Widgets Qt6::Network qtermwidget6 alpm_octopi_utils)
target_link_libraries(octopi-notifier PRIVATE Qt6::Core Qt6::Xml Qt6::Gui Qt6::Widgets Qt6::Network Qt6::Multimedia qtermwidget6 alpm_octopi_utils)
if(USE_KF6NOTIFICATIONS AND KF6StatusNotifierItem_FOUND)
target_compile_definitions(octopi-notifier PRIVATE KSTATUS)
@@ -99,7 +99,7 @@ if (USE_QTERMWIDGET6)
endif()
else()
target_include_directories(octopi-notifier PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS})
target_link_libraries(octopi-notifier PRIVATE Qt5::Core Qt5::Xml Qt5::Gui Qt5::Widgets Qt5::Network qtermwidget5 alpm_octopi_utils)
target_link_libraries(octopi-notifier PRIVATE Qt5::Core Qt5::Xml Qt5::Gui Qt5::Widgets Qt5::Network Qt5::Multimedia qtermwidget5 alpm_octopi_utils)
if(USE_KF5NOTIFICATIONS AND KF5Notifications_FOUND)
target_compile_definitions(octopi-notifier PRIVATE KSTATUS)

View File

@@ -44,8 +44,8 @@ int main(int argc, char *argv[])
}
if (debugInfo)
qDebug() << QString(QLatin1String("Octopi Notifier - ") + ctn_APPLICATION_VERSION +
QLatin1String(" (") + StrConstants::getQtVersion() + QLatin1String(")"));
qDebug() << QLatin1String("Octopi Notifier - ") + ctn_APPLICATION_VERSION +
QLatin1String(" (") + StrConstants::getQtVersion() + QLatin1String(")");
/*if (UnixCommand::isAppRunning(QStringLiteral("octopi-notifier")))
{
@@ -89,8 +89,13 @@ int main(int argc, char *argv[])
}
QTranslator appTranslator;
appTranslator.load(QLatin1String(":/resources/translations/octopi_") +
bool success = appTranslator.load(QLatin1String(":/resources/translations/octopi_") +
QLocale::system().name());
if (!success)
{
success = appTranslator.load(QStringLiteral(":/resources/translations/octopi_en.qm"));
}
a.installTranslator(&appTranslator);
a.setQuitOnLastWindowClosed(false);

View File

@@ -37,7 +37,7 @@
#include <QScreen>
#include <QTcpServer>
#include <QTcpSocket>
#include <QtConcurrent/QtConcurrentRun>
#include <QThreadPool>
#ifdef KSTATUS
#include <kstatusnotifieritem.h>
@@ -58,6 +58,7 @@ MainWindow::MainWindow(QWidget *parent) :
m_debugInfo = false;
m_optionsDialog = nullptr;
m_numberOfCheckUpdatesPackages = 0;
m_checkUpdatesNameCurrentVersion=new QHash<QString, QString>();
m_checkUpdatesNameNewVersion=new QHash<QString, QString>();
m_pacmanDatabaseSystemWatcher =
@@ -304,6 +305,8 @@ void MainWindow::initSystemTrayIcon()
m_systemTrayIconMenu->addAction(m_actionSystemUpgrade);
m_systemTrayIconMenu->addSeparator();
m_systemTrayIconMenu->addAction(m_actionOptions);
m_actionOptions->setText(m_actionOptions->text().remove(QLatin1String("&")));
m_systemTrayIconMenu->addSeparator();
m_systemTrayIconMenu->addAction(m_actionAbout);
m_systemTrayIconMenu->addAction(m_actionExit);
@@ -436,7 +439,14 @@ void MainWindow::aboutOctopiNotifier()
QScreen *sc = QGuiApplication::primaryScreen();
fake->setGeometry(sc->geometry());
QString aboutText = QStringLiteral("<b>Octopi Notifier</b><br>");
QString aboutText;
if (SettingsManager::getMakeInterfaceLessCondensed())
{
aboutText += QStringLiteral("<p style=\"line-height: 1.2;\">");
}
aboutText += QStringLiteral("<b>Octopi Notifier</b><br>");
aboutText += StrConstants::getVersion() + QLatin1String(": ") +
ctn_APPLICATION_VERSION /*StrConstants::getApplicationVersion()*/ + QLatin1String("</b>") +
QLatin1String(" - ") + StrConstants::getQtVersion() + QLatin1String("<br>");
@@ -514,9 +524,11 @@ void MainWindow::doSystemUpgrade()
if (isOctopiBusy()) return;
if(!SettingsManager::getEnableConfirmationDialogInSysUpgrade())
bool isGarudaLinux = UnixCommand::getLinuxDistro() == ectn_GARUDALINUX;
if(isGarudaLinux || SettingsManager::getAlwaysUseTheTerminal() || !SettingsManager::getEnableConfirmationDialogInSysUpgrade())
{
if( (m_checkUpdatesStringList.count() != 0 && m_checkUpdatesStringList.contains(QStringLiteral("pacman"))) ||
if(isGarudaLinux || SettingsManager::getAlwaysUseTheTerminal() || (m_checkUpdatesStringList.count() != 0 && m_checkUpdatesStringList.contains(QStringLiteral("pacman"))) ||
(m_outdatedStringList->count() != 0 && m_outdatedStringList->contains(QStringLiteral("pacman"))) )
{
m_systemUpgradeDialog = false;
@@ -593,7 +605,9 @@ void MainWindow::doSystemUpgrade()
for(const auto &name : std::as_const(m_checkUpdatesStringList))
{
PackageListData aux;
aux = PackageListData(name, m_checkUpdatesNameNewVersion->value(name), QStringLiteral("0"));
aux = PackageListData(
name, m_checkUpdatesNameCurrentVersion->value(name),
m_checkUpdatesNameNewVersion->value(name), QStringLiteral("0"));
targets->append(aux);
}
}
@@ -601,7 +615,8 @@ void MainWindow::doSystemUpgrade()
for(const auto &target : std::as_const(*targets))
{
totalDownloadSize += target.downloadSize;
list = list + target.name + QLatin1Char('-') + target.version + QLatin1Char('\n');
list = list + target.name + QLatin1String(" : ") + target.outdatedVersion +
QLatin1String(" -> ") + target.version + QLatin1Char('\n');
}
list.remove(list.size()-1, 1);
@@ -722,6 +737,7 @@ void MainWindow::doSystemUpgradeFinished(int exitCode)
if (exitCode == 0)
{
m_checkUpdatesStringList.clear();
m_checkUpdatesNameCurrentVersion->clear();
m_checkUpdatesNameNewVersion->clear();
m_numberOfCheckUpdatesPackages=0;
m_callRefreshAppIcon->start();
@@ -753,6 +769,7 @@ void MainWindow::toggleEnableInterface(bool state)
m_actionOptions->setEnabled(state);
m_actionSystemUpgrade->setEnabled(state);
m_actionAURUpgrade->setEnabled(state);
m_actionAbout->setEnabled(state);
m_actionExit->setEnabled(state);
}
@@ -776,6 +793,7 @@ void MainWindow::afterCheckUpdates(int exitCode, QProcess::ExitStatus)
QStringList checkUpdatesList = m_pacmanExec->getOutdatedPackages();
m_checkUpdatesStringList.clear();
m_checkUpdatesNameCurrentVersion->clear();
m_checkUpdatesNameNewVersion->clear();
m_commandExecuting = ectn_NONE;
@@ -785,6 +803,7 @@ void MainWindow::afterCheckUpdates(int exitCode, QProcess::ExitStatus)
QStringList aux = line.split(QStringLiteral(" "), Qt::SkipEmptyParts);
m_checkUpdatesStringList.append(aux.at(0));
m_checkUpdatesNameCurrentVersion->insert(aux.at(0), aux.at(1));
m_checkUpdatesNameNewVersion->insert(aux.at(0), aux.at(3));
}
@@ -1032,7 +1051,7 @@ void MainWindow::refreshAppIcon()
for(int c=0; c<m_outdatedAURStringList->count(); ++c)
{
//If we find an outdated AUR pkg in the official pkg list, let's remove it
if (UnixCommand::hasPackage(m_outdatedAURStringList->at(c)))
if (UnixCommand::hasPackage(QStringLiteral("^") + m_outdatedAURStringList->at(c)))
{
m_outdatedAURStringList->removeAt(c);
}
@@ -1116,7 +1135,7 @@ void MainWindow::refreshAppIcon()
SIGNAL(directoryChanged(QString)), this, SLOT(refreshAppIcon()));
if (m_outdatedStringList->count() > 0)
QtConcurrent::run(UnixCommand::execCommandAsNormalUserExt, ctn_PACMAN_SUP_COMMAND);
QThreadPool::globalInstance()->start(new ExecCommandAsNormalUserExtTask());
}
/*

View File

@@ -29,6 +29,7 @@
#include <QString>
#include <QMainWindow>
#include <QSystemTrayIcon>
#include <QRunnable>
class QIcon;
class QMenu;
@@ -39,6 +40,14 @@ class TransactionDialog;
class QTcpServer;
class OutputDialog;
class ExecCommandAsNormalUserExtTask : public QRunnable
{
void run() override
{
UnixCommand::execCommandAsNormalUserExt(ctn_PACMAN_SUP_COMMAND);
}
};
enum CheckUpdate { ectn_AUTO_CHECK, ectn_USER_CHECK};
#ifdef KSTATUS
@@ -109,6 +118,7 @@ private:
QAction *m_actionAbout;
QAction *m_actionExit;
QIcon m_icon;
QHash<QString, QString> *m_checkUpdatesNameCurrentVersion;
QHash<QString, QString> *m_checkUpdatesNameNewVersion;
QStringList m_checkUpdatesStringList;
QStringList *m_outdatedStringList;

View File

@@ -4,7 +4,7 @@
#
#-------------------------------------------------
QT += core xml gui network
QT += core xml gui network multimedia
DEFINES += OCTOPI_EXTENSIONS ALPM_BACKEND

View File

@@ -101,8 +101,13 @@ void OutputDialog::initAsTextBrowser()
m_horizLayout->addWidget(m_progressBar);
m_horizLayout->addSpacing(2);
m_horizLayout->addWidget(m_toolButtonStopTransaction);
m_textBrowser->setGeometry(QRect(0, 0, 650, 500));
m_textBrowser->setFrameShape(QFrame::NoFrame);
QFont f = QApplication::font();
f.setFamily(SettingsManager::getTerminalFontFamily());
f.setPointSizeF(SettingsManager::getTerminalFontPointSize() - 1.0);
m_textBrowser->setFont(f);
m_mainLayout->addWidget(m_textBrowser);

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Some files were not shown because too many files have changed in this diff Show More