lxqt / lxqt-archiver Goto Github PK
View Code? Open in Web Editor NEWA simple & lightweight desktop-agnostic Qt file archiver
Home Page: https://lxqt.github.io
License: GNU General Public License v2.0
A simple & lightweight desktop-agnostic Qt file archiver
Home Page: https://lxqt.github.io
License: GNU General Public License v2.0
When creating for example a tar.gz archive it's possible to set an passwd even if neither .tar nor .gz has this feature afaik. Probably true for others too.
Passwd field should be deactivated if archive format doesn't support it.
Check for features when selecting suffix/format
git checkout of lxqt-archiver, arch
@agaida
I think lxqt-archiver is quite stable and feature-rich now. But users may have not heard of it yet. So, a release could be good for users (they could get rid of alien apps like Ark) and developers alike (they'll receive more feedback).
That's inherited from file-roller and, IMO, is annoying. I don't know if I could find its cause inside the C code but it should be fixed.
Currently In our desktop file we have Icon=application-x-archive
.
The problem is that not all icon themes will provide this. And many distributions use hicolor as their fallback icon theme, which also doesn't provide this.
So one way would be to add a general archiver icon to hicolor, or our own icon to hicolor.
Another way would be to have our own archiver related icon, and ship that in the lxqt-archiver package and rely on this. Then we are not dependand on the icon theme.
To my knowledge application-x-archive
is provided by:
breeze-icon-theme, oxygen-icon-theme and paper-icon theme.
Recently, AUR has started to make use of zstd (Zstandard-compressed). I think it'll be used more and more in other places too.
For Arqiver, its support can be easily added (because tar
covers it) but I still don't know about lxqt-archiver, although it should be possible theoretically.
I am trying to build from source and cmake cant find fm-qt, is fm-qt pcmanfm-qt?
Distribution & Version: Ubuntu (Lubuntu) 19.04 (Disco Dingo)
Kernel: 5.0.0-31-generic
Qt Version: 0.14.1
7-Zip on Windows allows users to open .img disk images as regular archive files, including FAT and NTFS partitions. This is convenient for users that work often with disk images and would allow LXQt users to easily open disk images without requiring additional software.
I think viewing/extracting disk images is already supported by 7z, so this could be easy to add to lxqt-archiver.
Scrubbed output below in the "Context" section. Sorry, private data.
Listing of ACE files should only show "real" files, without including a "file" named "bytes (compressed x.xxxX)".
A "file" named "bytes (compressed x.xxxX)" is shown in the file listing UI.
Fix process_line
function in fr-command-ace.c
to stop when it encounters a line that starts with "listed: "
.ace
compressed archive somehow, or download WinAce Trial (like from softpedia.com) and make an archive. Calling this "test.ace".unace v test.ace
from a terminal and observe the outputbytes (compressed x.xxxx)
is shown as a filenameTried opening an ancient ACE archive from early 2000s with lxqt-archiver in 2020.
Output with filenames and numbers scrubbed:
UNACE v2.5 Copyright by ACE Compression Software Jan 25 2020 21:01:27
processing archive /tmp/scrubbed.ace
created on xx.xx.xxxx with ver 2.0 by
*UNREGISTERED VERSION*
Contents of archive scrubbed.ace
Date Time Packed Size Ratio File
xx.xx.xx xx:xx xxxxxxx xxxxxxx xx% filename1
xx.xx.xx xx:xx xxxxxxx xxxxxxx xx% filename2
xx.xx.xx xx:xx xxxxxxx xxxxxxx xx% filename3
listed: 3 files, totaling x.xxxX bytes (compressed x.xxxX)
Using "unace 2.5-11" package from ArchLinux, which is "non-free" version
Best Regards
File filtering is a useful feature, especially with heavy archives and "Show All Files".
An easy-to-use file filtering.
I've made one but should polish it.
qwidget.cpp
in it.You couldn't.
Latest git LXQt.
It can be very annoying to see extracted files being mixed with other files; there would be no easy way to find them. Unfortunately, most archive managers don't care.
If the archive doesn't have a parent folder, make a directory inside the extraction folder and extract files inside it. If the user really wants to put them into the extraction folder, he/she could copy and paste them.
I should look into the code. I've done it in Arqiver; so, I don't think it's hard to do here.
lxqt-archiver/src/archiver.cpp
Line 564 in 93a6845
Sometimes it can be helpful. In particular, I just experienced a problem with extracted script not having an executable bit set, which I almost deemed to be a bug in lxqt-archiver, but then I figured it's that the original archive didn't have it for some reason. Being able to look at file permissions inside an archive would've helped.
For example, here's what the column looks like for ark:
Latest lxqt-archiver, built from commit 5fbc6f7 only has these:
It seems that I am unable to add a file to an archive by dragging & dropping a file into the lxqt-archiver window/folder, file-roller allows you to do this using PcManFm-Qt although since this is based on the Engrampa it may be missing.
According to #87 dropping a folder should be supported
only dropping files, when DND a folder the result dropped folder is empty
https://pb.5id.eu/v8rc.build -- build log
lxqt-archiver/snapshot/src/core/fr-archive.c: In function ‘copy_remote_file’:
lxqt-archiver/snapshot/src/core/fr-archive.c:1246:9: error: format not a string literal and no format arguments [-Werror=format-security]
error = g_error_new (G_IO_ERROR, G_IO_ERROR_NOT_FOUND, _("Archive not found"));
^~~~~
lxqt-archiver/snapshot/src/core/fr-archive.c: In function ‘fr_archive_add’:
lxqt-archiver/snapshot/src/core/fr-archive.c:1579:32: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘gpointer’ {aka ‘void *’} [-Wformat=]
g_print(" dst_fn: %s\n", new_file_list->data);
~^ ~~~~~~~~~~~~~~~~~~~
%p
cc1: some warnings being treated as errors
lxqt-archiver should have read-only support for RPM archives.
It can't open RPM packages.
Latest git version
Decrypting a password protected .7z archive with an encrypted file list should work as expected.
When trying to decrypt such an archive you're prompted with the error message 'password required' but it is not possible to insert the password. Unpacking fails. (The same archive can be unpacked with arqiver, xarchiver or file-roller.)
lxqt-archiver/src/core/fr-archive.c
Lines 1913 to 1915 in 853d912
xfer_data
. Fields source_id
, action
and uri
are not set, sooo.. I really hope someone more familiar with the code investigates it. Have a nice day!Under Linux, it's bsdtar
but, under some *BSD systems, it may be tar
.
I think we'll use bsdtar
in more cases in future (for now, it's used only for rpm
archives). So, it's better to add an option for choosing it outside Linux. The option shouldn't be visible inside Linux.
It would be cool to backport these:
we should tag a first alpha release
Would it be possible to add the ability to sort by column (like in file-roller) ?
Compiler warning via '-Wreturn-local-addr' probably shouldn't be triggered.
src/archiveritem.cpp:82:39: warning: reference to local variable
‘results’ returned [-Wreturn-local-addr]
std::vector<const ArchiverItem *> results;
^~~~~~~
At least on Gentoo, this triggers QA notices like so:
* QA Notice: Package triggers severe warnings which indicate that it
* may exhibit random runtime failures.
* [...]/work/lxqt-archiver-9999/src/archiveritem.cpp:82:39: warning:
reference to local variable ‘results’ returned [-Wreturn-local-addr]
As a forgetful person, I needed this reminder to dedicate some time to lxqt-archiver to get familiar with its Qt code (the C code is too huge), find and fix its (probable) issues, and add features to it.
The goal: Make it an active component of the next release!
Show whether an item is a symlink.
There's no info on symlinks.
I don't know yet.
No info about symlinks.
Currently, the text is elided when there's no space for it and the user needs to move the split-view handle to see it. With some archives, that may not be enough either, as they may contain too many nested folders.
Instead, it's better to add a horizontal scrollbar when needed.
I'm getting the following error:
CMake Error at CMakeLists.txt:33 (lxqt_translate_ts):
Unknown CMake command "lxqt_translate_ts".
Hello, will there be an assembly for Windows? The program will be a console or a graphical interface?
When opening a protected archive the program doesn't ask for a password, instead a warning saying it's password protected.
Hi
is it possible that lxqt-archiver can remember the last settings?
And why isn't the archive deleted beforehand if I want to overwrite it? It is constantly adding new files.
The version of lxqt-archiver is 0.2.0
LXQt version: 0.15.0
Qt: 5.15.0
PCLInuxOS 2020 up to date
Kernel: 5.7.2
Regards
Daniel
Building lxqt-archiver also builds rpm2cpio.
On rpm based distros this binary will be already provided by the rpm
package AFAIK.
I think in this case we shouldn't install our own build of it but rely on the system version. Probably just adding a flag to not install it will help.
Package maintainers on RPM based distros can then add a build requirement on rpm
/ /usr/bin/rpm2cpio
.
It's self-explanatory. Will do it alongside file filtering, because of common codes.
EDIT: Return
may work for opening directories but Enter
may not, or conversely, because QAbstractItemView::activated()
doesn't always work with both of them.
Followup to #158
Package content is visible (readonly).
Generic dialog appears: "Command cannot be executed."
Open any RPM archive.
I wanted to know whether someone could provide a deb x64 package. Or at least instructions on building it.
Thank you
It should warn about missing zip install instead.
Sorry for the hurry I'm in.
EDIT: the above is true for any suffix - existing or not - you choose, so test.xu test.pq, test.mp3
The reason is that lxqt-archiver uses its own, customized file dialog.
There are two solutions:
1 has two problems, at least. lxqt-archiver's file dialog has more settings than LXQt file dialog. And its size may be bigger (we don't want to increase the size whenever we use lxqt-archiver).
2 has the obvious problem that the user expects to see the common settings respected by lxqt-archiver's file dialog.
I think a mixture of 1 and 2 may be the solution. It needs to be examined in more detail.
PCManFM-Qt version: 1.0.0
Distribution & Version: openSUSE Tumbleweed
Qt Version: 5.15
liblxqt Version: 1.0.0
If all root files of an archive exist in the extraction directory and lxqt-archiver isn't supposed to overwrite them, it should close its progressbar immediately.
It hangs, showing a busy progressbar and taking a lot of CPU time. But, fortunately, it exits once the progressbar dialog is closed.
When extracting/compressing, especially from pcmanfm-qt, the current folder should be chosen; the user could change it later if he/she wants.
lxqt-archiver shows the home folder.
Will look into the code. It should be easy to implement; Arqiver does it.
Selecting from Menu → File → New Archiver dumps core when saving. No matter what kind of archive is selected.
Like win size and splitter position. Remembering can be optional and values can be saved on exiting or they can be set by the user.
I was packaging this for Ubuntu and I noticed that it installs files in /usr/libexec
unlike any other LXQt package.
I'm not sure how, but please let it use /usr/lib
instead 😃
hi,
I tried on Mageia Cauldron (linux) to build lxqt-archiver 0.0.96 but it fails to build with recent glib2 2.61.2:
In file included from /home/pterjan/rpmbuild/BUILD/lxqt-archiver-0.0.96/src/core/fr-command-ace.c:31:
/home/pterjan/rpmbuild/BUILD/lxqt-archiver-0.0.96/src/core/glib-utils.h:69:21: error: conflicting types for 'g_ptr_array_copy'
GPtrArray * g_ptr_array_copy (GPtrArray *array);
^~~~~~~~~~~~~~~~
In file included from /usr/include/glib-2.0/glib.h:31,
from /home/pterjan/rpmbuild/BUILD/lxqt-archiver-0.0.96/src/core/fr-command-ace.c:27:
/usr/include/glib-2.0/glib/garray.h:141:12: note: previous declaration of 'g_ptr_array_copy' was here
GPtrArray *g_ptr_array_copy (GPtrArray *array,
^~~~~~~~~~~~~~~~
make[2]: *** [src/core/CMakeFiles/lxqt-archiver-core.dir/build.make:144: src/core/CMakeFiles/lxqt-archiver-core.dir/fr-command-ace.c.o] Error 1
make[2]: Leaving directory '/home/pterjan/rpmbuild/BUILD/lxqt-archiver-0.0.96/build'
make[2]: *** Waiting for unfinished jobs....
Regards,
David
Configure runs Ok. Reconfigure fails
Successful reconfigure.
CMake Error at /usr/share/cmake/lxqt-build-tools/find-modules/FindGLIB.cmake:56 (get_filename_component):
get_filename_component unknown component gio-2.0
Call Stack (most recent call first):
CMakeLists.txt:34 (find_package)
-- Found GLIB: /usr/include/glib-2.0;/usr/lib/i386-linux-gnu/glib-2.0/include (found suitable version "2.56.3", minimum required is "2.50.0")
-- Configuring incomplete, errors occurred!
See also "/home/lpereira/src/lxqt/lxqt-archiver/build/CMakeFiles/CMakeOutput.log".
cmake ..
cmake ..
Filename input to be filled with an appropiate filename for the case.
Empty filename box. Also, its need to type the file extension. Selecting from dropdown is not working.
If a file or directory is selected, its name. If a group of file inside a directory selected, the name of the parent directory holding them.
The idea is not having to select the directory to create the archive nor type its name.
lxqt-0.1.0 latest git changes, the same for pcmanfm-qt and libfm-qt
just a reminder for myself
lxqt-archiver has no icons in toolbar.
$ yay lxqt | grep Installed
42 aur/breeze-lxqt 1.4-1 (+15 0.00) (Installed)
22 community/qterminal 0.15.0-1 (222.4 KiB 932.6 KiB) [lxqt] (Installed)
21 community/pcmanfm-qt 0.15.1-1 (345.5 KiB 1.7 MiB) [lxqt] (Installed)
18 community/lxqt-themes 0.15.0-1 (3.1 MiB 3.6 MiB) [lxqt] (Installed)
5 community/lxqt-archiver 0.2.0-1 (200.6 KiB 784.5 KiB) [lxqt] (Installed)
2 community/lximage-qt 0.15.0-1 (158.4 KiB 664.5 KiB) [lxqt] (Installed)
$ yay icon | grep Installed
33 community/lxqt-themes 0.15.0-1 (3.1 MiB 3.6 MiB) [lxqt] (Installed)
7 extra/hicolor-icon-theme 0.17-2 (10.2 KiB 54.2 KiB) (Installed)
6 extra/gtk-update-icon-cache 1:3.24.21-1 (15.3 KiB 38.7 KiB) (Installed)
1 extra/adwaita-icon-theme 3.36.1-1 (10.7 MiB 22.3 MiB) (Installed)
$ yay theme | grep Installed
53 community/lxqt-themes 0.15.0-1 (3.1 MiB 3.6 MiB) [lxqt] (Installed)
50 community/lxappearance 0.6.3-2 (80.1 KiB 405.0 KiB) [lxde] (Installed)
43 community/gtk-chtheme 0.3.1-9 (10.8 KiB 35.0 KiB) (Installed)
22 extra/sound-theme-freedesktop 0.8-4 (370.0 KiB 461.2 KiB) (Installed)
15 extra/libcanberra 0.30+2+gc0620e4-3 (83.8 KiB 403.3 KiB) (Installed)
12 extra/hicolor-icon-theme 0.17-2 (10.2 KiB 54.2 KiB) (Installed)
11 extra/gtk-engines 2.21.0-5 (266.0 KiB 1.2 MiB) (Installed)
8 extra/gnome-themes-extra 3.28-2 (2.5 MiB 4.4 MiB) [gnome] (Installed)
4 extra/breeze-gtk 5.19.2-1 (237.6 KiB 7.4 MiB) [plasma] (Installed)
1 extra/adwaita-icon-theme 3.36.1-1 (10.7 MiB 22.3 MiB) (Installed)
$ yay qt5 | grep Installed
69 extra/qt5-x11extras 5.15.0-1 (14.5 KiB 40.6 KiB) [qt qt5] (Installed)
66 extra/qt5-webkit 5.212.0alpha4-6 (12.2 MiB 46.7 MiB) (Installed)
64 extra/qt5-webengine 5.15.0-2 (44.1 MiB 144.7 MiB) [qt qt5] (Installed)
63 extra/qt5-webchannel 5.15.0-1 (72.5 KiB 222.9 KiB) [qt qt5] (Installed)
58 extra/qt5-svg 5.15.0-1 (146.0 KiB 490.4 KiB) [qt qt5] (Installed)
54 extra/qt5-sensors 5.15.0-1 (177.1 KiB 908.8 KiB) [qt qt5] (Installed)
41 extra/qt5-location 5.15.0-1 (2.9 MiB 11.0 MiB) [qt qt5] (Installed)
40 extra/qt5-imageformats 5.15.0-1 (52.7 KiB 208.1 KiB) [qt qt5] (Installed)
35 extra/qt5-declarative 5.15.0-1 (4.8 MiB 24.7 MiB) [qt qt5] (Installed)
31 extra/qt5-base 5.15.0-3 (12.9 MiB 64.1 MiB) [qt qt5] (Installed)
15 extra/poppler-qt5 0.88.0-1 (187.7 KiB 666.0 KiB) (Installed)
6 extra/libdbusmenu-qt5 0.9.3+16.04.20160218-5 (159.2 KiB 600.9 KiB) (Installed)
2 extra/avahi 0.8+15+ge8a3dd0-1 (435.9 KiB 1.8 MiB) (Installed)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.