Page 1 of 1

Yad File Browser

Posted: Wed May 31, 2023 3:07 pm
by stemsee

Yad --icon --read-dir presents desktop files in a directory. If every file and every directory had a .desktop file representing it then that would make for a rudimentary file navigator, with executable functionality and higher levels of custom actionability per file or per dir. This makes for advanced customised security. So my experiment so far was to make a desktop file with the contents.

Code: Select all

[Desktop Entry]
Encoding=UTF-8
Name=root
GenericName=root
Icon=dir.png
Comment=directory
Exec=yad --icons --read-dir=/root
Terminal=false
Type=Application
Categories=File

and yes, it opens up a yad --icons --read-dir instance for /root. However i presently don't have .desktop files in /root representing files and dirs that are there. Of course creating them automatically would be trivial. Each would have an icon corresponding to a limited number of (mime) types. All dirs to any depth can be visible on the top plane, like a flattened tree. Files only get represented on opening a dir.desktop file. The Exec= string can be set automatically or manually. Just a simple backup file system navigator. I wonder how practical it would be?

Code: Select all

#!/bin/bash
for i in $(ls /)
do
echo "[Desktop Entry]
Encoding=UTF-8
Name=$i
GenericName=$i
Icon=dir.png
Comment=$i
Exec=yad --icons --read-dir=/$i
Terminal=false
Type=Application
Categories=File" > /tmp/$i.desktop
done

or better with find -max-depth -exec yfm.sh {} ... etc


Re: Yad File Manager

Posted: Wed May 31, 2023 4:23 pm
by stemsee

Yes! It works as expected.

The best thing is to create directory desktop files next to the represented directory and link all directory desktop files to /tmp. Files get created next to the represented file, and are created according to case statements for appropriate Exec= strings according to file type, mostly text/doc file or executable. Fully working!

EDIT: there are a hell of a lot of desktop files all over the place, so I realise now that they should be moved into their own 'file system structure' in /tmp or /root. Even better made into a system sfs and loaded when required.


Re: Yad File Manager

Posted: Thu Jun 01, 2023 12:28 am
by stemsee

Here is a proof of concept. Needs some refinement.

Code: Select all

#!/bin/sh
# Copyright (C) 2023  stemsee
# gpl v3.0
#
function dirfn {
X="$(echo $@ | sed -e "s/.\///")"
 echo "[Desktop Entry]
Encoding=UTF-8
Name=$@
GenericName=$@
Icon=folder.png
Comment=$@
Exec=yad --icons --read-dir=$X --width=400 --height=400 --monitor
Terminal=false
Type=Application
Categories=File" >  /tmp/yfm/"$X".desktop
}; export -f dirfn
function crdesktop {
	X="$(echo $@ | sed -e "s/.\///")"
	case "$X" in
		*.sfs|*.squashfs) app='load_sfs.sh'
		Icon="squashfs-image48.png";;
	    http://*|https://*|*.webm|*.m4a|*.mp3|*.mp4|*.ogg|*.aac|*.flac|*.wav|*.wav64|*.mov|*.mpg|*.mpeg|*.vob|*.avi|*.flv*|*.webv*|*.mkv*) app='ffplay'
		Icon="audio48.png";;
		*.epub) app='cr3'
		Icon="cr3.png";;
		*.exe|*.msi) app='wine'
		Icon="wine.png";;
		*.png|*.xpm|*.svg|*.icn|*.ico|*.bmp|*.gif|*.jpg|*.webp) app='feh --scale-down'
		Icon="paint48.png";;
		*.odt|*.odf|*.odg|*.doc*|*.xlm|*.ppt*|*.xls|*.xls*) app='libreoffice'
		Icon="word48.png";;
		*.pdf) app='evince'
		Icon="evince.png";;
	    *.sh|*.py|*.scene) app='eval exec'
		Icon="xterm.png";;
		*.lst|*.txt|*.cfg|*.conf|*.log|*.info) app='geany'
		Icon="edit48.png";;
