Giter Club home page Giter Club logo

fsviewer's Introduction

FSViewer

FSViewer screenshot

What is this?

FSViewer is a NeXT FileViewer lookalike for Window Maker. Viewing is currently supported via browser mode and list mode. It has been written in C using the WINGs library.

The tool was originally written by George Clernon (1998-99) and later maintained by Guido Scholz (2002-07).

This version is based on a source code repository I created around the same time to keep track of some fixes I added to the codebase over the years:

  • Adapt window bottom to more closely resemble NeXT FileViewer
  • Add support for showing available space on filesystem
  • Switch build system to cmake
  • Fix recurring crashes
  • Fix main window not showing title bar
  • Fix building on 64 bit systems
  • Fix building on FreeBSD
  • Fix building on OpenBSD

Building from sources

  1. Install prerequisites. This can be as easy as:

    • Debian:
      sudo apt install cmake libxpm-dev libwmaker-dev libwraster-dev libwings-dev libxmu-dev libpango1.0-dev
    • FreeBSD:
      sudo pkg install cmake windowmaker
    • NetBSD:
      sudo pkgin in cmake pkg-config windowmaker
    • OpenBSD:
      doas pkg_add cmake windowmaker
  2. Build: cmake . && make

  3. Install: sudo make install

More information

For more information, please check the original README.

fsviewer's People

Contributors

roblillack avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

fsviewer's Issues

Arch Linux, no side panel, only main browser window.

FSViewer found all libs during compile, no errors, installed succesfully.

Main browser mode window opens. Can click around, launch files, enter folders, drag folders to the top to bookmark.
No side panel, can not manipulate files other than launch.

Based on the screenshot in the README file, that is not the intended way as far as I understand.

-- Checking for modules 'wrlib;wmlib;WUtil;WINGs;xpm;xmu;x11'
-- Found wrlib, version 0.95.9
-- Found wmlib, version 0.95.9
-- Found WUtil, version 0.95.9
-- Found WINGs, version 0.95.9
-- Found xpm, version 3.5.14
-- Found xmu, version 1.1.4
-- Found x11, version 1.8.3

No errors outputted while running application. All files installed where they should be.

Using Windowmaker-crm-git, compiled 12 september 2022.

Translation files not installed?

It seems that with the current main branch, cmake doesn't install any .g?mo files nor does it compile .po files. In fact, .gmo files just seem to be included in the repository, which also shouldn't be the case. The only files installed are the binary, by default /usr/local/bin/FSViewer, and .xpm and .tif icons.

Build Issue on FreeBSD 14.1

Window Maker 0.96.0

-- The C compiler identification is Clang 18.1.5
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "2.2.0") 
-- Checking for modules 'wrlib;wmlib;WUtil;WINGs;xpm;xmu;x11
--   Found wmlib, version 0.96.0
--   Found WUtil, version 0.96.0
--   Found WINGs, version 0.96.0
--   Found xpm, version 3.5.17
--   Found xmu, version 1.1.4
--   Found x11, version 1.8.7
-- Found Intl: /usr/local/lib/libintl.so (found version "0.22.5") 
-- Configuring done (0.2s)
-- Generating done (0.0s)
-- Build files have been written to: /home/makaba/fsviewer
[  3%] Building C object CMakeFiles/FSViewer.dir/src/DnD.c.o
[  6%] Building C object CMakeFiles/FSViewer.dir/src/FSBrowser.c.o              
/home/makaba/fsviewer/src/FSBrowser.c:177:12: warning: cast to smaller integer type 'int' from 'FSBrowser *' (aka 'struct W_FSBrowser *') [-Wpointer-to-int-cast]                                                                               
  177 |     assert((int)bPtr);                                                  
      |            ^~~~~~~~~                                                    
/usr/include/assert.h:55:21: note: expanded from macro 'assert'                 
   55 | #define assert(e)       ((e) ? (void)0 : __assert(__func__, __FILE__, \ 
      |                           ^                                             
/home/makaba/fsviewer/src/FSBrowser.c:323:12: warning: cast to smaller integer type 'int' from 'FSBrowser *' (aka 'struct W_FSBrowser *') [-Wpointer-to-int-cast]                                                                               
  323 |     assert((int)bPtr);                                                  
      |            ^~~~~~~~~                                                    
