Building MMview, a universal file viewer
- MochiMoppel
- Posts: 2084
- Joined: Wed 26 Jan 2011, 09:06
- Location: Japan
Hi MochiMoppel, If I click a symbolic link to a text file the view pane is blank. Is it a limitation of the chooser GTK widget? Thanks for this script.
edit: MochiMoppel followed up by PM. the problem is identified and solved.
edit: MochiMoppel followed up by PM. the problem is identified and solved.
Last edited by step on Sat 11 Feb 2017, 19:08, edited 1 time in total.
[url=http://murga-linux.com/puppy/viewtopic.php?t=117546]Fatdog64-810[/url]|[url=http://goo.gl/hqZtiB]+Packages[/url]|[url=http://goo.gl/6dbEzT]Kodi[/url]|[url=http://goo.gl/JQC4Vz]gtkmenuplus[/url]
Thanks for the pointers - they led me to make other beneficial changes.....MochiMoppel wrote:....You need to use proper quoting in this script .... or you could simple symlink to defaultfilemanager, where you did the quoting right, hence no problems with defaultfilemanager.
LxPup = Puppy + LXDE
Main version used daily: LxPupSc; Assembler of UPups, ScPup & ScPup64, LxPup, LxPupSc & LxPupSc64
Main version used daily: LxPupSc; Assembler of UPups, ScPup & ScPup64, LxPup, LxPupSc & LxPupSc64
- MochiMoppel
- Posts: 2084
- Joined: Wed 26 Jan 2011, 09:06
- Location: Japan
New features in update 2017-02-12 (see also initial post)
Menu bar (shortcut F10)
Offers keyboard access for all and shortcuts for most functions.
Usage messages for executables
Most binaries in the various bin directories display a short usage message when the user typesinto a console. Sometimes it should rather be -help, -h or nothing at all... no rules ... hit and pray.
The script tries --help and -help and displays the output in the viewer pane. Most of the times it succeeds. It's a convenient way to get an idea what all these little programs are about.
Since this function executes a file and not just reads it, it is available only on demand (shortcut F1) .
The function contains some safeguards against "rogue" utilities:
- Works only for programs which contain the string 'usage:'
- Runs the program in a tiny console window
- Kills the console automatically, latest after 0.5 sec.
Directory tree size
The script displays the disk usage of a directory tree (command du -hs ). Symlinks and directories containing only zero size files are displayed as 0, completely empty directories are displayed as empty.
Can be a bit slow for very large directories but generally the speed is acceptable.
Window size and position
The script now remembers its last size and position on screen if the user closes the window with the Close button or the (new) keyboard shortcut Ctrl+Q.
Menu bar (shortcut F10)
Offers keyboard access for all and shortcuts for most functions.
Usage messages for executables
Most binaries in the various bin directories display a short usage message when the user types
Code: Select all
<filename> --help
The script tries --help and -help and displays the output in the viewer pane. Most of the times it succeeds. It's a convenient way to get an idea what all these little programs are about.
Since this function executes a file and not just reads it, it is available only on demand (shortcut F1) .
The function contains some safeguards against "rogue" utilities:
- Works only for programs which contain the string 'usage:'
- Runs the program in a tiny console window
- Kills the console automatically, latest after 0.5 sec.
Directory tree size
The script displays the disk usage of a directory tree (command du -hs ). Symlinks and directories containing only zero size files are displayed as 0, completely empty directories are displayed as empty.
Can be a bit slow for very large directories but generally the speed is acceptable.
Window size and position
The script now remembers its last size and position on screen if the user closes the window with the Close button or the (new) keyboard shortcut Ctrl+Q.
Love the way the viewer displays the size when you singleclick a directory. Very handy.
I do have a problem with it not displaying some text files. Is this due to my locale or the encoding selection or something? I can read the file pci.ids but not the file usb.ids
See attached pic:
I do have a problem with it not displaying some text files. Is this due to my locale or the encoding selection or something? I can read the file pci.ids but not the file usb.ids
See attached pic:
- Attachments
-
- textfile_no_display.jpg
- (77.3 KiB) Downloaded 647 times
Dear MochiMoppel,
It is getting better all the time. One thing I miss, though, from an earlier version is:
I wonder whether that could not be an option that could be set in the menu.
With kind regards,
vovchik
It is getting better all the time. One thing I miss, though, from an earlier version is:
Code: Select all
ctl=`file -b "$vCHOOSER"|awk -v mw="$MAXUNSCALED_X" -v mh="$MAXUNSCALED_Y" '{if ($(NF-2)*$NF!=0){if ($(NF-2)<=mw&&$NF<=mh){z=1} else z=2;print z;}}'`
and
ctl=`exiv2 -ps "$vCHOOSER"|awk -v mw="$MAXUNSCALED_X" -v mh="$MAXUNSCALED_Y" 'NR==4&&NF>3{if ($(NF-2)*$NF!=0){if ($(NF-2)<=mw&&$NF<=mh){z=1} else z=2;print z;}}'`
in the case statement and this in the gtkdialog part:
<width>'$MAXUNSCALED_X'</width><height>'$MAXUNSCALED_X'</height>
With kind regards,
vovchik
- MochiMoppel
- Posts: 2084
- Joined: Wed 26 Jan 2011, 09:06
- Location: Japan
No.Yes.No.greengeek wrote:I do have a problem with it not displaying some text files. Is this due to my locale or the encoding selection or something?
I have included support for iso-8859-1 in my private edition but didn't include it in the posted version. Given that it requires an extra utility and that it is not widely used I thought I should wait until I know if there is demand for it. I also have no clue what other encodings need support, so if anyone can enlighten me I would be grateful.
There is no way to enable any rightclick action since chooser's built-in rightclick dialog can't be removed/customized.greengeek wrote:Is there any way to enable a rightclick "open with" menu in the chooser widget?
It was never included in an earlier version. Of course you are free to implement some1's code if it suits your needs. I still prefer dejan555's solution.vovchik wrote:One thing I miss, though, from an earlier version is:
Convert iso-encodings to UTF 8.
Inject this as a case-statement,fx. after the ascii-case
Inject this as a case-statement,fx. after the ascii-case
Code: Select all
*charset=iso-*)
iconv -f "ISO_${vSTATUSBAR##*=iso-}" -t UTF-8 "$vCHOOSER" > $MSGFILE
ln -fsn "$MSGFILE" $FILELNK
;;
- MochiMoppel
- Posts: 2084
- Joined: Wed 26 Jan 2011, 09:06
- Location: Japan
- fabrice_035
- Posts: 765
- Joined: Mon 28 Apr 2014, 17:54
- Location: Bretagne / France
Hi,
Nice idea, but i found a problem with ffprobe and MKV files, show nothing.
[edit]
found solution, add octet-stream for support MKV files
bye.
Nice idea, but i found a problem with ffprobe and MKV files, show nothing.
[edit]
found solution, add octet-stream for support MKV files
Code: Select all
*│*audio*|*│*video*|*octet-stream*|*'.mp3 '*|*'.ogg '*)
- MochiMoppel
- Posts: 2084
- Joined: Wed 26 Jan 2011, 09:06
- Location: Japan
Yes, you can, but you shouldn'tfabrice_035 wrote:found solution, add octet-stream for support MKV filesCode: Select all
*│*audio*|*│*video*|*octet-stream*|*'.mp3 '*|*'.ogg '*)
octet-stream can be anything. It only tells you that it's a binary. It shouldn't be used in the case statement.
Instead you should use the file extension.
So far I didn't give much attention to videos.
With autoplay enabled you can hear them....not much fun
If you put the following case before the *│*audio*|*│*video*|*'.mp3 '*|*'.ogg '*) case you can actually see them. They will appear in a small external window. Sorry, no way to embed them in gtkdialog:
Code: Select all
*│*video*|*'.mkv '*)
if (( $AUTOPLAY )) ;then
ffplay -x 320 -y 180 -i "$vCHOOSER" &
echo -n $! > $PID_FFP
fi
ffprobe "$vCHOOSER" > $MSGFILE
ln -fsn $MSGFILE $FILELNK
;;
- MochiMoppel
- Posts: 2084
- Joined: Wed 26 Jan 2011, 09:06
- Location: Japan
New features in update 2017-03-10 (see also initial post)
Image scaling
Based on some1's proposal this solution removes most of my initial concerns and includes some improvements:
- Scaled or unscaled display can be set in the new Preferences menu (vovchik, I heard you )
- The selected mode becomes effective immediately. No restart required.
- A new text label indicates if the displayed image is scaled or not
- The scale is determined by the intial window size.Though it can't be changed dynamically by resizing the window during a session, it can be changed by resizing the window, followed by a restart (the last window size is saved and used as default for the restart)
- The image is loaded only by the notebook page used for display, not for both pixmap pages
Autoplay
Autoplay for audio and video files is implemented and can be enabled via the Preferences menu. The chosen setting takes effect immediately.
New file formats
Some new file formats and codesets are supported.
Image scaling
Based on some1's proposal this solution removes most of my initial concerns and includes some improvements:
- Scaled or unscaled display can be set in the new Preferences menu (vovchik, I heard you )
- The selected mode becomes effective immediately. No restart required.
- A new text label indicates if the displayed image is scaled or not
- The scale is determined by the intial window size.Though it can't be changed dynamically by resizing the window during a session, it can be changed by resizing the window, followed by a restart (the last window size is saved and used as default for the restart)
- The image is loaded only by the notebook page used for display, not for both pixmap pages
Autoplay
Autoplay for audio and video files is implemented and can be enabled via the Preferences menu. The chosen setting takes effect immediately.
New file formats
Some new file formats and codesets are supported.
- Attachments
-
- mm_quickview_20170310.png
- (130.06 KiB) Downloaded 338 times
This is a REALLY nice utility.
I think should be in every puppy!
I can understand that you may not want to have it in woof-CE (you might reconsider though...) but maybe have it as a pet to facilitate the build process.
A couple of issues that you might consider addressing is the appearance of /mnt/home as (the proper mount point name) "dev_save", that may be a bit confusing. It is also a duplication since the relevant partition is also shown.
There is also no indication if a partition is mounted. Partitions auto-mount if clicked upon but provide no way to unmount them. BTW not sure how partitions are ordered in the side panel. Reverse volume-forward partition?
Anyway, is still super.
I think should be in every puppy!
I can understand that you may not want to have it in woof-CE (you might reconsider though...) but maybe have it as a pet to facilitate the build process.
A couple of issues that you might consider addressing is the appearance of /mnt/home as (the proper mount point name) "dev_save", that may be a bit confusing. It is also a duplication since the relevant partition is also shown.
There is also no indication if a partition is mounted. Partitions auto-mount if clicked upon but provide no way to unmount them. BTW not sure how partitions are ordered in the side panel. Reverse volume-forward partition?
Anyway, is still super.
- Attachments
-
- quickview.jpg
- (50.77 KiB) Downloaded 549 times
== [url=http://www.catb.org/esr/faqs/smart-questions.html]Here is how to solve your[/url] [url=https://www.chiark.greenend.org.uk/~sgtatham/bugs.html]Linux problems fast[/url] ==
Thanks for sorting the encoding handling - /usr/share/usbids now displays correctly on my system. (This file is a very interesting list of known usb device ids - a good reference)
If I close the mmquickview window by using the "close" radio button it will remember (and display) the last_viewed_directory (or item) when I next start the utility. Alternatively if I terminate the window by clicking the X button it does not remember the directory or item I was viewing during the previous run. Is there any way to allow mmquickview to remember it's last viewed directory when X is clicked?
One thing I like about having a viewer is that I can investigate the code within my scripts just by clicking them - no more risk of the code being actually executed when I click. (how often have I clicked on various text files to read them then accidentally clicked an executable script and started to panic about what it is doing...)
cheers!
If I close the mmquickview window by using the "close" radio button it will remember (and display) the last_viewed_directory (or item) when I next start the utility. Alternatively if I terminate the window by clicking the X button it does not remember the directory or item I was viewing during the previous run. Is there any way to allow mmquickview to remember it's last viewed directory when X is clicked?
One thing I like about having a viewer is that I can investigate the code within my scripts just by clicking them - no more risk of the code being actually executed when I click. (how often have I clicked on various text files to read them then accidentally clicked an executable script and started to panic about what it is doing...)
cheers!
+1jamesbond wrote:Very nice code. Do you mind if I get this included in Fatdog?
Told ya, Mochi, it was just a matter of time. Quickview has worked great in all the dpup-stretch builds I'm experimenting with. Never even thought to drop it in Fatdog64, I assumed it would not work right out of the box. Gonna try now that James posted