From 63db8a0757836680d0395fa1e843b56ec4837c20 Mon Sep 17 00:00:00 2001 From: Ulas Date: Sat, 19 Sep 2026 22:39:32 +0400 Subject: [PATCH 1/2] [ Column View ] rename the package to nemo-with-column-view 7.0.0 Shipping the fork as "nemo" 1.0.x made apt treat the distribution's nemo 6.6.3+zena as an upgrade: every Mint update reverted the fork to the stock nemo, and installing the fork again deleted nemo-fileroller, which apt then reinstalled together with the stock nemo (the ping-pong in dpkg.log). The Replaces-only takeover also left nemo-data / libnemo-extension1 / gir1.2-nemo-3.0 installed with empty file lists, which removed org.nemo.gschema.xml and libnemo-extension.so.1 from the system and broke nemo itself. - version the package in the 7.x line, above any nemo version the distributions ship (6.6.x today, 6.8.x later) - declare versioned Provides (nemo, nemo-data, libnemo-extension1, gir1.2-nemo-3.0, libnemo-extension-dev) plus Replaces and Breaks of their older versions, and Conflicts with nemo-dbg / cinnamon-dbg, whose "nemo (= 6.6.3+zena)" pin can never be satisfied by a provider - stop bundling nemo-fileroller: this build ships the same libnemo-extension.so.1 ABI (5), so the distro package works as-is and is a plain Depends; bundling made both packages own the same file in extensions-3.0/ - rename the executable to /usr/bin/nemo-with-column-view with a /usr/bin/nemo compatibility symlink, and show the launcher as "Nemo with Column View" - keep the shared on-disk identity on purpose (nemo.desktop launcher id, org.nemo.* GSettings schemas, Nemo-3.0 GIR, org.Nemo D-Bus name, libnemo-extension.so.1, /usr/share/nemo, .nemo_action) so cinnamon-settings (cs_desktop.py, Spices.py, ExtensionCore.py), session defaults and nemo extensions keep working --- .github/workflows/package.yml | 134 +++++++++++------- README.md | 26 ++++ data/nemo.FileManager1.service.in | 2 +- data/nemo.desktop.in | 15 +- data/nemo.service.in | 2 +- data/org.nemo.root.policy.in | 2 +- debian/changelog | 50 +++++++ debian/control | 20 ++- ....install => nemo-with-column-view.install} | 0 ...> nemo-with-column-view.lintian-overrides} | 0 meson.build | 12 +- src/meson.build | 11 +- src/nemo-desktop-application.c | 1 + src/nemo-extension-config-widget.c | 2 +- src/nemo-main.c | 2 +- src/nemo-view.c | 2 +- 16 files changed, 207 insertions(+), 74 deletions(-) rename debian/{nemo.install => nemo-with-column-view.install} (100%) rename debian/{nemo.lintian-overrides => nemo-with-column-view.lintian-overrides} (100%) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 554c8223..1902b8d9 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -86,31 +86,21 @@ jobs: - name: Install to staging directory run: DESTDIR=/tmp/staging meson install -C build - - name: Build and bundle nemo-fileroller (Compress/Extract context menu) + # nemo-fileroller is no longer bundled/compiled here. We ship the same + # libnemo-extension.so.1 ABI (version-info 5) as the distributions' nemo, + # so their nemo-fileroller package loads fine into this build and is + # pulled in with a plain 'Depends: nemo-fileroller' below. Bundling our + # own copy meant both packages owned + # /usr/lib/x86_64-linux-gnu/nemo/extensions-3.0/libnemo-fileroller.so, + # which made every install of this package delete the distro one - and + # apt immediately reinstalled it together with the stock nemo. + - name: Check staged nemo-fileroller extension is NOT present run: | - apt-get install -y --no-install-recommends git - # Our nemo fork uses the legacy libnemo-extension ABI - # (get_file_items/get_background_items), so we bundle the - # compatible nemo-fileroller 2.8.x and compile it against our - # staged libnemo-extension headers/libs (the host may ship a - # newer, incompatible nemo). - git clone --depth 1 --branch 2.8.x https://github.com/linuxmint/nemo-extensions /tmp/nemo-extensions - cd /tmp/nemo-extensions/nemo-fileroller/src - cat > config.h <<'EOF' - #ifndef CONFIG_H - #define CONFIG_H - #define GETTEXT_PACKAGE "nemo-fileroller" - #define GNOMELOCALEDIR "/usr/share/locale" - #endif - EOF - gcc -shared -fPIC -o libnemo-fileroller.so \ - -I. -I/tmp/staging/usr/include/nemo \ - $(pkg-config --cflags glib-2.0 gio-2.0 gtk+-3.0 pango) \ - nemo-fileroller.c fileroller-module.c \ - -L/tmp/staging/usr/lib/x86_64-linux-gnu -lnemo-extension - mkdir -p /tmp/staging/usr/lib/x86_64-linux-gnu/nemo/extensions-3.0 - cp libnemo-fileroller.so /tmp/staging/usr/lib/x86_64-linux-gnu/nemo/extensions-3.0/ - find /tmp/staging -name 'libnemo-fileroller.so' + if [ -e /tmp/staging/usr/lib/x86_64-linux-gnu/nemo/extensions-3.0/libnemo-fileroller.so ]; then + echo "ERROR: staged package still ships libnemo-fileroller.so" >&2 + exit 1 + fi + echo "OK: libnemo-fileroller.so is provided by the distro nemo-fileroller package" - name: Compute shared library dependencies id: shlibs @@ -118,15 +108,15 @@ jobs: run: | mkdir -p /tmp/pkgbuild/debian cat > /tmp/pkgbuild/debian/control <<'EOF' - Source: nemo + Source: nemo-with-column-view Section: misc Priority: optional Maintainer: Ulas - Package: nemo + Package: nemo-with-column-view Architecture: any Depends: ${shlibs:Depends} - Description: nemo + Description: nemo-with-column-view EOF cat > /tmp/pkgbuild/debian/shlibs.local <<'EOF' libnemo-extension 1 libnemo-extension1 (>= 5.0.3) @@ -134,17 +124,16 @@ jobs: cd /tmp/pkgbuild set -o pipefail LIBNEMO=$(ls /tmp/staging/usr/lib/x86_64-linux-gnu/libnemo-extension.so.*.*.* | head -1) - FR=$(ls /tmp/staging/usr/lib/x86_64-linux-gnu/nemo/extensions-3.0/libnemo-fileroller.so 2>/dev/null | head -1) DEPS=$(dpkg-shlibdeps -O \ -l/tmp/staging/usr/lib/x86_64-linux-gnu \ -l/tmp/staging/usr/lib \ - /tmp/staging/usr/bin/nemo \ + /tmp/staging/usr/bin/nemo-with-column-view \ /tmp/staging/usr/bin/nemo-desktop \ /tmp/staging/usr/bin/nemo-connect-server \ /tmp/staging/usr/bin/nemo-open-with \ /tmp/staging/usr/bin/nemo-autorun-software \ /tmp/staging/usr/libexec/nemo-extensions-list \ - "$LIBNEMO" "${FR:-}" 2>/dev/null \ + "$LIBNEMO" 2>/dev/null \ | sed 's/^shlibs:Depends=//') DEPS=$(echo "$DEPS" | sed 's/libnemo-extension1 ([^)]*), *//g; s/libnemo-extension1 ([^)]*)//') echo "deps=$DEPS" >> "$GITHUB_OUTPUT" @@ -153,19 +142,20 @@ jobs: run: | mkdir -p /tmp/staging/DEBIAN cat > /tmp/staging/DEBIAN/control < Installed-Size: $(du -sk /tmp/staging/usr | cut -f1) - Depends: ${{ steps.shlibs.outputs.deps }}, cinnamon-desktop-data (>= 4.8.0), cinnamon-l10n, desktop-file-utils (>= 0.7), gsettings-desktop-schemas, gvfs (>= 1.3.2), libglib2.0-data, shared-mime-info (>= 0.50), poppler-utils, exif, id3, catdoc, untex, html2text, python3, python3-xlrd, xapp-symbolic-icons (>= 1.0.7), file-roller - Replaces: nemo-data, libnemo-extension1, gir1.2-nemo-3.0, libnemo-extension-dev, nemo-fileroller - Provides: nemo-data, libnemo-extension1, gir1.2-nemo-3.0, libnemo-extension-dev, nemo-fileroller - Conflicts: nemo-desktop, nemo-fileroller + Depends: ${{ steps.shlibs.outputs.deps }}, nemo-fileroller, cinnamon-desktop-data (>= 4.8.0), cinnamon-l10n, desktop-file-utils (>= 0.7), gsettings-desktop-schemas, gvfs (>= 1.3.2), libglib2.0-data, shared-mime-info (>= 0.50), poppler-utils, exif, id3, catdoc, untex, html2text, python3, python3-xlrd, xapp-symbolic-icons (>= 1.0.7), file-roller + Provides: nemo (= ${{ steps.version.outputs.version }}), nemo-data (= ${{ steps.version.outputs.version }}), libnemo-extension1 (= ${{ steps.version.outputs.version }}), gir1.2-nemo-3.0 (= ${{ steps.version.outputs.version }}), libnemo-extension-dev (= ${{ steps.version.outputs.version }}) + Replaces: nemo, nemo-data, libnemo-extension1, gir1.2-nemo-3.0, libnemo-extension-dev + Breaks: nemo (<< ${{ steps.version.outputs.version }}), nemo-data (<< ${{ steps.version.outputs.version }}), libnemo-extension1 (<< ${{ steps.version.outputs.version }}), gir1.2-nemo-3.0 (<< ${{ steps.version.outputs.version }}), libnemo-extension-dev (<< ${{ steps.version.outputs.version }}) + Conflicts: nemo-dbg, cinnamon-dbg Homepage: https://github.com/simpletools-nl/mint-nemo - Description: file manager and graphical shell for Cinnamon + Description: file manager and graphical shell for Cinnamon - Column View build Nemo is the official file manager for the Cinnamon desktop. It allows to browse directories, preview files and launch applications associated with them. It is also responsible for handling the icons on the Cinnamon @@ -173,6 +163,19 @@ jobs: . This package is built from the custom branch that adds the macOS Finder-style Column View (Miller columns) to Nemo. + . + It takes over the distribution's nemo package: it Provides (with a + version) nemo, nemo-data, libnemo-extension1, gir1.2-nemo-3.0 and + libnemo-extension-dev, and Replaces/Breaks their older versions. It + deliberately keeps the shared on-disk identity (/usr/share/nemo, + org.nemo.* GSettings schemas, libnemo-extension.so.1, the + nemo.desktop launcher id and the org.Nemo D-Bus name) so that the + desktop environment, nemo extensions and Cinnamon's Spices find it. + . + Debug packages (nemo-dbg, cinnamon-dbg) cannot be installed alongside + this one: they pin nemo to an exact distribution version which a + provider can never satisfy, so they are conflicted with instead of + being left permanently uninstallable. EOF cat > /tmp/staging/DEBIAN/postinst <<'EOF' #!/bin/sh @@ -202,14 +205,14 @@ jobs: - name: Build deb package run: | - dpkg-deb --build --root-owner-group /tmp/staging /tmp/nemo_${{ steps.version.outputs.version }}_amd64.deb - ls -la /tmp/nemo_${{ steps.version.outputs.version }}_amd64.deb + dpkg-deb --build --root-owner-group /tmp/staging /tmp/nemo-with-column-view_${{ steps.version.outputs.version }}_amd64.deb + ls -la /tmp/nemo-with-column-view_${{ steps.version.outputs.version }}_amd64.deb - name: Upload deb artifact uses: actions/upload-artifact@v4 with: - name: nemo-deb - path: /tmp/nemo_${{ steps.version.outputs.version }}_amd64.deb + name: nemo-with-column-view-deb + path: /tmp/nemo-with-column-view_${{ steps.version.outputs.version }}_amd64.deb if-no-files-found: error - name: Remove existing release for this tag (if any) @@ -222,15 +225,37 @@ jobs: if: startsWith(github.ref, 'refs/tags/') uses: ncipollo/release-action@v1 with: - artifacts: /tmp/nemo_${{ steps.version.outputs.version }}_amd64.deb + artifacts: /tmp/nemo-with-column-view_${{ steps.version.outputs.version }}_amd64.deb token: ${{ secrets.GITHUB_TOKEN }} allowUpdates: true body: | - ## Nemo ${{ steps.version.outputs.version }} — Column View + ## Nemo with Column View ${{ steps.version.outputs.version }} — Column View + + Custom Nemo build that adds a macOS Finder-style **Column View (Miller columns)**. + It is based on Nemo 6.6.3 and now ships as the package **`nemo-with-column-view`**. - Custom Nemo build that adds a macOS Finder-style **Column View (Miller columns)** - and bundles the **nemo-fileroller** extension so the **Compress… / Extract Here** - context menu entries work out of the box. + ### Packaging changes in this release + - **The package is now named `nemo-with-column-view` and versioned `7.x`.** Until now it + shipped as `nemo` version `1.x`, which is *lower* than the distribution's + `nemo 6.6.3+zena`: apt treated every Mint update as an upgrade and fought the fork on + every refresh. The 7.x line sorts above any nemo version the distributions can ship. + - **Dependency metadata fixed.** The package now declares versioned + `Provides: nemo (= 7.0.0), nemo-data (= 7.0.0), libnemo-extension1 (= 7.0.0), + gir1.2-nemo-3.0 (= 7.0.0)` plus `Replaces`/`Breaks` for their older versions, so + `cinnamon`'s `nemo` dependency and the `libnemo-extension1 (>= 5.0.3)` / + `gir1.2-nemo-3.0 (>= 3.8)` requirements of `nemo-share`, `python-nemo`, `nemo-emblems` + and friends are properly satisfied. The old unversioned `Provides` could not. + - **`nemo-fileroller` is no longer bundled.** This build ships the same + `libnemo-extension.so.1` ABI (5) as the distribution, so the distro `nemo-fileroller` + package works as-is and is pulled in with a plain `Depends: nemo-fileroller`. + Bundling a second copy made both packages own the same extension file. + - **`nemo-dbg` / `cinnamon-dbg` are removed.** They pin `nemo` to an exact distribution + version that a package providing `nemo` can never satisfy, which left apt in a + permanently broken state. They are now explicitly conflicted with. + - **Shared identity is kept on purpose:** `/usr/share/nemo`, the `org.nemo.*` GSettings + schemas, `libnemo-extension.so.1`, the `nemo.desktop` launcher id and the `org.Nemo` + D-Bus name are unchanged so that Cinnamon's Desktop and Spices settings, nemo + extensions and Actions keep working. ### Fixes in this release - **Path bar highlighted the wrong folder.** After clicking a folder in Column View, @@ -254,17 +279,20 @@ jobs: - **Breadcrumb selection**: ancestor folders you drilled through stay highlighted, Finder-style, and opening a folder loads it as a single column (not the full ancestor chain up to `/`). - - **Compress / Extract**: the `nemo-fileroller` extension is compiled against this - build's `libnemo-extension` ABI and embedded in the package, so right-clicking a - file or folder shows "Compress…" and archives show "Extract Here". `file-roller` - is pulled in automatically as a dependency. + - **Compress / Extract**: `nemo-fileroller` is installed as a dependency, so + right-clicking a file or folder shows "Compress…" and archives show "Extract Here". - Right-click context menus, drag & drop between columns, and "Open in Terminal" from deep directories are supported in Column View. ### Installation ```bash - sudo dpkg -i nemo_${{ steps.version.outputs.version }}_amd64.deb - sudo apt-get install -f + sudo apt install ./nemo-with-column-view_${{ steps.version.outputs.version }}_amd64.deb ``` - Then restart Nemo (`nemo -q`) or log out/in for the new view and context-menu - entries to take effect. + (One transaction: `apt` removes the stock `nemo`, `nemo-data`, `libnemo-extension1`, + `gir1.2-nemo-3.0` and the `*-dbg` debug packages and installs this build. If you prefer + `sudo dpkg -i …`, follow it with `sudo apt-get install -f`.) + This replaces the distribution `nemo` package (it Provides/Replaces/Breaks it), which + is required because the two ship the same configuration and extension files. After + installing, `apt upgrade` will no longer try to "upgrade" it back to the stock nemo. + Then restart the file manager (`nemo -q`) or log out/in for the new view and + context-menu entries to take effect. diff --git a/README.md b/README.md index f2fe9285..0bfa8fa0 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,32 @@ We use Linux Mint for everything and found Nemo lacking a column view. We added This app is based on nemo 6.6.3 (You can view it on master branch) +Packaging / installation +------------------------ +This build ships as the Debian package **`nemo-with-column-view`** (version line **7.x**), not as +`nemo`. It *takes over* the distribution's `nemo` package: it declares versioned +`Provides: nemo (= 7.0.0), nemo-data (= 7.0.0), libnemo-extension1 (= 7.0.0), gir1.2-nemo-3.0 (= 7.0.0)` +plus `Replaces`/`Breaks` for their older versions, and `Conflicts` with `nemo-dbg`/`cinnamon-dbg`. +That is required because both packages install the same files +(`/usr/share/nemo`, `org.nemo.gschema.xml`, `libnemo-extension.so.1`, …); as a side effect +`apt upgrade` no longer tries to "upgrade" this build back to the stock nemo. + +```bash +sudo apt install ./nemo-with-column-view_7.0.0_amd64.deb +``` +(`apt` resolves the conflict in one transaction: it removes the stock `nemo`, +`nemo-data`, `libnemo-extension1`, `gir1.2-nemo-3.0` and the `*-dbg` packages and installs this +one. If you use plain `sudo dpkg -i …` instead, follow it with `sudo apt-get install -f` — the +transition state keeps the distro packages around until then.) + +`nemo-fileroller` (Compress… / Extract Here) is installed as a dependency, not bundled. + +The launcher is shown as **Nemo with Column View**. The on-disk identity is deliberately +unchanged so the rest of the desktop keeps working: `/usr/share/nemo`, the `org.nemo.*` GSettings +schemas, `libnemo-extension.so.1`, the `nemo.desktop` launcher id, the `org.Nemo` D-Bus name and +the `.nemo_action` extension. The executable is `/usr/bin/nemo-with-column-view`, with a +compatibility `/usr/bin/nemo` symlink. + Nemo ==== Nemo is a free and open-source software and official file manager of the Cinnamon desktop environment. diff --git a/data/nemo.FileManager1.service.in b/data/nemo.FileManager1.service.in index d3c54bdc..e3283644 100644 --- a/data/nemo.FileManager1.service.in +++ b/data/nemo.FileManager1.service.in @@ -1,3 +1,3 @@ [D-BUS Service] Name=org.freedesktop.FileManager1 -Exec=@bindir@/nemo --no-default-window +Exec=@bindir@/nemo-with-column-view --no-default-window diff --git a/data/nemo.desktop.in b/data/nemo.desktop.in index d3a7a059..9473d0b3 100644 --- a/data/nemo.desktop.in +++ b/data/nemo.desktop.in @@ -1,5 +1,5 @@ [Desktop Entry] -Name=Files +Name=Nemo with Column View Name[am]=ፋይሎች Name[ar]=الملفات Name[be]=Файлы @@ -47,7 +47,7 @@ Name[sr]=Датотеке Name[sr@latin]=Datoteke Name[sv]=Filer Name[th]=แฟ้ม -Name[tr]=Dosyalar +Name[tr]=Nemo with Column View Name[uk]=Файли Name[uz]=Fayllar Name[vi]=Tệp tin @@ -113,13 +113,14 @@ Comment[vi]=Truy cập và sắp xếp các tập tin Comment[zh_CN]=访问和组织文件 Comment[zh_HK]=存取與組織檔案 Comment[zh_TW]=存取並組織檔案 -Exec=nemo %U +Exec=nemo-with-column-view %U Icon=system-file-manager # Translators: these are keywords of the file manager -Keywords=folders;filesystem;explorer; +Keywords=folders;filesystem;explorer;column; Terminal=false Type=Application StartupNotify=false +StartupWMClass=nemo-with-column-view Categories=GNOME;GTK;Utility;Core; MimeType=inode/directory;application/x-gnome-saved-search; Actions=open-home;open-computer;open-trash; @@ -197,7 +198,7 @@ Name[vi]=Nhà Name[zh_CN]=主目录 Name[zh_HK]=家 Name[zh_TW]=家 -Exec=nemo %U +Exec=nemo-with-column-view %U [Desktop Action open-computer] Name=Computer @@ -272,7 +273,7 @@ Name[vi]=Máy tính Name[zh_CN]=计算机 Name[zh_HK]=電腦 Name[zh_TW]=電腦 -Exec=nemo computer:/// +Exec=nemo-with-column-view computer:/// [Desktop Action open-trash] Name=Trash @@ -353,4 +354,4 @@ Name[vi]=Thùng rác Name[zh_CN]=回收站 Name[zh_HK]=垃圾桶 Name[zh_TW]=回收筒 -Exec=nemo trash:/// +Exec=nemo-with-column-view trash:/// diff --git a/data/nemo.service.in b/data/nemo.service.in index 72860807..4abe2979 100644 --- a/data/nemo.service.in +++ b/data/nemo.service.in @@ -1,3 +1,3 @@ [D-BUS Service] Name=org.Nemo -Exec=@bindir@/nemo --no-default-window \ No newline at end of file +Exec=@bindir@/nemo-with-column-view --no-default-window \ No newline at end of file diff --git a/data/org.nemo.root.policy.in b/data/org.nemo.root.policy.in index 02091740..ac96af89 100644 --- a/data/org.nemo.root.policy.in +++ b/data/org.nemo.root.policy.in @@ -17,7 +17,7 @@ auth_admin_keep auth_admin_keep - @bindir@/nemo + @bindir@/nemo-with-column-view true diff --git a/debian/changelog b/debian/changelog index c0c06ba8..465e3147 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,53 @@ +nemo-with-column-view (7.0.0) unstable; urgency=medium + + [ Column View ] + * The package is now named nemo-with-column-view and versioned 7.x. It used + to ship as "nemo" 1.x, which sorts below the distribution's nemo + 6.6.3+zena, so apt treated every Mint update as an upgrade and replaced + this build on every refresh. The 7.x line stays above any nemo version the + distributions ship (6.6.x today, 6.8.x later). + * Dependency metadata is now correct: the package declares versioned + Provides (nemo, nemo-data, libnemo-extension1, gir1.2-nemo-3.0, + libnemo-extension-dev), Replaces and Breaks for their older versions, and + Conflicts with nemo-dbg and cinnamon-dbg. Unversioned Provides could never + satisfy the libnemo-extension1 (>= 5.0.3) / gir1.2-nemo-3.0 (>= 3.8) + requirements of nemo-share, python-nemo, nemo-emblems and nemo-fileroller, + nor the "nemo (= 6.6.3+zena)" pin of nemo-dbg, which is what produced the + broken-package reports. + * nemo-fileroller is no longer bundled. This build ships the same + libnemo-extension.so.1 ABI (version 5) as the distribution, so the distro + nemo-fileroller package loads fine and is a plain Depends. Bundling a + second copy made both packages own + /usr/lib/x86_64-linux-gnu/nemo/extensions-3.0/libnemo-fileroller.so, which + made every install delete the distro one (and apt reinstall it together + with the stock nemo, the second ping-pong loop). + * The executable is now /usr/bin/nemo-with-column-view with a compatibility + /usr/bin/nemo symlink, so the nemo.desktop launcher, the polkit policy and + user scripts keep working. + * The launcher is displayed as "Nemo with Column View". The on-disk identity + is deliberately unchanged: /usr/share/nemo, the org.nemo.* GSettings + schemas, libnemo-extension.so.1, the nemo.desktop launcher id, the + org.Nemo D-Bus name and the .nemo_action extension, because + cinnamon-settings (cs_desktop.py, Spices.py, ExtensionCore.py), the + session defaults and nemo extensions all reference them. + * Fix the path bar highlighting the wrong folder after clicking a folder in + Column View. The view only wrote slot->location, leaving the slot's + "viewed file" pointing at the previously opened folder (e.g. the folder + the window was opened in). When that stale file emitted a "changed" + signal (directory loads, item counts, inotify events triggered by the + column monitors), the slot rewrote its location back to the old folder + and the path bar re-marked it as current while the deeper breadcrumb + buttons stayed visible. The window slot now has a dedicated "set + location without reloading" entry point that also moves the viewed file + and its "changed" handler, so the stale folder can no longer revert the + location. + * Column View navigation now also updates the window title and icon and + records back/forward history: the Back/Forward buttons follow folder + clicks and the window title no longer stays on the folder the window + was opened in. + + -- Ulas Sat, 19 Sep 2026 21:56:10 +0400 + nemo (1.0.37) unstable; urgency=medium [ Column View ] diff --git a/debian/control b/debian/control index 4187d12e..7860a3b2 100644 --- a/debian/control +++ b/debian/control @@ -1,7 +1,7 @@ -Source: nemo +Source: nemo-with-column-view Section: misc Priority: optional -Maintainer: Linux Mint +Maintainer: Ulas Build-Depends: cinnamon-l10n, debhelper-compat (= 12), @@ -80,7 +80,7 @@ Description: libraries for nemo components - runtime version . This package contains a few runtime libraries needed by nemo' extensions. -Package: nemo +Package: nemo-with-column-view Architecture: any Pre-Depends: ${misc:Pre-Depends} Depends: @@ -103,6 +103,10 @@ Depends: xapp-symbolic-icons (>= 1.0.7), ${misc:Depends}, ${shlibs:Depends}, +Provides: nemo (= ${source:Version}) +Replaces: nemo +Breaks: nemo (<< ${source:Version}) +Conflicts: nemo-dbg, cinnamon-dbg Recommends: gvfs-backends, gvfs-fuse, @@ -110,14 +114,18 @@ Recommends: nemo-fileroller, gnome-disk-utility Suggests: eog, evince | pdf-viewer, totem | mp3-decoder, xdg-user-dirs -Description: file manager and graphical shell for Cinnamon +Description: file manager and graphical shell for Cinnamon - Column View build Nemo is the official file manager for the Cinnamon desktop. It allows to browse directories, preview files and launch applications associated with them. It is also responsible for handling the icons on the Cinnamon desktop. It works on local and remote filesystems. . - Several icon themes and components for viewing different kinds of files - are available in separate packages. + This package is built from the custom branch that adds the macOS + Finder-style Column View (Miller columns) to Nemo. It takes over the + distribution's nemo package and keeps the shared on-disk identity + (/usr/share/nemo, org.nemo.* GSettings schemas, libnemo-extension.so.1, + the nemo.desktop launcher id and the org.Nemo D-Bus name) so the desktop + environment and nemo extensions keep working. Package: nemo-data Architecture: all diff --git a/debian/nemo.install b/debian/nemo-with-column-view.install similarity index 100% rename from debian/nemo.install rename to debian/nemo-with-column-view.install diff --git a/debian/nemo.lintian-overrides b/debian/nemo-with-column-view.lintian-overrides similarity index 100% rename from debian/nemo.lintian-overrides rename to debian/nemo-with-column-view.lintian-overrides diff --git a/meson.build b/meson.build index c68994cd..f03545e9 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,17 @@ # Meson build file # https://github.com/simpletools-nl/mint-nemo -project('nemo', 'c', version : '1.0.37', meson_version : '>=0.64.0') +# +# The project is deliberately NOT called 'nemo'. It is a superset of the +# distributions' nemo (same on-disk identity: /usr/share/nemo, org.nemo.* +# GSettings schemas, libnemo-extension.so.1, the nemo.desktop launcher id), so +# shipping it under the name 'nemo' with a lower version number made apt treat +# the stock package as an upgrade and fight back on every update. +# +# The version must stay ABOVE any version the nemo/nemo-data/libnemo-extension1/ +# gir1.2-nemo-3.0 packages can ever have in the distributions we target +# (6.6.x today, 6.8.x later), hence the 7.x line. +project('nemo-with-column-view', 'c', version : '7.0.0', meson_version : '>=0.64.0') # 1. If the library code has changed at all since last release, then increment revision. # 2. If any interfaces have been added, then increment current and set revision to 0. diff --git a/src/meson.build b/src/meson.build index 7f0fb72f..af78dd1c 100644 --- a/src/meson.build +++ b/src/meson.build @@ -120,7 +120,7 @@ if gtk_layer_shell_enabled nemo_deps += wayland_client endif -nemo = executable('nemo', +nemo_with_column_view = executable('nemo-with-column-view', nemoCommon_sources + nemoWindow_sources, include_directories: [ rootInclude ], c_args: nemo_definitions, @@ -128,6 +128,15 @@ nemo = executable('nemo', install: true ) +# Compatibility symlink: the launcher id nemo.desktop, the polkit policy, +# the D-Bus service files and user scripts still refer to the historic +# 'nemo' binary name, and this build is a drop-in superset of it. +install_symlink( + 'nemo', + pointing_to: 'nemo-with-column-view', + install_dir: join_paths(get_option('prefix'), get_option('bindir')) +) + nemoDesktop = executable('nemo-desktop', nemoCommon_sources + nemoDesktop_sources, include_directories: [ rootInclude], diff --git a/src/nemo-desktop-application.c b/src/nemo-desktop-application.c index 370ca39f..b160cbb6 100644 --- a/src/nemo-desktop-application.c +++ b/src/nemo-desktop-application.c @@ -388,6 +388,7 @@ nemo_desktop_application_open (GApplication *app, * URI" semantics as nemo. */ static const gchar * const select_capable_handlers[] = { "nemo", + "nemo-with-column-view", "nautilus", "caja", "dolphin", diff --git a/src/nemo-extension-config-widget.c b/src/nemo-extension-config-widget.c index 4f3c64c4..a2c9764a 100644 --- a/src/nemo-extension-config-widget.c +++ b/src/nemo-extension-config-widget.c @@ -357,7 +357,7 @@ on_restart_clicked (GtkWidget *button, NemoExtensionConfigWidget *widget) * not be possible or exceedingly tedious, but we can cover the default view in * each window. */ - g_spawn_command_line_async ("sh -c \"nemo --quit && sleep 1 && nemo\"", NULL); + g_spawn_command_line_async ("sh -c \"nemo --quit && sleep 1 && nemo-with-column-view\"", NULL); } static void diff --git a/src/nemo-main.c b/src/nemo-main.c index ac8e1c7c..c1de8af3 100644 --- a/src/nemo-main.c +++ b/src/nemo-main.c @@ -71,7 +71,7 @@ main (int argc, char *argv[]) bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); - g_set_prgname ("nemo"); + g_set_prgname ("nemo-with-column-view"); #ifdef HAVE_EXEMPI xmp_init(); diff --git a/src/nemo-view.c b/src/nemo-view.c index b4990059..6d37e486 100644 --- a/src/nemo-view.c +++ b/src/nemo-view.c @@ -7250,7 +7250,7 @@ open_as_root (NemoView *view, const gchar *path) gchar *argv[4]; argv[0] = (gchar *)"pkexec"; - argv[1] = (gchar *)"nemo"; + argv[1] = (gchar *)"nemo-with-column-view"; argv[2] = g_strdup (path); argv[3] = NULL; GPid pid; From 316f8cdb8cf24c3867c691810f53b5e4b37092fe Mon Sep 17 00:00:00 2001 From: Ulas Date: Sat, 19 Sep 2026 22:50:05 +0400 Subject: [PATCH 2/2] [ Column View ] document that the Software Center cannot install the deb mintinstall stops with "Error: Conflicts with the installed package nemo-dbg / cinnamon-dbg" because the graphical installer cannot resolve conflicts. The conflict itself is intentional (the debug packages pin nemo to the exact distribution version, which a provider can never satisfy); the terminal command resolves it in one transaction. Warning added to the release notes template and the README. --- .github/workflows/package.yml | 9 ++++++++- README.md | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 1902b8d9..1df93a3c 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -284,13 +284,20 @@ jobs: - Right-click context menus, drag & drop between columns, and "Open in Terminal" from deep directories are supported in Column View. - ### Installation + ### Installation (terminal, not the Software Center) ```bash sudo apt install ./nemo-with-column-view_${{ steps.version.outputs.version }}_amd64.deb ``` (One transaction: `apt` removes the stock `nemo`, `nemo-data`, `libnemo-extension1`, `gir1.2-nemo-3.0` and the `*-dbg` debug packages and installs this build. If you prefer `sudo dpkg -i …`, follow it with `sudo apt-get install -f`.) + + > **Do not install this .deb from the Software Center / mintinstall.** The graphical + > installer cannot resolve conflicts, so it stops with + > `Error: Conflicts with the installed package 'nemo-dbg' / 'cinnamon-dbg'`. + > That conflict is intentional - the debug packages pin `nemo` to the exact distribution + > version, which a package that provides `nemo` can never satisfy, so they must be removed + > (which is exactly what the terminal command above does in the same transaction). This replaces the distribution `nemo` package (it Provides/Replaces/Breaks it), which is required because the two ship the same configuration and extension files. After installing, `apt upgrade` will no longer try to "upgrade" it back to the stock nemo. diff --git a/README.md b/README.md index 0bfa8fa0..2ca61171 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,13 @@ sudo apt install ./nemo-with-column-view_7.0.0_amd64.deb one. If you use plain `sudo dpkg -i …` instead, follow it with `sudo apt-get install -f` — the transition state keeps the distro packages around until then.) +**Do not install the .deb from the Software Center / mintinstall.** The graphical installer +cannot resolve conflicts, so it stops with +`Error: Conflicts with the installed package 'nemo-dbg' / 'cinnamon-dbg'`. That conflict is +intentional: the debug packages pin `nemo` to an exact distribution version, which a package +that *provides* `nemo` can never satisfy, so they must be removed — which the terminal command +above does in the same transaction. + `nemo-fileroller` (Compress… / Extract Here) is installed as a dependency, not bundled. The launcher is shown as **Nemo with Column View**. The on-disk identity is deliberately