{"id":13574958,"url":"https://github.com/reduf/search","last_synced_at":"2025-04-04T19:30:26.118Z","repository":{"id":153121333,"uuid":"572838946","full_name":"reduf/search","owner":"reduf","description":"GUI built on ripgrep for recursive file content searching.","archived":false,"fork":false,"pushed_at":"2025-02-09T14:29:12.000Z","size":2785,"stargazers_count":53,"open_issues_count":15,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-09T15:30:26.734Z","etag":null,"topics":["gui","ripgrep","ripgrep-frontend"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reduf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-01T06:16:07.000Z","updated_at":"2025-02-09T14:29:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"6ab1ba7d-6128-4688-ac6c-98cffa603086","html_url":"https://github.com/reduf/search","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reduf%2Fsearch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reduf%2Fsearch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reduf%2Fsearch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reduf%2Fsearch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reduf","download_url":"https://codeload.github.com/reduf/search/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247237606,"owners_count":20906314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gui","ripgrep","ripgrep-frontend"],"created_at":"2024-08-01T15:00:57.001Z","updated_at":"2025-04-04T19:30:23.171Z","avatar_url":"https://github.com/reduf.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# *Search*\n\nSearch was an experiment on creating a UI to search file content, recursively\nexploring directory. Such UI already exist, but the many I have tried lack some\nfeatures which I thought would be very useful.\n\n![Screenshot of a searching some directories of the Linux kernel tree](images/search.png)\n\n## Building\n\nOn Windows, you can simply run `cargo build` or `cargo build --release`.\n\nOn Linux, you first need to install libgtk.\n```\n\u003e apt update\n\u003e apt install -y libgtk-3-dev\n\u003e cargo build\n```\n\n## Usage (Command line arguments)\n\n```\nUsage: search.exe [OPTIONS]\n\nOptions:\n      --workspace \u003cWORKSPACE\u003e  Path of the workspace in which to start the program. Default is current workspace\n      --paths \u003cPATHS\u003e          Default paths to search in. Default is workspace\n      --patterns \u003cPATTERNS\u003e    Default patterns used to filter the file names. Default is workspace\n  -c, --config \u003cCONFIG\u003e        Path to the config file to use\n  -h, --help                   Print help\n  -V, --version                Print version\n```\n\n## How is *Search* different?\n\n### Multithreading\n\nThe first feature I absolutely wanted in *Search* was multithreading search.\nIndeed, I worked on very large project where most searching would simply be\nway too slow to be used. [ripgrep](https://github.com/BurntSushi/ripgrep) was\na life saver, but is only a command line tools.\n\n### Tabs\n\nOne of the guiding principle of this UI is to offer tabs, similar to what\nbrowsers do. Browser develop a lot of techniques to allow users to efficiently\nnavigate the internet and this can be re-used in a search program.\n\n### Open in your text editor\n\nUser of [Total Commander](https://www.ghisler.com/) will be familiar with it's\nability to open files in a configured editor, using a shortcut (F4 by default).\nSimilarly, this was something I absolutely wanted and use all the time.\n\n\n### Pipes searching\n\n\u003e :warning: This is currently not implemented.\n\nComplex regexes can probably allow you to find accurately everything, but\npersonally I rather use the complex of \"pipes\" to find something. With grep,\nit could be something like:\n```\n\u003e grep -iRF main src/ | grep -viF fn\n```\nThis command does a initial recursive search for the literal string \"main\"\nstarting in directory \"src/\" and search this result to find every lines, not\ncontaining the literal word \"fn\".\n\nI use this pattern fairly often, because I often find it easier than to build\nthe right regex pattern. Furthermore, this can be combined with the after and\nthe before context.\n\nAn other goal was to support such a system in *Search*.\n\n### Avoid optimizations that trade-off quality\n\nThis encompass quite a lot of things, but overall I don't want to do the\nfollowing optimizations.\n- Directly parse NTFS index to bypass Windows filesystem functions.\n- Index files before searching.\n- Cache results.\n\nThe reason boils down that it doesn't seem necessary and would affect\nportability, reliability and accuracy. Note that, doing twice the exact\nsame search could still give drastically different information, due to\nOS level caching.\n\n### Icons\n- The magnifier icon used as icon is from https://icons8.com/ and can be found [here](https://icons8.com/icon/p3miLroKw4iR/magnifying-glass-tilted-left).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freduf%2Fsearch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freduf%2Fsearch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freduf%2Fsearch/lists"}