From 5568025915cedbc14c151ab3cca10bc9619cfd6b Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 19 Jun 2024 12:35:40 +0200 Subject: [PATCH 1/8] implement sidebar integration for GNOME Nautilus --- pom.xml | 2 +- src/main/java/module-info.java | 3 + .../linux/sidebar/NautilusSidebarService.java | 75 +++++++++++++++++++ ...omator.integrations.sidebar.SidebarService | 1 + .../NautilusSidebarServiceIT.java | 23 ++++++ 5 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java create mode 100644 src/main/resources/META-INF/services/org.cryptomator.integrations.sidebar.SidebarService create mode 100644 src/test/java/org/cryptomator/linux/filemanagersidebar/NautilusSidebarServiceIT.java diff --git a/pom.xml b/pom.xml index f7004f5..735ef3e 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ - 1.3.1 + 1.4.0-sidebar 2.0.1-alpha 1.4.0 2.0.13 diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 9ec0149..9b2b092 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,6 +1,8 @@ +import org.cryptomator.integrations.sidebar.SidebarService; import org.cryptomator.integrations.keychain.KeychainAccessProvider; import org.cryptomator.integrations.revealpath.RevealPathService; import org.cryptomator.integrations.tray.TrayMenuController; +import org.cryptomator.linux.sidebar.NautilusSidebarService; import org.cryptomator.linux.keychain.KDEWalletKeychainAccess; import org.cryptomator.linux.keychain.SecretServiceKeychainAccess; import org.cryptomator.linux.revealpath.DBusSendRevealPathService; @@ -17,6 +19,7 @@ provides KeychainAccessProvider with SecretServiceKeychainAccess, KDEWalletKeychainAccess; provides RevealPathService with DBusSendRevealPathService; provides TrayMenuController with AppindicatorTrayMenuController; + provides SidebarService with NautilusSidebarService; opens org.cryptomator.linux.tray to org.cryptomator.integrations.api; } \ No newline at end of file diff --git a/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java b/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java new file mode 100644 index 0000000..dc60877 --- /dev/null +++ b/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java @@ -0,0 +1,75 @@ +package org.cryptomator.linux.sidebar; + +import org.cryptomator.integrations.sidebar.SidebarService; +import org.cryptomator.integrations.sidebar.SidebarServiceException; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.nio.file.StandardOpenOption; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantReadWriteLock; + +public class NautilusSidebarService implements SidebarService { + + private static final int MAX_FILE_SIZE = 4096; + private static final Path BOOKMARKS_FILE = Path.of(System.getProperty("user.home"), ".config/gtk-3.0/bookmarks"); + private static final Path TMP_FILE = BOOKMARKS_FILE.resolveSibling("bookmarks.cryptomator.tmp"); + private static final Lock BOOKMARKS_LOCK = new ReentrantReadWriteLock().writeLock(); + + @Override + public SidebarEntry add(Path target, String displayName) throws SidebarServiceException { + String entryLine = "file://" + target.toAbsolutePath() + " " + displayName; + try { + BOOKMARKS_LOCK.lock(); + if (Files.size(BOOKMARKS_FILE) > MAX_FILE_SIZE) { + throw new IOException("File %s exceeds size of %d bytes".formatted(BOOKMARKS_FILE, MAX_FILE_SIZE)); + } + //by reading all lines, we ensure that each line is terminated with EOL + var entries = Files.readAllLines(BOOKMARKS_FILE, StandardCharsets.UTF_8); + entries.add(entryLine); + Files.write(TMP_FILE, entries, StandardCharsets.UTF_8, StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING); + Files.move(TMP_FILE, BOOKMARKS_FILE, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE); + return new NautilusSidebarEntry(entryLine); + } catch (IOException e) { + throw new SidebarServiceException("Adding entry to Nautilus bookmarks file failed.", e); + } finally { + BOOKMARKS_LOCK.unlock(); + } + } + + static class NautilusSidebarEntry implements SidebarEntry { + + private final String line; + private volatile boolean isRemoved = false; + + NautilusSidebarEntry(String line) { + this.line = line; + } + + @Override + public void remove() throws SidebarServiceException { + try { + BOOKMARKS_LOCK.lock(); + if (isRemoved) { + return; + } + if (Files.size(BOOKMARKS_FILE) > MAX_FILE_SIZE) { + throw new IOException("File %s exceeds size of %d bytes".formatted(BOOKMARKS_FILE, MAX_FILE_SIZE)); + } + var entries = Files.readAllLines(BOOKMARKS_FILE); + if (entries.remove(line)) { + Files.write(TMP_FILE, entries, StandardCharsets.UTF_8, StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING); + Files.move(TMP_FILE, BOOKMARKS_FILE, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE); + } + isRemoved = true; + } catch (IOException e) { + throw new SidebarServiceException("Removing entry from Nautilus bookmarks faile failed", e); + } finally { + BOOKMARKS_LOCK.unlock(); + } + } + } +} diff --git a/src/main/resources/META-INF/services/org.cryptomator.integrations.sidebar.SidebarService b/src/main/resources/META-INF/services/org.cryptomator.integrations.sidebar.SidebarService new file mode 100644 index 0000000..b4fe19a --- /dev/null +++ b/src/main/resources/META-INF/services/org.cryptomator.integrations.sidebar.SidebarService @@ -0,0 +1 @@ +org.cryptomator.linux.sidebar.NautilusSidebarService \ No newline at end of file diff --git a/src/test/java/org/cryptomator/linux/filemanagersidebar/NautilusSidebarServiceIT.java b/src/test/java/org/cryptomator/linux/filemanagersidebar/NautilusSidebarServiceIT.java new file mode 100644 index 0000000..cd73b68 --- /dev/null +++ b/src/test/java/org/cryptomator/linux/filemanagersidebar/NautilusSidebarServiceIT.java @@ -0,0 +1,23 @@ +package org.cryptomator.linux.filemanagersidebar; + +import org.cryptomator.integrations.sidebar.SidebarServiceException; +import org.cryptomator.linux.sidebar.NautilusSidebarService; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.nio.file.Path; +import java.time.Duration; + +public class NautilusSidebarServiceIT { + + @Test + @DisplayName("Adds for 20s an entryto the Nautilus sidebar") + @Disabled + public void testSidebarIntegration(@TempDir Path tmpdir) throws SidebarServiceException, InterruptedException { + var entry = new NautilusSidebarService().add(tmpdir, "integrations-linux"); + Thread.sleep(Duration.ofSeconds(20)); + entry.remove(); + } +} From d0bc09f246625d0dfe0ccf86c0de9deb8c67e190 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 20 Jun 2024 10:05:48 +0200 Subject: [PATCH 2/8] add isSupported method --- .../linux/sidebar/NautilusSidebarService.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java b/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java index dc60877..6245de1 100644 --- a/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java +++ b/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java @@ -1,5 +1,6 @@ package org.cryptomator.linux.sidebar; +import org.cryptomator.integrations.common.CheckAvailability; import org.cryptomator.integrations.sidebar.SidebarService; import org.cryptomator.integrations.sidebar.SidebarServiceException; @@ -9,9 +10,11 @@ import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.nio.file.StandardOpenOption; +import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantReadWriteLock; +@CheckAvailability public class NautilusSidebarService implements SidebarService { private static final int MAX_FILE_SIZE = 4096; @@ -72,4 +75,17 @@ public void remove() throws SidebarServiceException { } } } + + @CheckAvailability + public static boolean isSupported() { + try { + var nautilusExistsProc = new ProcessBuilder().command("test", "`command -v nautilus`").start(); + if (nautilusExistsProc.waitFor(5000, TimeUnit.MILLISECONDS)) { + return nautilusExistsProc.exitValue() == 0; + } + } catch (IOException | InterruptedException e) { + //NO-OP + } + return false; + } } From 5d124a1164eaca172d403b310ae79031f3941025 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 20 Jun 2024 10:06:46 +0200 Subject: [PATCH 3/8] fix typo --- .../org/cryptomator/linux/sidebar/NautilusSidebarService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java b/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java index 6245de1..a023bee 100644 --- a/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java +++ b/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java @@ -69,7 +69,7 @@ public void remove() throws SidebarServiceException { } isRemoved = true; } catch (IOException e) { - throw new SidebarServiceException("Removing entry from Nautilus bookmarks faile failed", e); + throw new SidebarServiceException("Removing entry from Nautilus bookmarks file failed", e); } finally { BOOKMARKS_LOCK.unlock(); } From f43238aa6b055cb22ef3093a74cae47e55fc9a23 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 20 Jun 2024 10:07:01 +0200 Subject: [PATCH 4/8] add priority --- .../org/cryptomator/linux/sidebar/NautilusSidebarService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java b/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java index a023bee..74e9d9d 100644 --- a/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java +++ b/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java @@ -1,6 +1,7 @@ package org.cryptomator.linux.sidebar; import org.cryptomator.integrations.common.CheckAvailability; +import org.cryptomator.integrations.common.Priority; import org.cryptomator.integrations.sidebar.SidebarService; import org.cryptomator.integrations.sidebar.SidebarServiceException; @@ -14,6 +15,7 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantReadWriteLock; +@Priority(100) @CheckAvailability public class NautilusSidebarService implements SidebarService { From 4e67c36e579f7cd53ff47f370ef7fb341f5dbea8 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 20 Jun 2024 17:56:02 +0200 Subject: [PATCH 5/8] use new name QuickAccess --- pom.xml | 4 ++-- src/main/java/module-info.java | 6 ++--- .../NautilusBookmarks.java} | 22 +++++++++---------- ...ntegrations.quickaccess.QuickAccessService | 1 + ...omator.integrations.sidebar.SidebarService | 1 - .../NautilusBookmarksIT.java} | 11 +++++----- 6 files changed, 22 insertions(+), 23 deletions(-) rename src/main/java/org/cryptomator/linux/{sidebar/NautilusSidebarService.java => quickaccess/NautilusBookmarks.java} (78%) create mode 100644 src/main/resources/META-INF/services/org.cryptomator.integrations.quickaccess.QuickAccessService delete mode 100644 src/main/resources/META-INF/services/org.cryptomator.integrations.sidebar.SidebarService rename src/test/java/org/cryptomator/linux/{filemanagersidebar/NautilusSidebarServiceIT.java => quickaccess/NautilusBookmarksIT.java} (54%) diff --git a/pom.xml b/pom.xml index 735ef3e..86d0576 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.cryptomator integrations-linux - 1.5.0-SNAPSHOT + 1.5.0-quickaccess integrations-linux Provides optional Linux services used by Cryptomator @@ -40,7 +40,7 @@ - 1.4.0-sidebar + 1.4.0-quickaccess 2.0.1-alpha 1.4.0 2.0.13 diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 9b2b092..727f498 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,10 +1,10 @@ -import org.cryptomator.integrations.sidebar.SidebarService; import org.cryptomator.integrations.keychain.KeychainAccessProvider; +import org.cryptomator.integrations.quickaccess.QuickAccessService; import org.cryptomator.integrations.revealpath.RevealPathService; import org.cryptomator.integrations.tray.TrayMenuController; -import org.cryptomator.linux.sidebar.NautilusSidebarService; import org.cryptomator.linux.keychain.KDEWalletKeychainAccess; import org.cryptomator.linux.keychain.SecretServiceKeychainAccess; +import org.cryptomator.linux.quickaccess.NautilusBookmarks; import org.cryptomator.linux.revealpath.DBusSendRevealPathService; import org.cryptomator.linux.tray.AppindicatorTrayMenuController; @@ -19,7 +19,7 @@ provides KeychainAccessProvider with SecretServiceKeychainAccess, KDEWalletKeychainAccess; provides RevealPathService with DBusSendRevealPathService; provides TrayMenuController with AppindicatorTrayMenuController; - provides SidebarService with NautilusSidebarService; + provides QuickAccessService with NautilusBookmarks; opens org.cryptomator.linux.tray to org.cryptomator.integrations.api; } \ No newline at end of file diff --git a/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java b/src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java similarity index 78% rename from src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java rename to src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java index 74e9d9d..f82072c 100644 --- a/src/main/java/org/cryptomator/linux/sidebar/NautilusSidebarService.java +++ b/src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java @@ -1,9 +1,9 @@ -package org.cryptomator.linux.sidebar; +package org.cryptomator.linux.quickaccess; import org.cryptomator.integrations.common.CheckAvailability; import org.cryptomator.integrations.common.Priority; -import org.cryptomator.integrations.sidebar.SidebarService; -import org.cryptomator.integrations.sidebar.SidebarServiceException; +import org.cryptomator.integrations.quickaccess.QuickAccessService; +import org.cryptomator.integrations.quickaccess.QuickAccessServiceException; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -17,7 +17,7 @@ @Priority(100) @CheckAvailability -public class NautilusSidebarService implements SidebarService { +public class NautilusBookmarks implements QuickAccessService { private static final int MAX_FILE_SIZE = 4096; private static final Path BOOKMARKS_FILE = Path.of(System.getProperty("user.home"), ".config/gtk-3.0/bookmarks"); @@ -25,7 +25,7 @@ public class NautilusSidebarService implements SidebarService { private static final Lock BOOKMARKS_LOCK = new ReentrantReadWriteLock().writeLock(); @Override - public SidebarEntry add(Path target, String displayName) throws SidebarServiceException { + public QuickAccessService.QuickAccessEntry add(Path target, String displayName) throws QuickAccessServiceException { String entryLine = "file://" + target.toAbsolutePath() + " " + displayName; try { BOOKMARKS_LOCK.lock(); @@ -37,25 +37,25 @@ public SidebarEntry add(Path target, String displayName) throws SidebarServiceEx entries.add(entryLine); Files.write(TMP_FILE, entries, StandardCharsets.UTF_8, StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING); Files.move(TMP_FILE, BOOKMARKS_FILE, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE); - return new NautilusSidebarEntry(entryLine); + return new NautilusQuickAccessEntry(entryLine); } catch (IOException e) { - throw new SidebarServiceException("Adding entry to Nautilus bookmarks file failed.", e); + throw new QuickAccessServiceException("Adding entry to Nautilus bookmarks file failed.", e); } finally { BOOKMARKS_LOCK.unlock(); } } - static class NautilusSidebarEntry implements SidebarEntry { + static class NautilusQuickAccessEntry implements QuickAccessEntry { private final String line; private volatile boolean isRemoved = false; - NautilusSidebarEntry(String line) { + NautilusQuickAccessEntry(String line) { this.line = line; } @Override - public void remove() throws SidebarServiceException { + public void remove() throws QuickAccessServiceException { try { BOOKMARKS_LOCK.lock(); if (isRemoved) { @@ -71,7 +71,7 @@ public void remove() throws SidebarServiceException { } isRemoved = true; } catch (IOException e) { - throw new SidebarServiceException("Removing entry from Nautilus bookmarks file failed", e); + throw new QuickAccessServiceException("Removing entry from Nautilus bookmarks file failed", e); } finally { BOOKMARKS_LOCK.unlock(); } diff --git a/src/main/resources/META-INF/services/org.cryptomator.integrations.quickaccess.QuickAccessService b/src/main/resources/META-INF/services/org.cryptomator.integrations.quickaccess.QuickAccessService new file mode 100644 index 0000000..d827498 --- /dev/null +++ b/src/main/resources/META-INF/services/org.cryptomator.integrations.quickaccess.QuickAccessService @@ -0,0 +1 @@ +org.cryptomator.linux.quickaccess.NautilusSidebarService \ No newline at end of file diff --git a/src/main/resources/META-INF/services/org.cryptomator.integrations.sidebar.SidebarService b/src/main/resources/META-INF/services/org.cryptomator.integrations.sidebar.SidebarService deleted file mode 100644 index b4fe19a..0000000 --- a/src/main/resources/META-INF/services/org.cryptomator.integrations.sidebar.SidebarService +++ /dev/null @@ -1 +0,0 @@ -org.cryptomator.linux.sidebar.NautilusSidebarService \ No newline at end of file diff --git a/src/test/java/org/cryptomator/linux/filemanagersidebar/NautilusSidebarServiceIT.java b/src/test/java/org/cryptomator/linux/quickaccess/NautilusBookmarksIT.java similarity index 54% rename from src/test/java/org/cryptomator/linux/filemanagersidebar/NautilusSidebarServiceIT.java rename to src/test/java/org/cryptomator/linux/quickaccess/NautilusBookmarksIT.java index cd73b68..10e4654 100644 --- a/src/test/java/org/cryptomator/linux/filemanagersidebar/NautilusSidebarServiceIT.java +++ b/src/test/java/org/cryptomator/linux/quickaccess/NautilusBookmarksIT.java @@ -1,7 +1,6 @@ -package org.cryptomator.linux.filemanagersidebar; +package org.cryptomator.linux.quickaccess; -import org.cryptomator.integrations.sidebar.SidebarServiceException; -import org.cryptomator.linux.sidebar.NautilusSidebarService; +import org.cryptomator.integrations.quickaccess.QuickAccessServiceException; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -10,13 +9,13 @@ import java.nio.file.Path; import java.time.Duration; -public class NautilusSidebarServiceIT { +public class NautilusBookmarksIT { @Test @DisplayName("Adds for 20s an entryto the Nautilus sidebar") @Disabled - public void testSidebarIntegration(@TempDir Path tmpdir) throws SidebarServiceException, InterruptedException { - var entry = new NautilusSidebarService().add(tmpdir, "integrations-linux"); + public void testSidebarIntegration(@TempDir Path tmpdir) throws QuickAccessServiceException, InterruptedException { + var entry = new NautilusBookmarks().add(tmpdir, "integrations-linux"); Thread.sleep(Duration.ofSeconds(20)); entry.remove(); } From 87274a6142499e2a25b7765f4eeaf7eade366d07 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 27 Jun 2024 13:28:47 +0200 Subject: [PATCH 6/8] prepare PR * reset version * use beta1 of integrations-api --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 86d0576..07a1ed1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.cryptomator integrations-linux - 1.5.0-quickaccess + 1.5.0-SNAPSHOT integrations-linux Provides optional Linux services used by Cryptomator @@ -40,7 +40,7 @@ - 1.4.0-quickaccess + 1.4.0-beta1 2.0.1-alpha 1.4.0 2.0.13 From dbf2826957d1be163f6c99801519d06259573580 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 12 Jul 2024 16:33:46 +0200 Subject: [PATCH 7/8] add operating system annotation --- .../org/cryptomator/linux/quickaccess/NautilusBookmarks.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java b/src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java index f82072c..2dc951e 100644 --- a/src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java +++ b/src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java @@ -1,6 +1,7 @@ package org.cryptomator.linux.quickaccess; import org.cryptomator.integrations.common.CheckAvailability; +import org.cryptomator.integrations.common.OperatingSystem; import org.cryptomator.integrations.common.Priority; import org.cryptomator.integrations.quickaccess.QuickAccessService; import org.cryptomator.integrations.quickaccess.QuickAccessServiceException; @@ -17,6 +18,7 @@ @Priority(100) @CheckAvailability +@OperatingSystem(OperatingSystem.Value.LINUX) public class NautilusBookmarks implements QuickAccessService { private static final int MAX_FILE_SIZE = 4096; From 7040c0eeaa364e82f9d2d3f3065de8350ee003e5 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 12 Jul 2024 16:33:57 +0200 Subject: [PATCH 8/8] add display name --- pom.xml | 2 +- .../org/cryptomator/linux/quickaccess/NautilusBookmarks.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 07a1ed1..fba3c00 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ - 1.4.0-beta1 + 1.4.0-beta2 2.0.1-alpha 1.4.0 2.0.13 diff --git a/src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java b/src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java index 2dc951e..8013e34 100644 --- a/src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java +++ b/src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java @@ -1,6 +1,7 @@ package org.cryptomator.linux.quickaccess; import org.cryptomator.integrations.common.CheckAvailability; +import org.cryptomator.integrations.common.DisplayName; import org.cryptomator.integrations.common.OperatingSystem; import org.cryptomator.integrations.common.Priority; import org.cryptomator.integrations.quickaccess.QuickAccessService; @@ -19,6 +20,7 @@ @Priority(100) @CheckAvailability @OperatingSystem(OperatingSystem.Value.LINUX) +@DisplayName("GNOME Nautilus Bookmarks") public class NautilusBookmarks implements QuickAccessService { private static final int MAX_FILE_SIZE = 4096;