Downloads Organizer
A simple Go automation program to sort your downloaded files. It uses "rofi" and is developed for arch linux
Go
downloads-organizer
A simple Go automation program to sort your downloaded files. It uses rofi and is developed for Arch Linux.
When a file lands in your downloads folder, a rofi prompt appears asking you to pick a category. The file is then moved automatically.
Requirements
- Go 1.26+
rofi
Installation
1. Build the binary
git clone https://github.com/javamilesiii/downloads-organizer
cd downloads-organizer
go build -o downloads-organizer
2. Install the binary
install -Dm755 downloads-organizer ~/.local/bin/downloads-organizer
3. Configure
Copy the example config to your config directory:
mkdir -p ~/.config/downloads-organizer
cp config.yaml ~/.config/downloads-organizer/config.yaml
Edit ~/.config/downloads-organizer/config.yaml to match your directory layout:
download_dir: Downloads/
categories:
Documents:
path: Documents/
prompt_subfolder: true
Music:
path: Music/
prompt_subfolder: false
ignore_files:
- .crdownload
- .part
- .tmp
- Unconfirmed
download_dir— path relative to your home directory to watchcategories— map of category names to target directories (relative to home)prompt_subfolder— iftrue, a second rofi prompt asks for a subdirectoryignore_files— entries starting with.are matched as suffixes; others as prefixes
4. Set up the systemd user service
Create ~/.config/systemd/user/downloads-organizer.service:
[Unit]
Description=Downloads Organizer
After=graphical-session.target
[Service]
Type=simple
ExecStart=/home/username/.local/bin/downloads-organizer
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=default.target
User services inherit your session environment automatically, so no need to set HOME, DISPLAY, or WAYLAND_DISPLAY manually.
5. Enable and start the service
systemctl --user daemon-reload
systemctl --user enable --now downloads-organizer.service
6. Verify it is running
systemctl --user status downloads-organizer.service
Stopping / restarting
systemctl --user stop downloads-organizer.service
systemctl --user restart downloads-organizer.service
Logs
journalctl --user -u downloads-organizer.service -f