An open API service indexing awesome lists of open source software.

https://github.com/devnullvoid/dms-web-search

Web Search plugin for DankMaterialShell - Search the web with 23+ built-in search engines
https://github.com/devnullvoid/dms-web-search

Last synced: 29 days ago
JSON representation

Web Search plugin for DankMaterialShell - Search the web with 23+ built-in search engines

Awesome Lists containing this project

README

          

# Web Search

A DankMaterialShell launcher plugin for searching the web with 23+ built-in search engines and support for custom search engines.

![Web Search Screenshot](screenshot.png)

## Features

- **23+ Built-in Search Engines** - Google, DuckDuckGo, GitHub, Stack Overflow, and more
- **Custom Search Engines** - Add your own search engines with URL templates
- **Keyword-Based Selection** - Type keywords to use specific engines (e.g., `github rust`)
- **Configurable Default Engine** - Set your preferred search engine
- **One-Click Search** - Select and press Enter to open browser
- **Toast Notifications** - Visual feedback for every search
- **Configurable Trigger** - Default `@` or set your own trigger

## Installation

### From Plugin Registry (Recommended)

```bash
dms plugins install webSearch
```

### Manual Installation

```bash
# Copy plugin to DMS plugins directory
cp -r WebSearch ~/.config/DankMaterialShell/plugins/

# Enable in DMS
# 1. Open Settings (Ctrl+,)
# 2. Go to Plugins tab
# 3. Click "Scan for Plugins"
# 4. Toggle "Web Search" to enable
```

## Usage

### Basic Search

Note: Avoid triggers reserved by DMS or other plugins (e.g., `/` is used for file search).

1. Open launcher (Ctrl+Space)
2. Type `@` followed by search query
3. Examples:
- `@ rust tutorials` - Search with default engine
- `@ linux kernel` - General search
4. Select engine and press Enter to open browser

### Engine-Specific Search

Use keywords to search specific engines directly:

- `@ github awesome-linux` - Search GitHub
- `@ youtube music video` - Search YouTube
- `@ wiki quantum physics` - Search Wikipedia
- `@ stackoverflow async rust` - Search Stack Overflow

## Built-in Search Engines

### General Search

- **Google** - Keywords: `google`, `search`
- **DuckDuckGo** - Keywords: `ddg`, `duckduckgo`, `privacy`
- **Brave Search** - Keywords: `brave`, `privacy`
- **Bing** - Keywords: `bing`, `microsoft`
- **Kagi** - Keywords: `kagi`, `privacy`

### Development

- **GitHub** - Keywords: `github`, `code`, `git`
- **Stack Overflow** - Keywords: `stackoverflow`, `stack`, `coding`
- **npm** - Keywords: `npm`, `node`, `javascript`
- **PyPI** - Keywords: `pypi`, `python`, `pip`
- **crates.io** - Keywords: `crates`, `rust`, `cargo`
- **MDN Web Docs** - Keywords: `mdn`, `mozilla`, `web`, `docs`

### Linux & Packages

- **Arch Linux Wiki** - Keywords: `arch`, `linux`, `packages`
- **AUR** - Keywords: `aur`, `arch`, `packages`

### Social & Media

- **YouTube** - Keywords: `youtube`, `video`, `yt`
- **Reddit** - Keywords: `reddit`
- **Twitter/X** - Keywords: `twitter`, `x`, `social`
- **LinkedIn** - Keywords: `linkedin`, `job`, `professional`

### Reference

- **Wikipedia** - Keywords: `wikipedia`, `wiki`
- **Google Translate** - Keywords: `translate`, `translation`
- **IMDb** - Keywords: `imdb`, `movies`, `tv`

### Shopping

- **Amazon** - Keywords: `amazon`, `shop`, `shopping`
- **eBay** - Keywords: `ebay`, `shop`, `auction`

### Utilities

- **Google Maps** - Keywords: `maps`, `location`, `directions`
- **Google Images** - Keywords: `images`, `pictures`, `photos`

## Custom Search Engines

Add your own search engines via Settings:

1. Open Settings → Plugins → Web Search
2. Scroll to "Custom Search Engines"
3. Fill in the form:
- **ID**: Unique identifier (e.g., `myengine`)
- **Name**: Display name (e.g., `My Search Engine`)
- **Icon**: Material icon name (e.g., `search`), prefix with `material:` to pull a Material Symbol (e.g., `material:travel_explore`), or prefix with `unicode:` to use emoji/Nerd Font glyphs (e.g., `unicode:`)
- **URL**: Search URL with `%s` placeholder
- **Keywords**: Comma-separated keywords for quick access

### Example Custom Engines

**Rust Documentation:**

```
ID: rustdoc
Name: Rust Docs
Icon: unicode:🦀
URL: https://doc.rust-lang.org/std/?search=%s
Keywords: rust,docs,documentation
```

**Arch Wiki:**

```
ID: archwiki
Name: Arch Wiki
Icon: material:menu_book
URL: https://wiki.archlinux.org/index.php?search=%s
Keywords: arch,wiki,documentation
```

**GitLab:**

```
ID: gitlab
Name: GitLab
Icon: material:code
URL: https://gitlab.com/search?search=%s
Keywords: gitlab,code
```

## Configuration

Access settings via DMS Settings → Plugins → Web Search:

- **Trigger**: Set custom trigger (`@`, `!`, `ws`, etc.) or disable for always-on mode
- Avoid triggers reserved by DMS or other plugins (e.g., `/` is used for file search).
- **Default Search Engine**: Choose your preferred engine (Google, DuckDuckGo, Brave, Bing)
- **Custom Search Engines**: Add/manage your own search engines

## Search Examples

### General Queries

```
@ rust programming # Search with default engine
@ how to install arch # General search
```

### Development

```
@ github awesome-linux # Search GitHub
@ stackoverflow async rust # Search Stack Overflow
@ npm react hooks # Search npm packages
@ pypi requests # Search Python packages
```

### Linux

```
@ arch firefox # Search Arch packages
@ aur brave-bin # Search AUR
@ wiki systemd # Search Wikipedia
```

### Media

```
@ youtube rust tutorial # Search YouTube
@ reddit linux gaming # Search Reddit
@ imdb inception # Search IMDb
```

## Requirements

- DankMaterialShell >= 0.1.0
- Web browser (default system browser via `xdg-open`)
- Wayland compositor

## Compatibility

- **Compositors**: Niri and Hyprland
- **Distros**: Universal - works on any Linux distribution
- **Browsers**: Works with any default browser

## Technical Details

- **Type**: Launcher plugin
- **Trigger**: `@` (configurable)
- **Language**: QML (Qt Modeling Language)
- **Browser Launch**: Uses `xdg-open` for system default browser

## Tips & Tricks

1. **Keyword Shortcuts**: Type engine keywords first for direct search
- `github rust` instead of `@ github rust`

2. **Combine Keywords**: Use multiple keywords to narrow results
- `stackoverflow rust async await`

3. **Custom Engines**: Add frequently-used sites for quick access
- Add your company's internal documentation
- Add specialized search engines for your workflow

## Contributing

Want to add more built-in search engines? Open an issue or submit a pull request!

## License

MIT License - See LICENSE file for details

## Author

Created for the DankMaterialShell community

## Links

- [DankMaterialShell](https://github.com/AvengeMedia/DankMaterialShell)
- [Plugin Registry](https://github.com/AvengeMedia/dms-plugin-registry)