/usr/include/assert.h:55:21: note: expanded from macro 'assert'                 
   55 | #define assert(e)       ((e) ? (void)0 : __assert(__func__, __FILE__, \ 
      |                           ^                                             
/home/makaba/fsviewer/src/FSBrowser.c:642:13: warning: enumeration values 'WSDecrementWheel' and 'WSIncrementWheel' not handled in switch [-Wswitch]            
  642 |     switch (WMGetScrollerHitPart(sPtr)) {                               
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~                                  
/home/makaba/fsviewer/src/FSBrowser.c:1075:24: warning: cast to smaller integer type 'int' from 'void *' [-Wvoid-pointer-to-int-cast]                           
 1075 |     int column, item = (int)WMGetNotificationClientData(notification);  
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
4 warnings generated.                                                           
[  9%] Building C object CMakeFiles/FSViewer.dir/src/FSFileBrowser.c.o          
[ 12%] Building C object CMakeFiles/FSViewer.dir/src/FSFileButton.c.o           
[ 15%] Building C object CMakeFiles/FSViewer.dir/src/FSFileView.c.o             
/home/makaba/fsviewer/src/FSFileView.c:324:25: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]                                
  324 |     if ((fView->primary == False)) {                                    
      |          ~~~~~~~~~~~~~~~^~~~~~~~                                        
/home/makaba/fsviewer/src/FSFileView.c:324:25: note: remove extraneous parentheses around the comparison to silence this warning                                
  324 |     if ((fView->primary == False)) {                                    
      |         ~               ^       ~                                       
/home/makaba/fsviewer/src/FSFileView.c:324:25: note: use '=' to turn this equality comparison into an assignment                                                
  324 |     if ((fView->primary == False)) {                                    
      |                         ^~                                              
      |                         =                                               
/home/makaba/fsviewer/src/FSFileView.c:429:29: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]                                
  429 |         if ((fView->primary == True)) {                                 
      |              ~~~~~~~~~~~~~~~^~~~~~~                                     
/home/makaba/fsviewer/src/FSFileView.c:429:29: note: remove extraneous parentheses around the comparison to silence this warning                                
  429 |         if ((fView->primary == True)) {                                 
      |             ~               ^      ~                                    
/home/makaba/fsviewer/src/FSFileView.c:429:29: note: use '=' to turn this equality comparison into an assignment                                                
  429 |         if ((fView->primary == True)) {                                 
      |                             ^~                                          
      |                             =                                           
/home/makaba/fsviewer/src/FSFileView.c:572:13: warning: enumeration value 'FileLink' not handled in switch [-Wswitch]                                           
  572 |     switch (action) {                                                   
      |             ^~~~~~                                                      
/home/makaba/fsviewer/src/FSFileView.c:682:30: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not [-Wpointer-sign]   
  682 |     fileInfo = FSGetFileInfo(data);                                     
      |                              ^~~~                                       
/home/makaba/fsviewer/src/files.h:90:31: note: passing argument to parameter 'pathname' here                                                                    
   90 | FileInfo* FSGetFileInfo(char* pathname);                                
      |                               ^                                         
/home/makaba/fsviewer/src/FSFileView.c:775:29: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not [-Wpointer-sign]   
  775 |         src = FSGetFileInfo(data);                                      
      |                             ^~~~                                        
/home/makaba/fsviewer/src/files.h:90:31: note: passing argument to parameter 'pathname' here                                                                    
   90 | FileInfo* FSGetFileInfo(char* pathname);                                
      |                               ^                                         
/home/makaba/fsviewer/src/FSFileView.c:820:22: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not [-Wpointer-sign]   
  820 |     DndSetData(type, path, (unsigned long)(strlen(path) + 1));          
      |                      ^~~~                                               
/home/makaba/fsviewer/src/DnD.h:12:42: note: passing argument to parameter 'Data' here                                                                          
   12 | void DndSetData(int Type, unsigned char* Data, unsigned long Size);     
      |                                          ^                              
6 warnings generated.                                                           
[ 18%] Building C object CMakeFiles/FSViewer.dir/src/FSFinder.c.o               
/home/makaba/fsviewer/src/FSFinder.c:210:16: warning: cast to smaller integer type 'int' from 'void *' [-Wvoid-pointer-to-int-cast]                             
  210 |     } else if ((int)WMGetNotificationClientData(notif) == WMReturnTextMovement) {                                                                       
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
1 warning generated.                                                            
[ 21%] Building C object CMakeFiles/FSViewer.dir/src/FSInspector.c.o            
[ 24%] Building C object CMakeFiles/FSViewer.dir/src/FSMCList.c.o               
[ 27%] Building C object CMakeFiles/FSViewer.dir/src/FSMenu.c.o                 
/home/makaba/fsviewer/src/FSMenu.c:267:29: warning: passing arguments to 'FSUpdateFileView' without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype]                                     
  267 |             FSUpdateFileView(FileCopy, src, dest);                      
      |                             ^                                           
/home/makaba/fsviewer/src/FSMenu.c:314:29: warning: passing arguments to 'FSUpdateFileView' without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype]                                     
  314 |             FSUpdateFileView(FileCopy, src, dest);                      
      |                             ^                                           
2 warnings generated.                                                           
[ 30%] Building C object CMakeFiles/FSViewer.dir/src/FSPanel.c.o                
/home/makaba/fsviewer/src/FSPanel.c:1128:9: warning: cast to smaller integer type 'int' from 'void *' [-Wvoid-pointer-to-int-cast]                              
 1128 |     if ((int)WMGetNotificationClientData(notification) == WMReturnTextMovement                                                                          
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
/home/makaba/fsviewer/src/FSPanel.c:1410:13: warning: result of comparison against a string literal is unspecified (use an explicit string comparison function instead) [-Wstring-compare]                                                      
 1410 |     if (txt != ICONDIR)                                                 
      |             ^  ~~~~~~~                                                  
2 warnings generated.                                                           
[ 33%] Building C object CMakeFiles/FSViewer.dir/src/FSPathView.c.o             
/home/makaba/fsviewer/src/FSPathView.c:182:12: warning: cast to smaller integer type 'int' from 'FSPathView *' (aka 'struct W_FSPathView *') [-Wpointer-to-int-cast]                                                                            
  182 |     assert((int)pvPtr);                                                 
      |            ^~~~~~~~~~                                                   
/usr/include/assert.h:55:21: note: expanded from macro 'assert'                 
   55 | #define assert(e)       ((e) ? (void)0 : __assert(__func__, __FILE__, \ 
      |                           ^                                             
/home/makaba/fsviewer/src/FSPathView.c:265:12: warning: cast to smaller integer type 'int' from 'FSPathView *' (aka 'struct W_FSPathView *') [-Wpointer-to-int-cast]                                                                            
  265 |     assert((int)pvPtr);                                                 
      |            ^~~~~~~~~~                                                   
/usr/include/assert.h:55:21: note: expanded from macro 'assert'                 
   55 | #define assert(e)       ((e) ? (void)0 : __assert(__func__, __FILE__, \ 
      |                           ^                                             
/home/makaba/fsviewer/src/FSPathView.c:404:13: warning: enumeration values 'WSDecrementWheel' and 'WSIncrementWheel' not handled in switch [-Wswitch]           
  404 |     switch (WMGetScrollerHitPart(sPtr)) {                               
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~                                  
/home/makaba/fsviewer/src/FSPathView.c:854:29: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not [-Wpointer-sign]   
  854 |         src = FSGetFileInfo(data);                                      
      |                             ^~~~                                        
/home/makaba/fsviewer/src/files.h:90:31: note: passing argument to parameter 'pathname' here                                                                    
   90 | FileInfo* FSGetFileInfo(char* pathname);                                
      |                               ^                                         
/home/makaba/fsviewer/src/FSPathView.c:900:22: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not [-Wpointer-sign]
  900 |     DndSetData(type, path, (unsigned long)(strlen(path) + 1));
      |                      ^~~~
/home/makaba/fsviewer/src/DnD.h:12:42: note: passing argument to parameter 'Data' here
   12 | void DndSetData(int Type, unsigned char* Data, unsigned long Size);
      |                                          ^
5 warnings generated.
[ 36%] Building C object CMakeFiles/FSViewer.dir/src/FSPrefs.c.o
[ 39%] Building C object CMakeFiles/FSViewer.dir/src/FSUtils.c.o
In file included from /home/makaba/fsviewer/src/FSUtils.c:39:
/usr/include/sys/conf.h:90:16: error: use of undeclared identifier 'SPECNAMELEN'
   90 |         char            si_name[SPECNAMELEN + 1];
      |                                 ^
/home/makaba/fsviewer/src/FSUtils.c:278:32: error: variable has incomplete type 'struct vmmeter'
  278 |                 struct vmmeter sum;
      |                                ^
/home/makaba/fsviewer/src/FSUtils.c:278:24: note: forward declaration of 'struct vmmeter'
  278 |                 struct vmmeter sum;
      |                        ^
In file included from /home/makaba/fsviewer/src/FSUtils.c:60:
/home/makaba/fsviewer/src/FSUtils.h:23:6: warning: a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C23, conflicting with a subsequent definition [-Wdeprecated-non-prototype]
   23 | void FSUpdateFileView();
      |      ^
/home/makaba/fsviewer/src/FSUtils.c:784:6: note: conflicting prototype is here
  784 | void FSUpdateFileView(FileAction action, FileInfo* src, FileInfo* dest)
      |      ^
1 warning and 2 errors generated.
*** Error code 1

Stop.
make[2]: stopped in /home/makaba/fsviewer
*** Error code 1

Stop.
make[1]: stopped in /home/makaba/fsviewer
*** Error code 1

Stop.
make: stopped in /home/makaba/fsviewer

No menu or ability to do anything with files

As title. I've installed it from source. I open FSViewer and the main window opens, I can browse the filesystem.

Unfortunately, that's as far as it goes. The menu doesn't appear, and clicking on a file doesn't do anything. Right clicking doesn't do anything either.

Is there some dependency that makes the NeXT style menu work?

Cannot build

@roblillack the truth is that I don't know if you plan to continue with the development of fsviewer or not. I understand that maybe it is already an archived project. Anyway it is impossible to compile it right now:

[ 15%] Building C object CMakeFiles/FSViewer.dir/src/FSFileView.c.o
/home/arch/Downloads/fsviewer/src/fsviewer-38b38a63ec2529ff1bfef6649caabbd0f5289bb0/src/FSFileView.c: In function \E2\80\98FSCreateFileView\E2\80\99:
/home/arch/Downloads/fsviewer/src/fsviewer-38b38a63ec2529ff1bfef6649caabbd0f5289bb0/src/FSFileView.c:494:57: error: passing argument 2 of \E2\80\98WMAddPersistentTimerHandler\E2\80\99 from incompatible pointer type [-Wincompatible-pointer-types]
  494 |     fView->dfTimer = WMAddPersistentTimerHandler(60000, updateDiskFree, fView);
      |                                                         ^~~~~~~~~~~~~~
      |                                                         |
      |                                                         void (*)(FSFileView *) {aka void (*)(struct _FSFView *)}
In file included from /usr/include/WINGs/WINGs.h:26,
                 from /usr/include/WINGs/WINGsP.h:10,
                 from /home/arch/Downloads/fsviewer/src/fsviewer-38b38a63ec2529ff1bfef6649caabbd0f5289bb0/src/FSFileView.c:1:
/usr/include/WINGs/WUtil.h:318:71: note: expected \E2\80\98void (*)(void *)\E2\80\99 but argument is of type \E2\80\98void (*)(FSFileView *)\E2\80\99 {aka \E2\80\98void (*)(struct _FSFView *)\E2\80\99}
  318 | WMHandlerID WMAddPersistentTimerHandler(int milliseconds, WMCallback *callback,
      |                                                           ~~~~~~~~~~~~^~~~~~~~
make[2]: *** [CMakeFiles/FSViewer.dir/build.make:132: CMakeFiles/FSViewer.dir/src/FSFileView.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/FSViewer.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

The windowmaker version is the current Arch Linux version (0.96.0) and the cmake version is 3.29.6. If you need any other information, please ask me. And if you have already stopped the development, no problem. ๐Ÿ˜‰

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.