The search application is one of the most important tools that can stand in your computer. Most of them slowly index your system and find the results. Today, however, we consider an application that displays the results without waiting for input. Today we will study ANGRYsearch.
All around, it seems pretty damn happy with the existing search. Some of them are slow and fill the results in the process; others are based on cli, making it difficult to comfortable using the results, the following is highly integrated with the file Manager and often limit the search home directory, or trying to be all, finding full-text content of the file.
Another with similar functionality, deserves special attention – Fsearch
ANGRYsearch — this app is based on Python, which provides results as you type your search query. The General idea and design of the application based on the search tool for Windows “Everything”.
ANGRYsearch can display search results as fast because it only indexes the file names. After installation ANGRYsearch you create a database of file names by indexing your system. Then ANGRYsearch quickly filters the file names when you type.
What to choose: the Lite version or the full mod?
Angrysearch can be installed in two different configuration modes, and the default is the lite version.
- Lite version only shows the name and path;
- The full mode shows, among other things, the size and date of last modification. The disadvantage is that the search takes about twice the time as each file and directory receive additional calls statistics;
Going into ~ / .config / angrysearch / angrysearch.conf you can control for which angrysearch_lite returns true or false.
In angrysearch there are 3 search modes, the default “fast”
- fast mode – turns on when selected the check box next to the input field. Very fast, but without substrings, that is, it will not find “PIRaths” or “Kwellt” but will find “PIRATA” or “Toefirst”;
- slow mode – enabled when the check box is cleared, it is slightly slower, but it can find substrings, even with non-standard characters;
- regex mode or a mode for regular expressions – is activated by pressing F8, indicated by an orange background color, slowest search, suitable for very precise searches using regular expressions, case sensitive or without it, unlike the previous search modes, there is searched not the entire path, only the file names or directories;
An example of a search in regex mode:
What you should know:
- the database is in ~ / .cache / angrysearch / angry_database.db,
- the configuration file is in ~ / .config / angrysearch / angrysearch.conf;
- Indexing of files can take ~ 1 ~ 2 minutes, depending on what hard drive are you using, hdd or ssd, and file system ntfs in linux is much slower. The database may weigh ~ 200 MB.
- It is not recommended to run as root, first, this is not for no reason, and secondly, with such rights, the search may start to scan where you do not need, such as users of Btrfs are often scanned images;
- xdg-open is used to open files depending on their mime type, the default application can be set in ~ / .local / share / Applications / mimeapps.list or ~ / .config / mimeapps.list;
- Arch Linux AUR package.
- package openSUSE & Fedora (courtesy of alanbortu).
- Arch Linux AUR package.
- package openSUSE & Fedora (courtesy of alanbortu).
Manual installation is simple, as there is no compiling with python, the process consists of the dependencies, copy the file somewhere and execute permissions.
Dependencies: – python3-pyqt5, xdg-utils
You need PyQt5 for python3, for example, distributions based on Ubuntu:
sudo apt install python3-pyqt5
Don’t worry, most distributions have xdg-utils out of the box.
Now that you have the dependencies, download the latest release angrysearch and unpack it somewhere. In addition to the rest of the files there is a file with the name install.shhe copies the files to where they should be, and sets the correct access rights.
- open a terminal in the directory with the unpacked files.
- install install.sh as the executable file and run it:
chmod +x install.sh sudo ./install.sh
- In General, that’s ALL, if you want to see more detailed instructions here is the old documentation.
- python3-gobject – desktop notifications for automatic updates, most of the desktop environments and so are able;
- xdotool – required if you use Thunar or PCmanFM and use configuration options fm_path_doubleclick_selects;
Automatic updates in the background.
Among the files you will find angrysearch_update_database.py
This file launches the angrysearch without the interface and in the background scans the disks, and updates the database.
Using crontab, you can run this file after a certain period of time, constantly updating angrysearch in accordance with the changes in your system.
- crontab-l – list of cronjobs
- crontab-e to open the text editor, so you can enter a new cronjob
this cronjob will update every 6 hours
0 */6 * * * /usr/share/angrysearch/angrysearch_update_database.py
crontab will not attempt to perform the task if the computer is off at the scheduled time.
notifications enables or disables notification on the desktop, indicating the completion of the automatic update.
conditional_mounts_for_autoupdate can prevent auto-update, if there was no established mount point.
Just keep in mind that the notification on the desktop from the cronjob won’t work in all distributions, perhaps this is exactly your case.
How it works all sorts of additional details:
- In the database there is a column containing the full path to each found file and directory, another column indicates that this leads to the file or directory. In the full version there are also columns for the last modified date and file size in bytes;
- When you type in a search string in the path column of the search is for occurrences of printed text and displays the lines containing them. Unlike other searches that you usually see only the names of files and directories, angrysearch checks full path. This means that the search of books will show all items with the term “books” in their ways and not only in the title. In a typical slow quest that would be too broad a search with too many results, but the instant nature angrysearch allows you to keep printing until the search will not be sufficiently narrow;
- The database uses sqlite FTS extension for indexing to dramatically improve the search speed and to create a sense of immediacy of getting results as you type-in the fast mode. The disadvantage of fast mode is that you cannot search on a substring, but the checkbox in the upper right corner may change this. If this checkbox is deselected, the search will not use the FTS table, and will simply perform the normal slower search query to the database — in slow mode;
- Mode fast mode quotes can be used for exact search query ‘torrent’ would not include “torrent” in the results;
- For functionality you only need the file angrysearch.py but don’t expect special icons or themes;
- Move the mouse pointer on the refresh button to see how old the database;
- double-click on items in the search results:
- Name – the first column, the file opens in the application associated with the mime type, using xdg-open;
- Path – the second column reveals the location of the item in the file Manager;
- Results can be sorted by clicking on column headers will be sorted only presents the results, that is, by default, a maximum of 500 items. To return to the default sort, sort by column path;
F6 ctrl+L alt+D – focus on the search bar.
Enter from the search string to go to the results.
Enter – in the search results to open the selected item in the associated application.
shift+Enter – open the location of the item.
Tab – in loop sets the focus to UI elements.
shift-Tab – does the same thing as the tab button, but in reverse order.
arrow up, arrow down – to move through the search results.
Esc, ctrl+Q – to exit the application.
- FTS5 is a new version of the sqlite indexing, most distributions have it yet, and they are on FTS4. System which have FTS5, get two additional benefits in fast mode:
the ability to exclude from the search results using the minus sign: . wav home will show all paths that contain the word wav, except those that also contain home;
ignoring diacritics, search oko will also show results like ôko ókö Okǒ;
To check if FTS5 in your system, in the upgrade dialog box hover on the text “create new database”.
- the location of the configuration file: ~ / .config / angrysearch / angrysearch.conf. Do not worry if you accidentally remove the configuration file when you next start or close the program, it will create a new file with default values;
- angrysearch_lite – the default is set to true. In Lite mode, the search finds only the file name and path, without the size of the file without the last modified date. Less information – less search time;
- close_on_execute – By default set to false. Angrysearch closes after opening the file or path in the file Manager;
- conditional_mounts_for_autoupdate – blank By default. Here you can add the mount point for database update. Without them there will occur automatic updates using crontab. Instead of updating the crontab starts the system dialog box with a message that the paths specified in these settings are not mounted. This will prevent overwriting a database, when there are not all of the disks. For values, use the mount point of the system, separated by spaces;
- darktheme – By default set to false. This value can be overridden to true in qdarkstylesheet.qss, in resource_file.py there are icons for dark themes;
- directories_excluded – blank By default. Here you can write which directories should be ignored. If you write just the name of the directory, the search will ignore every directory with the same name, if you specify a full path like / var / cache / pacman / pkg /, will be ignored and it is this specific folder, you can still use the bundle parent / aim for easier targeting on a specific folder, for example pacman / pkg. You can configure through the UI, on the updates. Directory / proc is hard-coded to ignore it;
- fast_search_but_no_substring – the default is set to true. Contains the last set value of checkbox, which affects the speed of the search substring, FTS4, see the section above;
- file_manager – blank By default. No matter what application or script is written there, every time you double-click the path column, the application gets the path. If you leave this field blank, angrysearch will attempt to automatically detect the default file Manager xdg-utils. If one of the following file managers is installed and detected: [‘dolphin’, ‘nemo’, ‘nautilus’, ‘doublecmd’], angrysearch the behavior will change slightly. He will send these file managers full path to the file, highlight the target file in an open file Manager window;
- fm_path_doubleclick_selects – By default set to false. You want the package xdotool, and it is advisable to manually set the file Manager in the config. If set to true, file managers Thunar, PCmanFM and SpaceFM will be able to access the directory containing the selected file;
- icon_theme – the default is set to adwaita. To change the icon theme from the program interface in the update window. There are 6 types of icons – folder, file, audio, image, video, text. But I have not figured out how to get the topic distribution, and reliable icon of the mime type of the file, so to install icons using angrysearch is the solution;
- notifications – the default is set to true. Automatic periodic updates that run in background mode using crontab, will use desktop notifications to notify when the scan is done or if it was interrupted due to the lack of mount points;
- number_of_results – the default value of 500. The restriction is set to search in the database. A smaller number means that the search results will come faster;
- regex_mode – By default set to false. Includes a search mode regular expressions. To toggle the value from false to true by using the F8 key;
- row_height – the default is 0, which means the system default height. Sets the height of rows in pixels;
- typing_delay – By default set to false. If you change the value to true will turn on a 0.2-second delay between typing in the search bar and access the database. This will prevent unnecessary queries to the database, if the user is typing quickly, because the search engine expects to complete the enter to begin the search. This feature may improve performance on slow machines, but on modern may adversely affect the feeling of instant response;
- [Last_Run] — the application’s Properties on the closing – window size, position, state, etc.
Because ANGRYsearch, by and large, is a port of one of my favorite Windows applications on Linux, I am very happy with them and plan to install it on all of my systems in the future.
I remember in the nines smashed other Linux applications, because they were not easy to install, what I can’t say about ANGRYsearch. The installation process is so simple and clear that I would definitely recommend it to any Linux-Nuba.
Have you ever used ANGRYsearch? If not, what is your favorite search app for Linux? Let us know in the comments below.