[draft] Provider-based pin system - #277
Draft
derVedro wants to merge 3 commits into
Draft
Conversation
Reviewer's GuideIntroduces a provider-based pin system for Rovr that loads sidebar places and bookmark pins from configurable providers (Rovr JSON, default built-ins, GTK, KDE, or empty), and wires this into the config schema and documentation. Sequence diagram for loading pins from configurable providerssequenceDiagram
actor User
participant ConfigFile as RovrConfigToml
participant Config as config_object
participant App as RovrApp
participant Pins as pins_module
participant PlacesProv as places_providers
participant BookProv as bookmarks_providers
User->>ConfigFile: Edit interface.pins_places
User->>ConfigFile: Edit interface.pins_bookmarks
ConfigFile-->>Config: Parsed interface section
User->>App: Open sidebar with pins
App->>Pins: load_pins()
Pins->>Config: Read interface.pins_places
loop for each provider in pins_places
Pins->>PlacesProv: lookup provider in _places_providers
PlacesProv-->>Pins: provider_class
Pins->>provider_class: load_pins()
provider_class-->>Pins: list of PinItem places
end
Pins->>Config: Read interface.pins_bookmarks
loop for each provider in pins_bookmarks
Pins->>BookProv: lookup provider in _bookmarks_providers
BookProv-->>Pins: provider_class
Pins->>provider_class: load_pins()
provider_class-->>Pins: list of PinItem bookmarks
end
Pins-->>App: PinsDict {default, pins}
App-->>User: Render sidebar pins from providers
Class diagram for provider-based pin systemclassDiagram
class PinItem {
+string name
+string path
}
class PinsDict {
+list~PinItem~ default
+list~PinItem~ pins
}
class PinProvider {
<<protocol>>
+load_pins() list~PinItem~
+add_pin(pin_name string, pin_path string or bytes) void
+remove_pin(pin_path string or bytes) void
+toggle_pin(pin_name string, pin_path string) void
}
class EmptyPinProvider {
+load_pins() list~PinItem~
}
class DefaultPlaces {
+load_pins() list~PinItem~
}
class RovrPinedPlaces {
+load_pins() list~PinItem~
}
class RovrPinedBookmarks {
+load_pins() list~PinItem~
}
class GTKBookmarks {
+string bookmarks_path
+load_pins() list~PinItem~
}
class KDEBookmarks {
+string bookmarks_path
+load_pins() list~PinItem~
}
class pins_module_helpers {
+_places_providers dict
+_bookmarks_providers dict
+_register(name, bucket) function
+register_places(name) function
+register_bookmarks(name) function
+_expand_vars(path string) string
+_sanitize(pins list~PinItem~) list~PinItem~
+load_pins() PinsDict
}
PinProvider <|.. EmptyPinProvider
PinProvider <|.. DefaultPlaces
PinProvider <|.. RovrPinedPlaces
PinProvider <|.. RovrPinedBookmarks
PinProvider <|.. GTKBookmarks
PinProvider <|.. KDEBookmarks
pins_module_helpers "1" o-- "many" PinProvider
pins_module_helpers ..> RovrVars
pins_module_helpers ..> config
GTKBookmarks ..> Path
KDEBookmarks ..> Path
KDEBookmarks ..> ET
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
NSPC911
force-pushed
the
master
branch
2 times, most recently
from
May 9, 2026 06:28
5ed85d2 to
477fc95
Compare
NSPC911
force-pushed
the
master
branch
2 times, most recently
from
June 1, 2026 14:08
9d55cd4 to
1dc8655
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rovr could benefit of a pin system basing of various bookmarks and pins providers. The user could define a specific provider or a list of them via a configuration file:
Currently, reading support for the two major Linux bookmark providers has been implemented: GTK and KDE.
It's a quite simple but extensible system. A new source could be easily added by implementing PinProvider protocol and registering it through a decorator.
by submitting this pull request, i agree that
poe checkto check for any style issues and fixed thempoe testif applicable) to make sure my changes do not break anythingpoe gen-schemaandpoe gen-keysif applicable)Summary by Sourcery
Introduce a provider-based pin system configurable via interface settings for places and bookmarks, including support for Rovr, GTK, and KDE sources.
New Features:
Documentation: