Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions bin/omarchy-default-filemanager
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash

# omarchy:summary=Set the default file manager for Omarchy and XDG handlers
# omarchy:args=[nautilus|dolphin|thunar|nemo|pcmanfm]
# omarchy:examples=omarchy default filemanager nautilus | omarchy default filemanager dolphin

installing=false
if [[ ${1:-} == "--install" ]]; then
installing=true
shift
fi

if (($# == 0)); then
desktop_id=$(xdg-mime query default inode/directory 2>/dev/null || true)
case "$desktop_id" in
org.gnome.Nautilus.desktop | nautilus.desktop) echo "nautilus" ;;
org.kde.dolphin.desktop | dolphin.desktop) echo "dolphin" ;;
thunar.desktop) echo "thunar" ;;
nemo.desktop) echo "nemo" ;;
pcmanfm.desktop) echo "pcmanfm" ;;
*)
if [[ -n $desktop_id ]]; then
echo "$desktop_id"
else
echo "nautilus"
fi
;;
esac
exit 0
fi

case "$1" in
nautilus) filemanager="nautilus"; command="nautilus"; desktop_id="org.gnome.Nautilus.desktop"; name="Nautilus (Files)"; glyph= ;;
dolphin) filemanager="dolphin"; command="dolphin"; desktop_id="org.kde.dolphin.desktop"; name="Dolphin"; glyph= ;;
thunar) filemanager="thunar"; command="thunar"; desktop_id="thunar.desktop"; name="Thunar"; glyph= ;;
nemo) filemanager="nemo"; command="nemo"; desktop_id="nemo.desktop"; name="Nemo"; glyph= ;;
pcmanfm) filemanager="pcmanfm"; command="pcmanfm"; desktop_id="pcmanfm.desktop"; name="PCManFM"; glyph= ;;
*)
echo "Usage: omarchy-default-filemanager <nautilus|dolphin|thunar|nemo|pcmanfm>"
exit 1
;;
esac

if omarchy-cmd-missing "$command"; then
if [[ $installing == "false" ]]; then
exec omarchy-launch-floating-terminal-with-presentation omarchy-default-filemanager --install "$filemanager"
else
case "$filemanager" in
nautilus) omarchy-pkg-add nautilus ;;
dolphin) omarchy-pkg-add dolphin ;;
thunar) omarchy-pkg-add thunar ;;
nemo) omarchy-pkg-add nemo ;;
pcmanfm) omarchy-pkg-add pcmanfm ;;
esac || exit 1
fi
fi

xdg-mime default "$desktop_id" inode/directory || exit 1

omarchy-notification-send -g $glyph "$name is now the default file manager"
19 changes: 19 additions & 0 deletions bin/omarchy-launch-filemanager
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash

# omarchy:summary=Launch the default file manager determined by xdg-mime
# omarchy:args=[directory]

default_fm=$(xdg-mime query default inode/directory 2>/dev/null)
if [[ -z $default_fm ]]; then
default_fm="org.gnome.Nautilus.desktop"
fi

fm_exec=$(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$default_fm 2>/dev/null | head -1)

if [[ -z $fm_exec ]]; then
fm_exec="nautilus"
fi

target_dir="${1:-$HOME}"

exec setsid uwsm-app -- "$fm_exec" "$target_dir"
6 changes: 6 additions & 0 deletions bin/omarchy-launch-filemanager-cwd
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash

# omarchy:summary=Launch the default file manager in the active terminal's current directory

dir=$(omarchy-cmd-terminal-cwd 2>/dev/null)
exec omarchy-launch-filemanager "${dir:-$HOME}"
4 changes: 2 additions & 2 deletions default/hypr/bindings/applications.lua
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
-- Essential application bindings.
o.bind("SUPER + RETURN", "Terminal", { omarchy = "terminal" })
o.bind("SUPER + SHIFT + RETURN", "Browser", { omarchy = "browser" })
o.bind("SUPER + SHIFT + F", "File manager", { omarchy = "nautilus" })
o.bind("SUPER + ALT + SHIFT + F", "File manager (cwd)", { omarchy = "nautilus-cwd" })
o.bind("SUPER + SHIFT + F", "File manager", { omarchy = "filemanager" })
o.bind("SUPER + ALT + SHIFT + F", "File manager (cwd)", { omarchy = "filemanager-cwd" })
o.bind("SUPER + SHIFT + B", "Browser", { omarchy = "browser" })
o.bind("SUPER + SHIFT + ALT + B", "Browser (private)", { omarchy = "browser --private" })
o.bind("SUPER + SHIFT + N", "Editor", { omarchy = "editor" })
Expand Down
6 changes: 6 additions & 0 deletions default/omarchy/omarchy-menu.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,12 @@
"setup.default.editor.helix": {"icon":"","label":"Helix","checked":"[[ \"$(omarchy-default-editor)\" == \"helix\" ]]","action":"omarchy-default-editor helix"},
"setup.default.editor.vim": {"icon":"","label":"Vim","checked":"[[ \"$(omarchy-default-editor)\" == \"vim\" ]]","action":"omarchy-default-editor vim"},
"setup.default.editor.emacs": {"icon":"","label":"Emacs","checked":"[[ \"$(omarchy-default-editor)\" == \"emacs\" ]]","action":"omarchy-default-editor emacs"},
"setup.default.filemanager": {"icon":"","label":"File Manager","title":"Default File Manager"},
"setup.default.filemanager.nautilus": {"icon":"","label":"Nautilus (Files)","checked":"[[ \"$(omarchy-default-filemanager)\" == \"nautilus\" ]]","action":"omarchy-default-filemanager nautilus"},
"setup.default.filemanager.dolphin": {"icon":"","label":"Dolphin","checked":"[[ \"$(omarchy-default-filemanager)\" == \"dolphin\" ]]","action":"omarchy-default-filemanager dolphin"},
"setup.default.filemanager.thunar": {"icon":"","label":"Thunar","checked":"[[ \"$(omarchy-default-filemanager)\" == \"thunar\" ]]","action":"omarchy-default-filemanager thunar"},
"setup.default.filemanager.nemo": {"icon":"","label":"Nemo","checked":"[[ \"$(omarchy-default-filemanager)\" == \"nemo\" ]]","action":"omarchy-default-filemanager nemo"},
"setup.default.filemanager.pcmanfm": {"icon":"","label":"PCManFM","checked":"[[ \"$(omarchy-default-filemanager)\" == \"pcmanfm\" ]]","action":"omarchy-default-filemanager pcmanfm"},
"setup.plugin": {"icon":"󰐱","label":"Plugins","aliases":["plugin","plugins"]},
"setup.plugin.enable": {"icon":"󰄬","label":"Enable Plugin","action":"omarchy-menu-plugin enable"},
"setup.plugin.disable": {"icon":"󰅖","label":"Disable Plugin","action":"omarchy-menu-plugin disable"},
Expand Down