hellosystem / filer Goto Github PK
View Code? Open in Web Editor NEWThis project forked from lxqt/pcmanfm-qt
A file manager that can also render the desktop
License: GNU General Public License v2.0
This project forked from lxqt/pcmanfm-qt
A file manager that can also render the desktop
License: GNU General Public License v2.0
Find a suitable icon and get permission to use it, e.g., https://dribbble.com/shots/2541211--Pirate-Finder-icon by Raphael Lopes.
Allow users to add scripts used as context menu items for certain types of files and folders.
Currently, we have the Tools
menu and a context menu that appears when you right-click a file or folder.
We want to give the user an (easy!) way of extending these with custom scripts.
There should be a way to specify under which circumstances a certain context menu should be added, e.g.,
Name
: If the file or folder has certain name(s)Name *.txt
: If the file or folder has certain suffix(es)MIME
: If the file or folder has certain MIME type(s)DirectoryContains
enclosing modifier: If the folder contains a file that has certain name(s)DirectoryTreeContains
enclosing modifier: If the file or folder is in a folder or in a sub-folder of a folder that contains a file that has certain name(s) (e.g., to add git pull
to any file or folder that is in a git repository)Git.app # A filer plugin is a normal `.app` bundle or `.AppDir`
Git.app/Git # Main executable
Git.app/Resources/DesktopActions.json # Configuration that specifies what files/folders to display the menu item(s) on
Git.app/Resources/arrow-down.png
Git.app/Resources/arrow-up.png
Contents of DesktopActions.json
:
{
"GitPushPull": {
"Conditions": [
{
"DirectoryTreeContains": [
{
"Name": ".git",
"MIME": "inode/directory"
}
]
},
{
"Name": ".git",
"MIME": "inode/directory"
}
],
"Actions": [
{
"Name": "Git Pull",
"Icon": "arrow-down",
"Args": "pull"
},
{
"Name": "Git Push",
"Icon": "arrow-up",
"Args": "push"
}
]
}
}
Renered as YAML:
GitPushPull:
Conditions:
- DirectoryTreeContains:
- Name: .git
MIME: inode/directory
- Name: .git
MIME: inode/directory
Actions:
- Name: Git Pull
Icon: arrow-down
Args: pull
- Name: Git Push
Icon: arrow-up
Args: push
Say, we have a file /home/user/helloSystem/ISO/build.sh
. When the user right-clicks on this
.git
with the MIME type inode/directory
Git.app/Resources/arrow-down.png
, and "Git Push" with the icon from Git.app/Resources/arrow-up.png
launch Git.app pull /home/user/helloSystem/ISO/build.sh
gets invokedGit.app/Git
can do as it pleases (e.g., show a GUI, etc.)Too complicated to implement and use? Can we simplify?
KDE Service Menus
$HOME/.local/share/kservices5/ServiceMenus/
/usr/local/share/kservices5/ServiceMenus/
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=all/allfiles;
Actions=Shred
#X-KDE-Submenu=Shred
[Desktop Action Shred]
Name=Safe Remove
Icon=trash-empty
Exec=shred -u -f -z -n3 %u
GNOME Nautilus Scripts
https://help.ubuntu.com/community/NautilusScriptsHowto
~/.local/share/nautilus/scripts/
E.g., Open animation like in https://user-images.githubusercontent.com/900690/51821977-24acd700-22db-11e9-865a-17490e445f35.gif
Leaning in from a FreeBSD area:
– and partly from a LIVEstep perspective:
Miller columns pictured at https://github.com/helloSystem/hello/wiki#user-content-nextstep-nextstep-openstep and https://github.com/probonopd/LIVEstep although I have no idea whether any part of e.g. File Viewer can go towards Miller columns for Filer.
Side note: /probonopd/
above, I just realised the connection :-)
Key phrases for search purposes: Finder, Mac OS X, macOS
We want to show disks on the desktop.
In desktopwindow.cpp
change Fm::CachedFolderModel::modelFromPath(fm_path_get_desktop());
to Fm::CachedFolderModel::modelFromPath(fm_path_new_for_uri("computer://"));
in two places.
Then, instead of the files in the desktop folder determined by XDG_DESKTOP_DIR
, the volumes are shown on the desktop.
Now, how can we show both? Best would be if we could put more than one model into the Fm::CachedFolderModel
... is it possible?
Reference:
lxqt#1192 (comment)
This feature was suggested in a YouTube video comment.
Source: https://www.provideocoalition.com/get-those-nice-bright-macos-finder-label-colors-back/
Fix "Extract to..."
Remove non-Qt options
Add
Related:
tsujan/Arqiver#23
Strangely, I can't even seem to find those strings in Filer...?!
Now that we have a documented way to add context menus to Filer, it would be neat if single-mouse users (Mac mice are traditionally single-button) and Action Search users could access those from the global menu too ("Tools").
Maybe @moochris knows how to do that?
Try to replace Plasma on KDE neon with Filer
...
in the middle rather than at the endBad:
Good:
User story:
When I select "show in folder" for a download in a browser, then not only the Downloads folder should open but also the downloaded file should be selected.
Looks like GNOME and KDE use https://www.freedesktop.org/wiki/Specifications/file-manager-interface/, org.freedesktop.FileManager1
DBus name and the /org/freedesktop/FileManager1
object path.
And e.g., Chromium implements it:
https://chromium.googlesource.com/chromium/src/+/master/chrome/browser/platform_util_linux.cc
Reference:
probonopd/go-appimage#12
This was also requested upstream.
% gpart show -l '/dev/da0s1'
gpart: No such geom: /dev/da0s1.
% gpart show -l /dev/da0
=> 32 1014752 da0 MBR (496M)
32 31 - free - (16K)
63 1014678 1 (null) (495M)
1014741 43 - free - (22K)
Looks like this disk has no name ((null)
), even though it has the name "FAT" which the Mac shows correctly...
Spun off from helloSystem/ISO#121 (comment)
Generally, aim for consistency across applications so (for example) volumes that appear in the sidebar of Filer should also appear in the sidebar of Image Viewer:
… Filer should not define its own bookmarks but to use those from the Qt File Open/Save dialog. And I tend to agree. …
Show menu when no window is open (in --desktop
mode). You can do most things you can do in a Filer window also on the desktop.
Add Open, Open in new Tab to global menu. Right now they are not reachable with a single-button mouse.
Open should have Command-O, Command-KeyDown, and Enter as usable shortcuts.
Respect .hidden
in tree view like upstream already does (backport it)
I have not found a way to display the creation time (btime) in Filer for list view colum and Get info.
Instead, bring an existing window already showing that location to the front.
Especially useful if you have e.g., Ctl-Alt-A set to show /Applications
.
The following replaces file and directory names recursively in a directory tree. Very handy!
renamex -s/pcmanfm/filer/g -R .
The following replaces the string in all files:
find . -type f -not -path './.git/*' -exec sed -i -e 's|pcmanfm|filer|g' {} \;
find . -type f -not -path './.git/*' -exec sed -i -e 's|PCManFM|Filer|g' {} \;
Now that we are mounting, rather than extracting, archives and images including .zip
files I wonder why .app
bundles within mounted .zip
files don't seem to get treated as such:
As soon as one copies the .app
out of the archive (and refreshes the window), it works as intended.
(The application can be executed just fine from the mounted archive, it is just not treated correctly by Filer.)
Filer currently does not refresh the contents of folders automatically as it should. One has to manually press F5 to reflect changes in folder contents.
I suspect it has to do with the QKqueueFileSystemWatcherEngine::addPaths: open: No such file or directory
message that we keep seeing on helloSystem.
Use alternating row colors for Details view like QTableView/QTableWidget setAlternatingRowColors(true)
.
The alternate color itself is defined in the stylesheet that we are loading:
Check Qt5 based DFileManager for Cover Flow effect.
Overall compare DFileManager to what we have so far.
http://dfilemanager.sourceforge.net/Screenshots
Also check this custom Qt style for it:
https://sourceforge.net/projects/styleproject/
The nemo file manager seems to support this. So should we.
https://askubuntu.com/a/1008821
My solution: use the nemo file manager (sudo apt install nemo) instead of Ubuntu's default of nautilus. Now, in nemo you can just drag and drop links right out of the Chrome/Chromium browser search bar and into the nemo file manager. Done!
Bruce "Tog" Tognazzini who wrote the first five editions of the Apple Human Interface Guidelines argues in favor of putting the Trash on the Desktop rather than having it in the Dock.
This is especially valuable if the Dock becomes optional.
If we put a desktop file in ~/Desktop
like
[Desktop Entry]
Type=Application
Name=Trash
Icon=user-trash
Exec=launch Filer trash:///
then the Trash gets displayed in the bottom-right corner of the desktop; but this is not fully functinal yet. We'd need to backport proper trash-related handling from https://github.com/lxqt/pcmanfm-qt/blob/master/pcmanfm/desktopwindow.cpp
Once this is backported/implemented properly in Filer, we can remove the Trash from the Dock and/or make the Dock optional.
Related:
gnome-online-accounts: 3.36.0
gvfs: 1.30.4_4
libgdata: 0.17.9_1
webkit2-gtk3: 2.30.1
wpebackend-fdo: 1.4.1
103 MiB
Check Cirrus CI https://cirrus-ci.org/
Example:
https://github.com/rust-lang/libc/blob/master/.cirrus.yml
Related to #41
Whenever the user tries to move a folder to the Trash, check whether something is mounted at that location(s), and ask the user whether that volume should be ejected/unmounted. In no case move a directory that has something mounted to it to the Trash!
What shall happen if a combination of files, folders and mountpoints is dragged by the user to the Trash? (What happens on a Mac in this case)?
That doesn't seem to depend on libfm anymore!
But it is split across 2 git repositories, and needs lxqt-build-tools
. Argh!
(Please do not start working on this without prior discussions on the pros and cons, and a potential CI workflow.)
Our objective is that "mere mortals" will never use the Terminal to use the system.
Right now copy, move/rename, delete operations just fail if the user does not have the required permissions.
This makes it impossible to remove an application from /Applications
without the Terminal, for example.
This is what happens:
Instead of showing an error, Filer should:
SUDO_ASKPASS
environment variable to /usr/local/bin/askpass
(the experimental builds ship it already)sudo <helper> <action to be performed>
<helper>
could either be the full filer-qt
or a subset of it that just exposes the copy, move/rename, delete functionality.
Notes:
This is a follow-up from #9.
Would it be possible to adjust the order a bit?
Ideally:
/
, URL computer:///root.link
) should always be the first oneinode/mount-point
, URL computer:///*.mount
) ideally in the order of time when they were mounted (oldest mounts first)cc @moochris
Support drag and drop to the trash
When the files on the desktop are directly moved to the trash can, the moving menu will be displayed, Not moved directly to the trash.
An error occurs when moving files from the desktop to the trash.
When in the file manager will move files to the trash, but not working.
In the file manager or the desktop, Move the files to the Dock trash, Is not working.
After selecting "Move to Trash" from the right-click menu of the file, there is no original file in the trash can.
In of the GUI of RISC OS when saving a file you can drag and drop the file before it has been created to the desired output directory using the mouse.
Look at this video of this feature:
https://youtu.be/oL4w3AK6Qpw?t=750
Some screenshots from the video:
The save dialog:
Dragging the file to the output directory:
Dropping it has placed it and saved in the desired directory.
E.g., for the icon:
https://github.com/AppImage/libappimage/blob/master/include/appimage/utils/ResourcesExtractor.h#L71
https://github.com/AppImage/libappimage/blob/master/include/appimage/utils/ResourcesExtractor.h#L32
then feed a QIcon with the result.
Thanks @azubieta
Right-click a file or folder -> "Compress"
should do something.
Currently it does nothing.
Need to understand what fm_archiver
is supposed to do, and possibly replace it by calling zip
...
GNUstep Info-gnustep.plist
comes in old-style plist format.
This library seems to be able to read it:
https://github.com/abidon/libpbxparser
Once we can parse those, we can hopefully display all icons correctly for GNUstep applications.
The automated test took the following screenshot:
Strangely, I cannot reproduce this on a local Clear Linux OS machine.
go-appimage is supposed to deploy imageformats and iconengines. Did it do that, and did it succeed doing it?
Reference:
AppImage/appimage.github.io#2314
I have not found a way to display the change time (ctime) in Filer for list view colum and Get info.
Especially in Spatial mode there is currently no way to eject/unmount disks/loop-mounted partitions.
Whenever the user right-clicks on a directory, we should check whether something is mounted at that directory (a mountpoint) and if yes, offer "Eject" rather than "Move to Trash" in the context menu.
https://twitter.com/mjhagen/status/1363214762046349315
Users should be able to paste custom icons here:
Custom icon data would need to be handled similar to the metadata for spatial mode.
For directories, we already have a feature that a file inside a folder called .DirIcon
will be used as the icon for the directory if the directory is an AppDir.
Desktop icons should be rendered on the main screen, the one with the Menu and the Dock.
Currently they seem to be rendered on the rightmost screen:
Screenshot Credit: @grahamperrin
Less like Properties, more like Get Info
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.