esac
echo "[Desktop Entry]
Encoding=UTF-8
Name=$X
GenericName=$X
Icon=/usr/local/lib/X11/pixmaps/$Icon
Comment=$X
Exec=$app $X
Terminal=false
Type=Application
Categories=File"  >  /tmp/yfm/"$X".desktop
}; export -f crdesktop
cd ../
find .  -maxdepth 4 -type d -exec mkdir -p '/tmp/yfm/{}' \; -exec bash -c 'dirfn "$@"' bash {}  \; 
find . -maxdepth 5 -type f -exec bash -c 'crdesktop "$@"' bash {}  \; 
for dir in dev proc sys run tmp  lib lib64  usr/lib usr/lib64 usr/include usr/src usr/libexec usr/mkspecs usr/man usr/doc usr/info 
do
rm -rf /tmp/yfm/*$dir
rm -f /tmp/yfm/*$dir.desktop
done
mksquashfs /tmp/ymf /tmp/yfm.sfs -comp xz
sleep 4
load_sfs.sh --quiet --load /tmp/yfm.sfs


Re: Yad as File Browser

Posted: Thu Jun 01, 2023 5:23 pm
by stemsee

Yad File Browser is a simple file explorer which creates .desktop files with
execute string, icon and information.

Executing this script create a yfb directory in /tmp which is then populated with the
system's functional directories, no virtuals like /proc or /sys.
Then for each directory it creates a $dir.desktop file.
After this file.desktop files are created one for one with the running system.
When the creation processes have finished an yfb.sfs filesystem module is created
from the /tmp/yfb directory. Load this sfs and click on the desktop files
to browse directories and activate files. So far the number of files that can be
activated is not very extensive. Extensions can be added to the case statements
in the cdrdesktop function, along with execute strings and icons. Its use is
presently read only.

It uses yad --icons --read-dir="$dir-path" --monitor.

I may develope this further adding a list view navigator in yad paned mode.
The list view would give many more file manipulation possibilities including a popup menu.

Code: Select all

#!/bin/sh
# Copyright (C) 2023  stemsee
# gpl v3.0 for personal use
#  
function dirfn {

 echo "[Desktop Entry]
Encoding=UTF-8
Name=$@
GenericName=$@
Icon=folder48.png
Comment=$@
Exec=yad --title=\"yfb\" --window-icon=\"folder48.png\" --icons --read-dir=\"$@\" --width=400 --height=400 --monitor
Terminal=false
Type=Application
Categories=File" >  /tmp/yfb/"$@".desktop

}; export -f dirfn

function crdesktop {
	case "$@" in
		*.sfs|*.squashfs) app='load_sfs.sh --quiet --load'
		Icon="squashfs-image48.png";;
	    http://*|https://*|*.webm|*.m4a|*.mp3|*.mp4|*.ogg|*.aac|*.flac|*.wav|*.wav64|*.mov|*.mpg|*.mpeg|*.vob|*.avi|*.flv*|*.webv*|*.mkv*) app='ffplay'
		Icon="audio48.png";;
		*.epub) app='cr3'
		Icon="cr3.png";;
		*.exe|*.msi) app='wine'
		Icon="wine.png";;
		*.png|*.xpm|*.svg|*.icn|*.ico|*.bmp|*.gif|*.jpg|*.webp) app='feh --scale-down'
		Icon="paint48.png";;
		*.odt|*.odf|*.odg|*.doc*|*.xlm|*.ppt*|*.xls|*.xls*) app='libreoffice'
		Icon="word48.png";;
		*.pdf) app='evince'
		Icon="evince.png";;
	    *.sh|*.py|*.scene) app=''
		Icon="xterm.png";;
		*.lst|*.txt|*.cfg|*.conf|*.log|*.info) app='geany'
		Icon="edit48.png";;
esac
X=$(echo $@ | cut -c2-$$)
echo "[Desktop Entry]
Encoding=UTF-8
Name=$@
GenericName=$X
Icon=/usr/local/lib/X11/pixmaps/$Icon
Comment=$@
Exec=$app $@
Terminal=false
Type=Application
Categories=File"  >  /tmp/yfb/"$@".desktop

}; export -f crdesktop
mkdir -p /tmp/yfb
for i in /usr /home /root /opt /etc /mnt /bin /sbin /var
do
find $i -maxdepth 6 -type d  -exec mkdir -p '/tmp/yfb/{}' \;  -exec bash -c 'dirfn "$@"' bash {}  \;
done
for i in /usr /home /root /opt /etc /mnt /bin /sbin /var
do
find $i -maxdepth 7 -type f  -exec bash -c 'crdesktop "$@"' bash {}  \; 
done
mksquashfs /tmp/yfb /tmp/yfb.sfs -comp xz
sleep 4
load_sfs.sh --quiet --load /tmp/yfb.sfs

Re: Yad File Browser

Posted: Fri Jun 02, 2023 10:04 am
by stemsee

I need to research how to re-use the mime functions of the system instead or creating case statements for every type of extension.


Re: Yad File Browser

Posted: Tue Jul 23, 2024 1:54 pm
by vektor_alian

Hi stemsee

A year has gone by and I am curious as to the status of your project.

I find the idea very interesting.

Vektor


Re: Yad File Browser

Posted: Tue Jul 23, 2024 2:04 pm
by mikewalsh
vektor_alian wrote: Tue Jul 23, 2024 1:54 pm

Hi stemsee

A year has gone by and I am curious as to the status of your project.

I find the idea very interesting.

Vektor

@vektor_alian :-

TBH, I'm really not sure if we'll see stemsee on the forums again. There was something of a bust-up recently, and stemsee insisted he wanted his a/c deleted.

He hasn't been back since then.

Mike. :|


Re: Yad File Browser

Posted: Tue Jul 23, 2024 2:06 pm
by vektor_alian

Thanks for the sad news. All that knowledge.

Vektor


Re: Yad File Browser

Posted: Thu Jul 25, 2024 9:34 am
by stemsee

@vektor_alianThanks for your interest in YFB.

Improvements to make are to properly implement xdg --open
Also to programatically expand the yfb.sfs to /tmp and update desktop files, add remove, regularly etc
YFB.desktop files needs integrating with System Nonsuch App for a more practical experience.

Hi Mike, I am either fluctuating between standpoints or am in a superposition. :lol: