Git Product home page Git Product logo

fsearch's Introduction

Build Status Translation status

FSearch is a fast file search utility, inspired by Everything Search Engine. It's written in C and based on GTK3.

Features

  • Instant (as you type) results
  • Advanced search syntax
  • Wildcard support
  • RegEx support
  • Filter support (only search for files, folders or everything)
  • Include and exclude specific folders to be indexed
  • Ability to exclude certain files/folders from index using wildcard expressions
  • Fast sort by filename, path, size or modification time
  • Customizable interface (e.g., switch between traditional UI with menubar and client-side decorations)

Requirements

  • GTK 3.18
  • GLib 2.50
  • glibc 2.19 or musl 1.1.15 (other C standard libraries might work too, those are just the ones I verified)
  • PCRE2 (libpcre2)
  • ICU 3.8

Download

It is recommended to install FSearch from one of the Stable packages, unless you know what you're doing.

The Development packages are primarily intended for testing and adventurous users.

Distribution Stable Development
Ubuntu PPA Stable PPA Daily
Arch Linux AUR AUR (git)
Fedora/RHEL/CentOS COPR Stable COPR Nightly
Debian OpenBuildService
openSUSE OpenBuildService
Flatpak (limited features) Flathub
Solus* Solus Repository
FreeBSD* FreshPorts

(*) Not maintained by me

Roadmap

https://github.com/cboxdoerfer/fsearch/wiki/Roadmap

Build Instructions

https://github.com/cboxdoerfer/fsearch/wiki/Build-instructions

Localization

The localization of FSearch is managed with Weblate.

https://hosted.weblate.org/projects/fsearch/

If you want to contribute translations please submit them there, instead of opening pull requests on GitHub. This also includes any suggestions to the English texts — English isn't my first language, so there are likely errors and unusual wordings.

Instructions can be found here: https://docs.weblate.org/en/latest/user/basic.html

And of course: Thank you for taking the time to translate FSearch!

Current Limitations

  • Sorting lots of results by Type can be very slow, since gathering that information is expensive, and the data isn't indexed. This also means that when the view is sorted by Type, searching will reset the sort order to Name.
  • Using the Move to Trash option doesn't update the database index, so trashed files/folders show up in the result list as if nothing happened to them.

Why yet another search utility?

Performance. On Windows I really like to use Everything Search Engine. It provides instant results as you type for all your files and lots of useful features (regex, filters, bookmarks, ...). On Linux I couldn't find anything that's even remotely as fast and powerful.

Before I started working on FSearch, I took a look at existing solutions. I tried MATE Search Tool (formerly GNOME Search Tool), Recoll, Krusader (locate based search), SpaceFM File Search, Nautilus, ANGRYsearch and Catfish, to find out whether it makes sense to improve those. However, they're not exactly what I was looking for:

  • standalone application (not part of a file manager)
  • written in a language with C like performance
  • no dependencies to any specific desktop environment
  • Qt5 or GTK3 based
  • small memory usage (both hard drive and RAM)
  • target audience: advanced users

Looking for a command line interface?

I highly recommend fzf or the obvious tools: find and (m)locate

Why GTK3 and not Qt5?

I like both of them, and my long term goal is to provide console, GTK3 and Qt5 interfaces, or at least make it easy for others to build those. However, for the time being it's only GTK3 because I like C more than C++, and I'm more familiar with GTK development.

Questions?

Email: christian.boxdoerfer[AT]posteo.de

fsearch's People

Contributors

70h avatar alexgabi avatar ammuu5 avatar art-2 avatar atilioa avatar cboxdoerfer avatar chaeya avatar comradekingu avatar f2404 avatar fitojb avatar gustavohmsilva avatar hakimzenata avatar kakueeen avatar lepa22 avatar mrubli avatar napcok avatar oersen avatar pixel96x avatar pylersm avatar rezaalmanda avatar santossi avatar ser82-png avatar serefercelik avatar stdevpavelmc avatar torbei avatar veksha avatar vistaus avatar weblate avatar welaq avatar yarons avatar

Stargazers

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

Watchers

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

fsearch's Issues

Trying Compiling

Hi,
For me does not work…
./autogen.sh output:

Copying file po/Makefile.in.in

Please add the files
codeset.m4 gettext.m4 glibc21.m4 iconv.m4 isc-posix.m4 lcmessage.m4
progtest.m4
from the /usr/share/aclocal directory to your autoconf macro directory
or directly to your aclocal.m4 file.
You will also need config.guess and config.sub, which you can get from
ftp://ftp.gnu.org/pub/gnu/config/.

Unescaped left brace in regex is deprecated, passed through in regex; marked by <– HERE in m/\${ <– HERE ([^ \t=:+{}]+)}/ at /usr/bin/automake line 3930.
src/Makefile.am:33: warning: shell $(GLIB_COMPILE_RESOURCES: non-POSIX variable name
src/Makefile.am:33: (probably a GNU make extension)

./configure –prefix=/usr output:
configure: error: invalid variable name:–prefix'`

Any help is welcome.

Regards,
Javier

"Enable dark theme" doesn't work

In preferences, there's an option to "enable dark theme". I've enabled that, restarted fsearch and nothing changed..

OS: Ubuntu 16.04

crash when including empty dir

console:

update
clear locations

** (fsearch:28342): CRITICAL **: db_location_free_all: assertion 'db->locations != NULL' failed
load location: <snip>
location num entries: 0
update list: 0
**
ERROR:array.c:61:darray_new: assertion failed: (num_items > 0)

Thread 24 "update_database" received signal SIGABRT, Aborted.

backtrace:

#0  0x00007ffff5f872e7 in raise () from /lib64/libc.so.6
#1  0x00007ffff5f8876a in abort () from /lib64/libc.so.6
#2  0x00007ffff67e535b in g_assertion_message () at .../glib-2.48.2/glib/gtestutils.c:2429
#3  0x00007ffff67e53c7 in g_assertion_message_expr () at .../glib-2.48.2/glib/gtestutils.c:2452
#4  0x000000000041261f in darray_new () at array.c:61
#5  0x000000000040e7f1 in db_build_initial_entries_list () at database.c:809
#6  0x0000000000407e15 in load_database () at fsearch.c:299
#7  0x00007ffff67e5fe8 in g_thread_proxy () at .../glib-2.48.2/glib/gthread.c:780
#8  0x00007ffff62f8494 in start_thread () from /lib64/libpthread.so.0
#9  0x00007ffff603d5dd in clone () from /lib64/libc.so.6

Wrong GTK3 requirements

fsearch require GTK+ 3.20 not 3.12 as stated in README. File preferences.ui introduces this.
I build it on Ubuntu 16.04 but it has GTK+ 3.18 so every time I open preferences window it crashes.

Current location of ongoing index in status bar

When I ask fsearch to update my index and as it curls through my harddisk only moving circle is shown in the status bar. It would be really great if it could show me the location where index is going on. I want to see the path as the indexing is going on.

Suggestion: Change "Exclude hidden files and folders" option

I think that the option for excluding hidden files and folders should be in the include section, as "Include hidden files and folders", so that this option would be more presentable to a user, since I think that most "regular" users would just set the folders to include, without setting exclusions.

Web interface

A web interface would be very useful for searching for files on a networked file server.

Open file on Un-mounted partitions

First thank you for this awesome piece of software :D i have been looking for a similar software to everything on windows but i couldn't find one so thank you for your effort. when i search for a file fsearch gets the file from its database and this is fine and its correct but i set it to build a database for other partitions on my hard drive so when i search the file and select "open folder" nothing happens when that partition is not mounted so please add an error message for that ... thanks

Wildcards?

I'm using Everything in Windows and now I can't figure it out how to find a folder (with FSearch) with for example 'Backup 160522'. I remember '160522' so my search-string are '1605'. I should get as result folder and filenames that contain 1605 but....no. Isn't '*' and '?' used as wildcards in Linux/Fsearch?

Regards

Add support for older GTK+ and GLib versions (e.g. the ones shipped by Ubuntu 14.04)

Hi;
First of all thank you for developing such an application. I am on Ubuntu 14.04.5 platform. I downloaded 14.04 zip version of your project. After running ./autogen.sh and then ./configure I get

  checking for a BSD-compatible install... /usr/bin/install -c
  checking whether build environment is sane... yes
  checking for a thread-safe mkdir -p... /bin/mkdir -p
  checking for gawk... gawk
  checking whether make sets $(MAKE)... yes
  checking whether make supports nested variables... yes
  checking whether make supports nested variables... (cached) yes
  ./configure: line 2877: syntax error near unexpected token `IT_PROG_INTLTOOL'
  ./configure: line 2877: `AX_REQUIRE_DEFINED(IT_PROG_INTLTOOL)'

I also checked out https://www.reddit.com/r/linux/comments/4lwo5n/fsearch_a_new_file_search_application_based_on/ and #3

but the tips in those links didn't help.

I installed gnome-common and autoconf-archive.

I hope you help me fix it.

Regards.

Kenn

Providing Real Time File System Monitoring

one of the great features of everything is it can be run in the background monitoring the file system for changes and when a change occurs it indexes it immediately instead of having to run the database updating feature every time we need to search for some recently used file so i was wondering if you provide this feature.

Folder Size reports 1 item less than actual

The value in the Size column for Folder results is 1 less than the actual number of files in the folder (except for empty folders, which are correctly reported as having 0 Items).

Great work on this software so far, it has saved me hours of work.

openSUSE RPM: rpmlint issues

Hi,

I would like to contribute by providing a RPM for openSUSE at the openSUSE Build Service. rpmlint throws two warnings:

fsearch.x86_64: W: no-manual-page-for-binary fsearch
Each executable in standard binary directories should have a man page.

fsearch.x86_64: W: invalid-desktopfile /usr/share/applications/fsearch.desktop value "0.1" for key "Version" in group "Desktop Entry" is not a known version
.desktop file is not valid, check with desktop-file-validate

As FSearch is currently 0.1 and in beta stadium, the Version warning can be ignored (IMHO). Otherwise you should omit the Version entry in the .desktop file as long as the version is lower than 1.0.

Cheers,

Jan

[Feature request] Search in results

It would be nice to be able to search/goto in the results, like in a file manager.
For example, if you have three search results, amovie, bamovie, bbmovie, cmovie then if you press bb on the keyboard bbmovie is focused

Duplicate files

If two of the database locations lead to a file, the file shows up twice.
If ~ and ~/uni are locations in the data base, files in ~/uni show up twice in the list.
I accidentally did that and couldn't figure out why all of the files were showing up twice :| I don't know if the issue is worth fixing thou, just thought I should report it anyway.

image

EDIT: added a screenshot of the issue

Further improve FreeBSD support

Two weeks ago I've added FSearch to FreeBSD Ports Collection. It required couple of changes in order to build that addressed certain Linux'isms. One of them (unconditional inclusion of linux/limits.h) was fixed in 917442e. The other issue seemingly remains: use of non-standard strverscmp() function.

This function is a GNU extension and thus is not present in other libc implementations, including (but not limited to) FreeBSD's. It turns out that it can be implemented using g_utf8_collate_key_for_filename() calls on compared strings (see the patches under files directory at the svnweb link above). This is probably better than writing strverscmp() implementation from scratch since FSearch is GTK/Glib application anyway, so it's OK to depend on functions offered by those APIs.

I did not wrap the code with any #ifndef __GNUC__ guards since there is no conflict to prevent in case of FreeBSD, and arguably it is better not to rely on some non-standard function in the first place (i.e., I'd probably simply used provided reference implementation under some non-clashy-with-GNUs-strverscmp name, regardless of the operating system and/or underlying standard C library).

Use Gtk.HeaderBar

It'll probably make sense to use Gtk.HeaderBar as the titlebar instead of classic one in GTK+ 3 UI.

"Open folder" not working properly in KDE

In KDE the "Open folder" function does follow the default application set in the System Settings, so I had to manually edit mimeapps.list in /home to Dolphin. This isn't ideal !

And, after setting it to Dolphin, all urls sent to it are prefixed with "smb://" and therefore don't open correctly. Using another file manager works fine, and opening folders in Dolphin from other apps also works fine.

I'm running Arch with the latest KDE/Plasma packages, please tell me if you need more info. Hope this can be fixed, fsearch looks great so far :)

Not following symbolic links

I'm using fsearch in Ubuntu Mate 16.04 with Mate 1.16. I have a separate NTFS partition on my hard disk for my Documents, Music, Pictures and Videos folders and I create symbolic links of these folders in home. In fsearch I have the option for following symbolic links checked, but none of the aforementioned links are followed.

Translation to Spanish

Greetings from Venezuela.

I would love to provide the translation into Spanish of your application.

Add support to monitor folders for changes

This program for some reason doesn't index/cache the files in the directory and it has to update the database all the time in reboot. Can you give it some temp log file for it to index files in the database permanently some faeture that everything search in windows has.

Am using ubuntu 16.04

Option to check/uncheck paths in database

Sometimes I just want to search only one path/directory (screenshot)
Can you implement an option with checkmarks just to disable/enable a path instead of removing/adding it every time I want to change my options?
TIA

screenshot from 2016-11-08 10-03-55

Build instructions

It would help if you added a section to the readme on how to compile this program

Add option to zoom results

There should be three options to choose from View menu:

  • Zoom in
  • Zoom out
  • Reset zoom

It might make sense to add this after implementing the custom listview.

Drag and drop files

Hi Christian,

Again, thanks so much for creating fsearch.

In Search Everything, I could drag files out of the window into a folder or into a download box in my browsers. This was pretty useful (as I only really use fsearch/SE for navigating my files system) for attaching files for emails etc.

No idea how difficult it may be to implement, but it is a minor suggestion.

Kind regards,
Alastair

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.