Projects/KioFuse: Difference between revisions
No edit summary |
(Add a warning: this is mostly an historical page) |
||
(16 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{warning|1=This page describes an old version of KioFuse which does not compile on recent system (anything based on Qt5 or newer). It is kept for historical reference.}} | ||
KioFuse allows you to mount remote directories into the root hierarchy of your local file system, thereby exposing [http://docs.kde.org/stable/en/kdebase/kioslave/index.html KDE's advanced access capabilities] (SSH, SAMBA/Windows, FTP, TAR/GZip/BZip2, WebDav, etc) to POSIX-compliant applications such as Firefox, OpenOffice, GNOME apps, shell utilities and more. Another important advantage of KioFuse is that it allows you to arrange the hierarchy of '''all''' your remote, archived and compressed files in whichever way makes sense to you. | KioFuse allows you to mount remote directories into the root hierarchy of your local file system, thereby exposing [http://docs.kde.org/stable/en/kdebase/kioslave/index.html KDE's advanced access capabilities] (SSH, SAMBA/Windows, FTP, TAR/GZip/BZip2, WebDav, etc) to POSIX-compliant applications such as Firefox, OpenOffice, GNOME apps, shell utilities and more. | ||
Usually, you would browse an FTP-server with firefox, but with KioFuse you can use Dolphin for that alternatively. | |||
Another important advantage of KioFuse is that it allows you to arrange the hierarchy of '''all''' your remote, archived and compressed files in whichever way makes sense to you. | |||
KioFuse works by acting as a bridge between KDE's [http://api.kde.org/4.0-api/kdelibs-apidocs/kio/html/namespaceKIO.html KIO filesystem design] and [http://fuse.sourceforge.net FUSE]. | KioFuse works by acting as a bridge between KDE's [http://api.kde.org/4.0-api/kdelibs-apidocs/kio/html/namespaceKIO.html KIO filesystem design] and [http://fuse.sourceforge.net FUSE]. | ||
=== Installation === | === Installation === | ||
* Install kdelibs (version 4.0 or higher) provided by your Operating System or compile it according to these (non-existing) [http://techbase.kde.org/index.php?title=Getting_Started/Build/KDE4 intructions]. | |||
* Install kdelibs (version 4.0 or higher) provided by your Operating System or compile it according to these [http://techbase.kde.org/index.php?title=Getting_Started/Build/KDE4 intructions]. | |||
* Type the following commands into a terminal: | * Type the following commands into a terminal: | ||
< | <syntaxhighlight lang="text"> | ||
svn checkout svn://anonsvn.kde.org/home/kde/trunk/playground/libs/kiofuse | svn checkout svn://anonsvn.kde.org/home/kde/trunk/playground/libs/kiofuse | ||
cd kiofuse | cd kiofuse | ||
cmake . | cmake . | ||
make | make | ||
</ | </syntaxhighlight> | ||
=== Running KioFuse === | === Running KioFuse === | ||
* Mount with: | * Mount with: | ||
<tt>kiofuse --mountpoint <mountpoint> --URL <URL></tt> | <tt>kiofuse --mountpoint <mountpoint> --URL <URL></tt> | ||
Line 25: | Line 26: | ||
Real-world example: | Real-world example: | ||
(Though in the actual real world no one would do this since clicking on a *.tar.gz file in Dolphin just enters the ZIPfile without further ado. If anything, kiofuse here slows down the user's workflow if he were to follow this guide.) | |||
< | <syntaxhighlight lang="text"> | ||
# Create the mount point | # Create the mount point | ||
mkdir ~/fuse-source | mkdir ~/fuse-source | ||
# Download the compressed archive of the FUSE source code | # Download the compressed archive of the FUSE source code | ||
wget http://superb-east.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.2.tar.gz | wget http://superb-east.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.2.tar.gz -P ~ | ||
# Mount the archive in ~/fuse-source | # Mount the archive in ~/fuse-source | ||
./kiofuse --mountpoint ~/fuse-source --URL tar:~/fuse-2.7.2.tar.gz & | ./kiofuse --mountpoint ~/fuse-source --URL tar:~/fuse-2.7.2.tar.gz & | ||
# Browse the source code in your favorite filemanager | # Browse the source code in your favorite filemanager without ever needing to unpack the archive! | ||
dolphin ~/fuse-source & | dolphin ~/fuse-source & | ||
nautilus ~/fuse-source & | nautilus ~/fuse-source & | ||
thunar ~/fuse-source & | thunar ~/fuse-source & | ||
</ | </syntaxhighlight> | ||
=== Screenshots === | |||
[[image:kiofuse_example.png|frame|center]] | |||
=== Features and TODO === | === Features and TODO === | ||
* Some KIO slaves such as tar: don't support seeking and therefore won't be able to read or write to files. Fixing these slaves is on the [http://websvn.kde.org/trunk/playground/libs/kiofuse/TODO?view=markup TODO list]. | |||
* Some KIO slaves such as tar: don't support seeking and therefore won't be able to read or write to files. Fixing these slaves is on the TODO list. | |||
* KIO needs to be modified so that it is aware of KioFuse mounts and so that it uses its native functions (as opposed to POSIX) to access those resources. | * KIO needs to be modified so that it is aware of KioFuse mounts and so that it uses its native functions (as opposed to POSIX) to access those resources. | ||
=== POSIX Capabilities === | === POSIX Capabilities === | ||
See the FUSE API for the list of all [http://fuse.sourceforge.net/doxygen/structfuse__operations.html file I/O commands]. | |||
{| border="1" | {| border="1" | ||
! Name !! Description !! Filename | ! Name !! Description !! Filename | ||
Line 56: | Line 58: | ||
| ReadLink || Determine destination of link || style="background-color: lightgreen;" | Done | | ReadLink || Determine destination of link || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| MkNod || Create file || style="background-color: | | MkNod || Create file || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| MkDir || Create a directory || style="background-color: | | MkDir || Create a directory || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| UnLink || Remove a symlink || style="background-color: | | UnLink || Remove a symlink || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| RmDir || Remove a directory || style="background-color: | | RmDir || Remove a directory || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| SymLink || Create a symlink || style="background-color: | | SymLink || Create a symlink || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| Rename || Rename a file or directory || style="background-color: | | Rename || Rename a file or directory || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| Link || Create a hard link || style="background-color: | | Link || Create a hard link || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| Chmod || Change permissions of a file or directory || style="background-color: | | Chmod || Change permissions of a file or directory || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| Chown || Change owner of a file or directory || style="background-color: | | Chown || Change owner of a file or directory || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| Truncate || Change the size of a file || style="background-color: | | Truncate || Change the size of a file || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| Open || Open a file for reading, writing, and/or truncating || style="background-color: lightgreen;" | Done | | Open || Open a file for reading, writing, and/or truncating || style="background-color: lightgreen;" | Done | ||
Line 80: | Line 82: | ||
| Read || Read the contents of a file || style="background-color: lightgreen;" | Done | | Read || Read the contents of a file || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| Write || Write data to a file || style="background-color: | | Write || Write data to a file || style="background-color: lightgreen;" | Done | ||
|- | |- | ||
| StatFS || Get Filesystem Statistics || style="background-color:#ff4242;" | Not Started | | StatFS || Get Filesystem Statistics || style="background-color:#ff4242;" | Not Started | ||
|- | |- | ||
| Flush || Flush cached data || style="background-color:#ff4242;" | Not Started | | Flush || Flush cached data || style="background-color:#ff4242;" | Not Started | ||
|- | |||
| Release || Close an opened file || style="background-color: lightgreen;" | Done | |||
|- | |- | ||
| FSync || Synchronize file contents || style="background-color:#ff4242;" | Not Started | | FSync || Synchronize file contents || style="background-color:#ff4242;" | Not Started | ||
Line 122: | Line 124: | ||
| UTimeNS || Change the access and mod times in nanoseconds || style="background-color:#ff4242;" | Not Started | | UTimeNS || Change the access and mod times in nanoseconds || style="background-color:#ff4242;" | Not Started | ||
|} | |} | ||
=== Source Code === | |||
The source code to KioFuse can be browsed at: | |||
http://websvn.kde.org/trunk/playground/libs/kiofuse/ |
Latest revision as of 15:32, 10 September 2019
KioFuse allows you to mount remote directories into the root hierarchy of your local file system, thereby exposing KDE's advanced access capabilities (SSH, SAMBA/Windows, FTP, TAR/GZip/BZip2, WebDav, etc) to POSIX-compliant applications such as Firefox, OpenOffice, GNOME apps, shell utilities and more.
Usually, you would browse an FTP-server with firefox, but with KioFuse you can use Dolphin for that alternatively.
Another important advantage of KioFuse is that it allows you to arrange the hierarchy of all your remote, archived and compressed files in whichever way makes sense to you.
KioFuse works by acting as a bridge between KDE's KIO filesystem design and FUSE.
Installation
- Install kdelibs (version 4.0 or higher) provided by your Operating System or compile it according to these (non-existing) intructions.
- Type the following commands into a terminal:
svn checkout svn://anonsvn.kde.org/home/kde/trunk/playground/libs/kiofuse
cd kiofuse
cmake .
make
Running KioFuse
- Mount with:
kiofuse --mountpoint <mountpoint> --URL <URL>
- Unmount with:
fusermount -u <mountpoint>
Real-world example: (Though in the actual real world no one would do this since clicking on a *.tar.gz file in Dolphin just enters the ZIPfile without further ado. If anything, kiofuse here slows down the user's workflow if he were to follow this guide.)
# Create the mount point
mkdir ~/fuse-source
# Download the compressed archive of the FUSE source code
wget http://superb-east.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.2.tar.gz -P ~
# Mount the archive in ~/fuse-source
./kiofuse --mountpoint ~/fuse-source --URL tar:~/fuse-2.7.2.tar.gz &
# Browse the source code in your favorite filemanager without ever needing to unpack the archive!
dolphin ~/fuse-source &
nautilus ~/fuse-source &
thunar ~/fuse-source &
Screenshots
Features and TODO
- Some KIO slaves such as tar: don't support seeking and therefore won't be able to read or write to files. Fixing these slaves is on the TODO list.
- KIO needs to be modified so that it is aware of KioFuse mounts and so that it uses its native functions (as opposed to POSIX) to access those resources.
POSIX Capabilities
See the FUSE API for the list of all file I/O commands.
Name | Description | Filename |
---|---|---|
GetAttr | Permissions, Owner, Group | Done |
ReadLink | Determine destination of link | Done |
MkNod | Create file | Done |
MkDir | Create a directory | Done |
UnLink | Remove a symlink | Done |
RmDir | Remove a directory | Done |
SymLink | Create a symlink | Done |
Rename | Rename a file or directory | Done |
Link | Create a hard link | Done |
Chmod | Change permissions of a file or directory | Done |
Chown | Change owner of a file or directory | Done |
Truncate | Change the size of a file | Done |
Open | Open a file for reading, writing, and/or truncating | Done |
Read | Read the contents of a file | Done |
Write | Write data to a file | Done |
StatFS | Get Filesystem Statistics | Not Started |
Flush | Flush cached data | Not Started |
Release | Close an opened file | Done |
FSync | Synchronize file contents | Not Started |
SetXAttr | Set external attributes | Not Started |
GetXAttr | Get external attributes | Not Started |
ListXAttr | List external attributes | Not Started |
RemoveXAttr | Remove external attributes | Not Started |
OpenDir | Open a directory | Not Started |
ReadDir | List files and subdirectories | Done |
ReleaseDir | Release directory | Not Started |
FSyncDir | Synchronize directory contents | Not Started |
Init | Initialize filesystem | Not Started |
Destroy | Clean up filesystem | Not Started |
Access | Check file access permissions | Work In Progress |
Create | Create and open a file | Not Started |
FTruncate | Change the size of an open file | Not Started |
FGetAttr | Get attributes of an open file | Not Started |
Lock | Lock a resource | Not Started |
UTimeNS | Change the access and mod times in nanoseconds | Not Started |
Source Code
The source code to KioFuse can be browsed at: http://websvn.kde.org/trunk/playground/libs/kiofuse/