From f2e7bbc06d71d72b8299b971b210ec8e2b9a17f2 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sat, 7 Mar 2026 14:31:27 -0600 Subject: feat: comprehensive mime type associations with emacsclient defaults Merge all mime associations into mimeapps.list as single source of truth. Set emacsclient as default for all text/code files. Add TypeScript mime override, emacsclient.desktop with fixed Exec line, and simplify resetmimetypes to just restow + rebuild caches. --- dotfiles/common/.config/mimeapps.list | 167 +++++++++++++++ dotfiles/common/.local/bin/resetmimetypes | 228 ++------------------- .../.local/share/mime/packages/custom-types.xml | 9 + .../.local/share/applications/emacsclient.desktop | 13 ++ 4 files changed, 203 insertions(+), 214 deletions(-) create mode 100644 dotfiles/common/.local/share/mime/packages/custom-types.xml create mode 100644 dotfiles/hyprland/.local/share/applications/emacsclient.desktop (limited to 'dotfiles') diff --git a/dotfiles/common/.config/mimeapps.list b/dotfiles/common/.config/mimeapps.list index d93120f..aac610f 100644 --- a/dotfiles/common/.config/mimeapps.list +++ b/dotfiles/common/.config/mimeapps.list @@ -1,15 +1,38 @@ [Default Applications] + +# Web browser text/html=google-chrome.desktop x-scheme-handler/http=google-chrome.desktop x-scheme-handler/https=google-chrome.desktop x-scheme-handler/about=google-chrome.desktop x-scheme-handler/unknown=google-chrome.desktop +application/rdf+xml=google-chrome.desktop +application/rss+xml=google-chrome.desktop +application/xhtml+xml=google-chrome.desktop +application/xhtml_xml=google-chrome.desktop + +# File manager +inode/directory=org.gnome.Nautilus.desktop + +# PDF, ePub, comics, documents (zathura) application/pdf=org.pwmt.zathura.desktop application/epub+zip=org.pwmt.zathura.desktop application/x-mobipocket-ebook=org.pwmt.zathura.desktop application/vnd.comicbook+zip=org.pwmt.zathura.desktop application/vnd.comicbook-rar=org.pwmt.zathura.desktop +application/eps=org.pwmt.zathura.desktop +application/postscript=org.pwmt.zathura.desktop +application/oxps=org.pwmt.zathura.desktop +application/x-fictionbook=org.pwmt.zathura.desktop +image/eps=org.pwmt.zathura.desktop +image/vnd.djvu=org.pwmt.zathura.desktop +image/vnd.djvu+multipage=org.pwmt.zathura.desktop + +# eBooks (calibre) +application/x-mobi8-ebook=calibre-ebook-viewer.desktop + +# Images (feh) image/bmp=feh.desktop image/gif=feh.desktop image/jpeg=feh.desktop @@ -18,8 +41,14 @@ image/pjpeg=feh.desktop image/png=feh.desktop image/tiff=feh.desktop image/webp=feh.desktop +image/avif=feh.desktop image/heic=feh.desktop +image/heif=feh.desktop +image/svg+xml=feh.desktop image/x-bmp=feh.desktop +image/x-eps=feh.desktop +image/x-ico=feh.desktop +image/x-icon=feh.desktop image/x-pcx=feh.desktop image/x-png=feh.desktop image/x-portable-anymap=feh.desktop @@ -28,6 +57,9 @@ image/x-portable-graymap=feh.desktop image/x-portable-pixmap=feh.desktop image/x-tga=feh.desktop image/x-xbitmap=feh.desktop +image/x-xpixmap=feh.desktop + +# Video (mpv) video/mp4=mpv.desktop video/mpeg=mpv.desktop video/ogg=mpv.desktop @@ -38,10 +70,145 @@ video/quicktime=mpv.desktop video/x-flv=mpv.desktop video/3gpp=mpv.desktop video/x-ms-wmv=mpv.desktop +video/avi=mpv.desktop +video/divx=mpv.desktop +video/flv=mpv.desktop +video/mp4v-es=mpv.desktop +video/mpeg-system=mpv.desktop +video/msvideo=mpv.desktop +video/vnd.divx=mpv.desktop +video/vnd.mpegurl=mpv.desktop +video/vnd.rn-realvideo=mpv.desktop +video/x-avi=mpv.desktop +video/x-m4v=mpv.desktop +video/x-mpeg=mpv.desktop +video/x-mpeg-system=mpv.desktop +video/x-mpeg2=mpv.desktop +video/x-theora=mpv.desktop +video/x-theora+ogg=mpv.desktop +x-content/video-dvd=mpv.desktop +x-content/video-svcd=mpv.desktop +x-content/video-vcd=mpv.desktop +application/ogg=mpv.desktop +application/vnd.apple.mpegurl=mpv.desktop + +# Audio (mpv) audio/mpeg=mpv.desktop audio/ogg=mpv.desktop audio/flac=mpv.desktop audio/x-wav=mpv.desktop audio/mp4=mpv.desktop +audio/basic=mpv.desktop +audio/opus=mpv.desktop +audio/vnd.rn-realaudio=mpv.desktop +audio/vnd.wav=mpv.desktop +audio/vorbis=mpv.desktop +audio/x-aiff=mpv.desktop +audio/x-mpegurl=mpv.desktop + +# Text and source code (emacsclient) +text/plain=emacsclient.desktop +text/english=emacsclient.desktop +text/x-readme=emacsclient.desktop +text/x-csrc=emacsclient.desktop +text/x-chdr=emacsclient.desktop +text/x-c=emacsclient.desktop +text/x-c++=emacsclient.desktop +text/x-c++src=emacsclient.desktop +text/x-c++hdr=emacsclient.desktop +text/x-java=emacsclient.desktop +text/x-python=emacsclient.desktop +text/x-ruby=emacsclient.desktop +text/x-rust=emacsclient.desktop +text/x-go=emacsclient.desktop +text/x-lua=emacsclient.desktop +text/x-perl=emacsclient.desktop +text/x-haskell=emacsclient.desktop +text/x-moc=emacsclient.desktop +text/x-pascal=emacsclient.desktop +text/x-tcl=emacsclient.desktop +text/javascript=emacsclient.desktop +application/javascript=emacsclient.desktop +application/x-typescript=emacsclient.desktop +text/vnd.trolltech.linguist=emacsclient.desktop +text/css=emacsclient.desktop +application/json=emacsclient.desktop +application/xml=emacsclient.desktop +text/xml=emacsclient.desktop +text/x-scss=emacsclient.desktop +text/x-sass=emacsclient.desktop +application/x-shellscript=emacsclient.desktop +text/x-makefile=emacsclient.desktop +text/x-cmake=emacsclient.desktop +application/toml=emacsclient.desktop +application/x-yaml=emacsclient.desktop +text/x-ini=emacsclient.desktop +text/x-systemd-unit=emacsclient.desktop +text/markdown=emacsclient.desktop +text/org=emacsclient.desktop +text/x-tex=emacsclient.desktop +text/x-latex=emacsclient.desktop +application/x-desktop=emacsclient.desktop +text/x-diff=emacsclient.desktop +text/x-patch=emacsclient.desktop +text/x-sql=emacsclient.desktop +text/x-lisp=emacsclient.desktop +text/x-emacs-lisp=emacsclient.desktop +text/x-scheme=emacsclient.desktop +text/x-log=emacsclient.desktop +text/x-nfo=emacsclient.desktop +application/x-docbook+xml=emacsclient.desktop +text/x-dockerfile=emacsclient.desktop +application/x-wine-extension-ini=emacsclient.desktop + +# Spreadsheets (libreoffice calc) +application/vnd.ms-excel=libreoffice-calc.desktop +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop +application/vnd.oasis.opendocument.spreadsheet=libreoffice-calc.desktop +application/vnd.oasis.opendocument.spreadsheet-template=libreoffice-calc.desktop +text/csv=libreoffice-calc.desktop +text/tab-separated-values=libreoffice-calc.desktop + +# Presentations (libreoffice impress) +application/vnd.ms-powerpoint=libreoffice-impress.desktop +application/vnd.openxmlformats-officedocument.presentationml.presentation=libreoffice-impress.desktop +application/vnd.oasis.opendocument.presentation=libreoffice-impress.desktop +application/vnd.oasis.opendocument.presentation-template=libreoffice-impress.desktop + +# Word processing (libreoffice writer) +application/msword=libreoffice-writer.desktop +application/vnd.ms-word=libreoffice-writer.desktop +application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop +application/vnd.oasis.opendocument.text=libreoffice-writer.desktop +application/vnd.oasis.opendocument.text-template=libreoffice-writer.desktop +application/rtf=libreoffice-writer.desktop +text/rtf=libreoffice-writer.desktop + +# Archives (file-roller) +application/zip=org.gnome.FileRoller.desktop +application/x-tar=org.gnome.FileRoller.desktop +application/gzip=org.gnome.FileRoller.desktop +application/x-gzip=org.gnome.FileRoller.desktop +application/x-compressed-tar=org.gnome.FileRoller.desktop +application/x-bzip2=org.gnome.FileRoller.desktop +application/x-bzip2-compressed-tar=org.gnome.FileRoller.desktop +application/x-xz=org.gnome.FileRoller.desktop +application/x-xz-compressed-tar=org.gnome.FileRoller.desktop +application/x-7z-compressed=org.gnome.FileRoller.desktop +application/x-rar=org.gnome.FileRoller.desktop +application/vnd.rar=org.gnome.FileRoller.desktop +application/x-zstd-compressed-tar=org.gnome.FileRoller.desktop + +# Torrents (transmission) +application/x-bittorrent=io.github.TransmissionRemoteGtk.desktop +x-scheme-handler/magnet=io.github.TransmissionRemoteGtk.desktop + +# FTP (filezilla) +x-scheme-handler/ftp=filezilla.desktop + +# Org-protocol (emacsclient) +x-scheme-handler/org-protocol=org-protocol.desktop + +# Signal x-scheme-handler/sgnl=signal.desktop x-scheme-handler/signalcaptcha=signal.desktop diff --git a/dotfiles/common/.local/bin/resetmimetypes b/dotfiles/common/.local/bin/resetmimetypes index cfe5936..ff1a244 100755 --- a/dotfiles/common/.local/bin/resetmimetypes +++ b/dotfiles/common/.local/bin/resetmimetypes @@ -1,220 +1,20 @@ #!/usr/bin/env bash +# Reset mime type associations after package updates. +# Source of truth is the stowed mimeapps.list in dotfiles. +# This script clears caches, restores the stow symlink, and rebuilds databases. -# Remove Old Databases -rm ~/.config/mimeapps.list >> /dev/null 2>&1 -rm ~/.local/share/applications/mimeinfo.cache >> /dev/null 2>&1 -rm ~/.local/share/applications/mimeinfo.list >> /dev/null 2>&1 +set -euo pipefail -# Directory Node: nautilus -xdg-mime default org.gnome.Nautilus.desktop inode/directory +echo "Removing old caches..." +rm -f ~/.config/mimeapps.list +rm -f ~/.local/share/applications/mimeinfo.cache +rm -f ~/.local/share/applications/mimeinfo.list -# Audio Files: audacious - -# Audio Files: mpv -xdg-mime default mpv.desktop audio/basic -xdg-mime default mpv.desktop audio/flac.wav -xdg-mime default mpv.desktop audio/mp4 -xdg-mime default mpv.desktop audio/mpeg -xdg-mime default mpv.desktop audio/ogg -xdg-mime default mpv.desktop audio/opus -xdg-mime default mpv.desktop audio/vnd.rn-realaudio -xdg-mime default mpv.desktop audio/vnd.wav -xdg-mime default mpv.desktop audio/vorbis -xdg-mime default mpv.desktop audio/x-aiff -xdg-mime default mpv.desktop audio/x-mpegurl - -# Video Files: mpv - -# Video Files: vlc -xdg-mime default vlc.desktop application/mpeg4-iod -xdg-mime default vlc.desktop application/mpeg4-muxcodetable -xdg-mime default vlc.desktop application/ogg -xdg-mime default vlc.desktop application/vnd.apple.mpegurl -xdg-mime default vlc.desktop application/x-quicktime-media-link -xdg-mime default vlc.desktop application/x-quicktimeplayer -xdg-mime default vlc.desktop application/x-shockwave-flash -xdg-mime default vlc.desktop video/avi -xdg-mime default vlc.desktop video/divx -xdg-mime default vlc.desktop video/flv -xdg-mime default vlc.desktop video/mp4 -xdg-mime default vlc.desktop video/mp4v-es -xdg-mime default vlc.desktop video/mpeg -xdg-mime default vlc.desktop video/mpeg-system -xdg-mime default vlc.desktop video/msvideo -xdg-mime default vlc.desktop video/ogg -xdg-mime default vlc.desktop video/quicktime -xdg-mime default vlc.desktop video/vnd.divx -xdg-mime default vlc.desktop video/vnd.mpegurl -xdg-mime default vlc.desktop video/vnd.rn-realvideo -xdg-mime default vlc.desktop video/webm -xdg-mime default vlc.desktop video/x-avi -xdg-mime default vlc.desktop video/x-flv -xdg-mime default vlc.desktop video/x-m4v -xdg-mime default vlc.desktop video/x-matroska -xdg-mime default vlc.desktop video/x-mpeg -xdg-mime default vlc.desktop video/x-mpeg-system -xdg-mime default vlc.desktop video/x-mpeg2 -xdg-mime default vlc.desktop video/x-ms-wmv -xdg-mime default vlc.desktop video/x-msvideo -xdg-mime default vlc.desktop video/x-theora -xdg-mime default vlc.desktop video/x-theora+ogg -xdg-mime default vlc.desktop x-content/video-dvd -xdg-mime default vlc.desktop x-content/video-svcd -xdg-mime default vlc.desktop x-content/video-vcd - -# Images: feh -xdg-mime default feh.desktop image/bmp -xdg-mime default feh.desktop image/gif -xdg-mime default feh.desktop image/jpeg -xdg-mime default feh.desktop image/jpg -xdg-mime default feh.desktop image/png -xdg-mime default feh.desktop image/tiff -xdg-mime default feh.desktop image/webp -xdg-mime default feh.desktop image/avif -xdg-mime default feh.desktop image/heic -xdg-mime default feh.desktop image/heif -xdg-mime default feh.desktop image/svg+xml -xdg-mime default feh.desktop image/x-bmp -xdg-mime default feh.desktop image/x-eps -xdg-mime default feh.desktop image/x-ico -xdg-mime default feh.desktop image/x-icon -xdg-mime default feh.desktop image/x-xbitmap -xdg-mime default feh.desktop image/x-xpixmap - -# Torrent Files: Transmission Remote -xdg-mime default io.github.TransmissionRemoteGtk-gtk.desktop application/x-bittorrent -xdg-mime default io.github.TransmissionRemoteGtk.desktop x-scheme-handler/magnet - -# Web Browser: Chromium Browser - -# Web Browser: Google-Chrome Browser - -# Web Browser: Google Chrome Stable -xdg-mime default google-chrome-stable.desktop application/rdf+xml -xdg-mime default google-chrome-stable.desktop application/rss+xml -xdg-mime default google-chrome-stable.desktop application/xhtml+xml -xdg-mime default google-chrome-stable.desktop application/xhtml_xml -xdg-mime default google-chrome-stable.desktop application/xml -xdg-mime default google-chrome-stable.desktop text/html -xdg-mime default google-chrome-stable.desktop text/xml -xdg-mime default google-chrome-stable.desktop x-scheme-handler/http -xdg-mime default google-chrome-stable.desktop x-scheme-handler/https - -# Mobi Ebooks: calibre-ebook-reader -xdg-mime default calibre-ebook-viewer.desktop application/x-mobi8-ebook -xdg-mime default calibre-ebook-viewer.desktop application/x-mobipocket-ebook - -# Text and Source Code: Emacsclient -xdg-mime default emacsclient.desktop application/x-shellscript -xdg-mime default emacsclient.desktop text/english -xdg-mime default emacsclient.desktop text/markdown -xdg-mime default emacsclient.desktop text/plain -xdg-mime default emacsclient.desktop text/x-c -xdg-mime default emacsclient.desktop text/x-c++ -xdg-mime default emacsclient.desktop text/x-c++hdr -xdg-mime default emacsclient.desktop text/x-c++src -xdg-mime default emacsclient.desktop text/x-chdr -xdg-mime default emacsclient.desktop text/x-csrc -xdg-mime default emacsclient.desktop text/x-java -xdg-mime default emacsclient.desktop text/x-makefile -xdg-mime default emacsclient.desktop text/x-moc -xdg-mime default emacsclient.desktop text/x-pascal -xdg-mime default emacsclient.desktop text/x-tcl -xdg-mime default emacsclient.desktop text/x-tex - -# PDF/EPUB: Emacsclient - -# PDF ePUB: Zathura -xdg-mime default org.pwmt.zathura.desktop application/eps -xdg-mime default org.pwmt.zathura.desktop application/epub+zip -xdg-mime default org.pwmt.zathura.desktop application/oxps -xdg-mime default org.pwmt.zathura.desktop application/pdf -xdg-mime default org.pwmt.zathura.desktop application/postscript -xdg-mime default org.pwmt.zathura.desktop application/ps -xdg-mime default org.pwmt.zathura.desktop application/x-fictionbook -xdg-mime default org.pwmt.zathura.desktop image/eps -xdg-mime default org.pwmt.zathura.desktop image/vnd.djvu -xdg-mime default org.pwmt.zathura.desktop image/vnd.djvu+multipage - -# PDF ePUB: Foliate - -# PDF ePUB: Evince - -# Comics Files: Zathura -xdg-mime default org.pwmt.zathura.desktop application/vnd.comicbook+zip -xdg-mime default org.pwmt.zathura.desktop application/vnd.comicbook-rar - -# Spreadsheets: Libreoffice Calc -xdg-mime default libreoffice-calc.desktop application/vnd.ms-excel -xdg-mime default libreoffice-calc.desktop application/vnd.openxmlformats-officedocument.spreadsheetml.sheet -xdg-mime default libreoffice-calc.desktop application/vnd.oasis.opendocument.spreadsheet -xdg-mime default libreoffice-calc.desktop application/vnd.oasis.opendocument.spreadsheet-template -xdg-mime default libreoffice-calc.desktop text/csv -xdg-mime default libreoffice-calc.desktop text/tab-separated-values - -# Presentations: Libreoffice Impress -xdg-mime default libreoffice-impress.desktop application/vnd.ms-powerpoint -xdg-mime default libreoffice-impress.desktop application/vnd.openxmlformats-officedocument.presentationml.presentation -xdg-mime default libreoffice-impress.desktop application/vnd.oasis.opendocument.presentation -xdg-mime default libreoffice-impress.desktop application/vnd.oasis.opendocument.presentation-template - -# Libreoffice Writer -xdg-mime default libreoffice-writer.desktop application/clarisworks -xdg-mime default libreoffice-writer.desktop application/macwriteii -xdg-mime default libreoffice-writer.desktop application/msword -xdg-mime default libreoffice-writer.desktop application/prs.plucker -xdg-mime default libreoffice-writer.desktop application/rtf -xdg-mime default libreoffice-writer.desktop application/vnd.lotus-wordpro -xdg-mime default libreoffice-writer.desktop application/vnd.ms-word -xdg-mime default libreoffice-writer.desktop application/vnd.ms-word.template.macroEnabled.12 -xdg-mime default libreoffice-writer.desktop application/vnd.ms-works -xdg-mime default libreoffice-writer.desktop application/vnd.oasis.opendocument.text -xdg-mime default libreoffice-writer.desktop application/vnd.oasis.opendocument.text-flat-xml -xdg-mime default libreoffice-writer.desktop application/vnd.oasis.opendocument.text-master -xdg-mime default libreoffice-writer.desktop application/vnd.oasis.opendocument.text-master-template -xdg-mime default libreoffice-writer.desktop application/vnd.oasis.opendocument.text-template -xdg-mime default libreoffice-writer.desktop application/vnd.oasis.opendocument.text-web -xdg-mime default libreoffice-writer.desktop application/vnd.openxmlformats-officedocument -xdg-mime default libreoffice-writer.desktop application/vnd.openxmlformats-officedocument.wordprocessingml.document -xdg-mime default libreoffice-writer.desktop application/vnd.palm -xdg-mime default libreoffice-writer.desktop application/vnd.stardivision.writer-global -xdg-mime default libreoffice-writer.desktop application/vnd.sun.xml.writer -xdg-mime default libreoffice-writer.desktop application/vnd.sun.xml.writer.global -xdg-mime default libreoffice-writer.desktop application/vnd.sun.xml.writer.template -xdg-mime default libreoffice-writer.desktop application/vnd.wordperfect -xdg-mime default libreoffice-writer.desktop application/wordperfect -xdg-mime default libreoffice-writer.desktop application/x-abiword -xdg-mime default libreoffice-writer.desktop application/x-aportisdoc -xdg-mime default libreoffice-writer.desktop application/x-doc -xdg-mime default libreoffice-writer.desktop application/x-extension-txt -xdg-mime default libreoffice-writer.desktop application/x-fictionbook+xml -xdg-mime default libreoffice-writer.desktop application/x-hwp -xdg-mime default libreoffice-writer.desktop application/x-iwork-pages-sffpages -xdg-mime default libreoffice-writer.desktop application/x-mswrite -xdg-mime default libreoffice-writer.desktop application/x-sony-bbeb -xdg-mime default libreoffice-writer.desktop application/x-starwriter -xdg-mime default libreoffice-writer.desktop application/x-t602 -xdg-mime default libreoffice-writer.desktop text/rtf - -# Archives: file-roller -xdg-mime default org.gnome.FileRoller.desktop application/zip -xdg-mime default org.gnome.FileRoller.desktop application/x-tar -xdg-mime default org.gnome.FileRoller.desktop application/gzip -xdg-mime default org.gnome.FileRoller.desktop application/x-gzip -xdg-mime default org.gnome.FileRoller.desktop application/x-compressed-tar -xdg-mime default org.gnome.FileRoller.desktop application/x-bzip2 -xdg-mime default org.gnome.FileRoller.desktop application/x-bzip2-compressed-tar -xdg-mime default org.gnome.FileRoller.desktop application/x-xz -xdg-mime default org.gnome.FileRoller.desktop application/x-xz-compressed-tar -xdg-mime default org.gnome.FileRoller.desktop application/x-7z-compressed -xdg-mime default org.gnome.FileRoller.desktop application/x-rar -xdg-mime default org.gnome.FileRoller.desktop application/vnd.rar -xdg-mime default org.gnome.FileRoller.desktop application/x-zstd-compressed-tar - -# FTP Scheme-Handler: Filezilla -xdg-mime default filezilla.desktop x-scheme-handler/ftp - -# Org-Protocol Scheme-Handler: emacsclient -xdg-mime default org-protocol.desktop x-scheme-handler/org-protocol +echo "Restowing dotfiles..." +cd ~/code/archsetup && make restow hyprland +echo "Rebuilding databases..." update-desktop-database ~/.local/share/applications/ +update-mime-database ~/.local/share/mime/ + +echo "Done. Mime types reset." diff --git a/dotfiles/common/.local/share/mime/packages/custom-types.xml b/dotfiles/common/.local/share/mime/packages/custom-types.xml new file mode 100644 index 0000000..30600c2 --- /dev/null +++ b/dotfiles/common/.local/share/mime/packages/custom-types.xml @@ -0,0 +1,9 @@ + + + + TypeScript source + + + + + diff --git a/dotfiles/hyprland/.local/share/applications/emacsclient.desktop b/dotfiles/hyprland/.local/share/applications/emacsclient.desktop new file mode 100644 index 0000000..c1771b9 --- /dev/null +++ b/dotfiles/hyprland/.local/share/applications/emacsclient.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Name=Emacs (Client) +GenericName=Text Editor +Comment=Edit text +MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++; +Exec=/usr/bin/emacsclient --alternate-editor= --create-frame %F +Icon=emacs +Type=Application +Terminal=false +Categories=Development;TextEditor; +StartupNotify=true +StartupWMClass=Emacs +Keywords=emacsclient; -- cgit v1.2.3