blob: 461d131cf197bebac14b369a522c742930be2248 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
`xdgctl` is a TUI for managing XDG default applications. View and set defaults for file categories without using `xdg-mime` directly.
Built with C using [GLib/GIO](https://docs.gtk.org/gio/) and [termbox2](https://github.com/termbox/termbox2).
https://github.com/user-attachments/assets/076c9934-f373-486d-9595-eec480e3a429
## Features
- Browse by category (Browsers, Text Editors, etc.)
- Current default marked with `*`
- Minimal dependencies
## Navigation & Controls
| Key | Action |
|---------------------|---------------------------------------------------------------|
| **Arrow Up/Down** | Navigate through categories or applications |
| **Arrow Right/Tab** | Switch from category list to application list |
| **Arrow Left** | Switch back to category list |
| **Enter** | Set selected application as default for current category |
| **Esc / q** | Quit the application |
## Prerequisites
To build `xdgctl`, you need the following development libraries:
- `glib-2.0`
- `gio-2.0`
- `gio-unix-2.0`
- `clang` or `gcc`
```bash
# On Void Linux
sudo xbps-install glibc-devel
```
## Installation
```bash
git clone https://github.com/mitjafelician/xdgctl.git
cd xdgctl
# Build
make
sudo make install
# Using prefix
sudo make PREFIX=/usr/local install
make PREFIX=~/.local install
```
If you manually add new applications to your `~/.local/share/applications` directory, you might need to run `update-desktop-database` again.
## More about XDG
### Application directories
```bash
ls /usr/share/applications
ls ~/.local/share/applications
```
### Querying defaults
```bash
xdg-mime query default text/plain
xdg-mime query default text/html
xdg-mime query default x-scheme-handler/http
xdg-mime query default x-scheme-handler/https
xdg-mime query default inode/directory
```
### Setting defaults manually
```bash
xdg-mime default brave.desktop x-scheme-handler/http
xdg-mime default brave.desktop x-scheme-handler/https
```
### Desktop Entry example
```ini
# ~/.local/share/applications/brave.desktop
[Desktop Entry]
Exec=/home/m/Applications/brave
Type=Application
Categories=Applications
Name=Brave Browser
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;
```
### Other useful commands/files
```bash
update-desktop-database ~/.local/share/applications
less ~/.config/mimeapps.list
less /usr/share/applications/mimeapps.list
```
## More material
- https://commandmasters.com/commands/xdg-mime-linux/
- https://noman.sh/en/pages/xdg-mime
- https://linux.die.net/man/1/xdg-mime
- https://wiki.archlinux.org/title/XDG_MIME_Applications
- https://gnome.pages.gitlab.gnome.org/libsoup/gio/
- https://docs.gtk.org/gio/
|