diff --git a/bin/omarchy-install-gaming-retroarch b/bin/omarchy-install-gaming-retroarch index 828acfc461..3ebfea77c3 100755 --- a/bin/omarchy-install-gaming-retroarch +++ b/bin/omarchy-install-gaming-retroarch @@ -21,7 +21,10 @@ omarchy-pkg-add \ libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \ libretro-sameboy libretro-scummvm libretro-shaders-slang libretro-snes9x \ libretro-yabause \ - libretro-cap32-git libretro-fbneo-git libretro-uae-git libretro-vice-git \ + libretro-cap32-git libretro-fbneo-git libretro-uae-git \ + libretro-vice-x128-git libretro-vice-x64-git libretro-vice-x64dtv-git libretro-vice-x64sc-git \ + libretro-vice-xcbm2-git libretro-vice-xcbm5x0-git libretro-vice-xpet-git \ + libretro-vice-xplus4-git libretro-vice-xscpu64-git libretro-vice-xvic-git \ libretro-database-git \ retroarch-joypad-autoconfig-git diff --git a/bin/omarchy-remove-gaming-retroarch b/bin/omarchy-remove-gaming-retroarch index 16e549f2fe..82e0a8dc10 100755 --- a/bin/omarchy-remove-gaming-retroarch +++ b/bin/omarchy-remove-gaming-retroarch @@ -21,7 +21,10 @@ omarchy-pkg-drop \ libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \ libretro-sameboy libretro-scummvm libretro-shaders-slang libretro-snes9x \ libretro-yabause \ - libretro-cap32-git libretro-fbneo-git libretro-uae-git libretro-vice-git \ + libretro-cap32-git libretro-fbneo-git libretro-uae-git \ + libretro-vice-x128-git libretro-vice-x64-git libretro-vice-x64dtv-git libretro-vice-x64sc-git \ + libretro-vice-xcbm2-git libretro-vice-xcbm5x0-git libretro-vice-xpet-git \ + libretro-vice-xplus4-git libretro-vice-xscpu64-git libretro-vice-xvic-git \ retroarch-joypad-autoconfig-git rm -rf \ diff --git a/default/nautilus-python/extensions/copy-filepath.py b/default/nautilus-python/extensions/copy-filepath.py new file mode 100644 index 0000000000..34087d11e8 --- /dev/null +++ b/default/nautilus-python/extensions/copy-filepath.py @@ -0,0 +1,56 @@ +import shutil + +from gi import require_version + +require_version("Nautilus", "4.1") + +from gi.repository import GObject, Gio, GLib, Nautilus + + +class CopyFilePathAction(GObject.GObject, Nautilus.MenuProvider): + def _selected_paths(self, files): + paths = [] + seen = set() + + for file in files: + location = file.get_location() + if not location: + continue + + path = location.get_path() + if path and path not in seen: + seen.add(path) + paths.append(path) + + return paths + + def _make_item(self, paths): + label = "Copy file path" if len(paths) == 1 else "Copy file paths" + item = Nautilus.MenuItem( + name="OmarchyCopyFilePath::copy_file_path", + label=label, + icon="edit-copy", + ) + item.connect("activate", self._on_activate, paths) + return item + + def _on_activate(self, _menu, paths): + text = "\n".join(paths) + + proc = Gio.Subprocess.new( + ["wl-copy", "--type", "text/plain"], + Gio.SubprocessFlags.STDIN_PIPE + | Gio.SubprocessFlags.STDOUT_SILENCE + | Gio.SubprocessFlags.STDERR_SILENCE, + ) + if proc: + proc.communicate(GLib.Bytes.new(text.encode("utf-8")), cancellable=None) + + def get_file_items(self, *args): + files = args[0] if len(args) == 1 else args[1] + paths = self._selected_paths(files) + + if not paths or not shutil.which("wl-copy"): + return [] + + return [self._make_item(paths)] diff --git a/install/config/nautilus-python.sh b/install/config/nautilus-python.sh index 76266353e3..d4e02cf1e1 100644 --- a/install/config/nautilus-python.sh +++ b/install/config/nautilus-python.sh @@ -3,3 +3,4 @@ EXTENSIONS_DIR="$HOME/.local/share/nautilus-python/extensions" mkdir -p "$EXTENSIONS_DIR" cp "$OMARCHY_PATH/default/nautilus-python/extensions/localsend.py" "$EXTENSIONS_DIR/" cp "$OMARCHY_PATH/default/nautilus-python/extensions/transcode.py" "$EXTENSIONS_DIR/" +cp "$OMARCHY_PATH/default/nautilus-python/extensions/copy-filepath.py" "$EXTENSIONS_DIR/"