https://github.com/jintwo/clipr
simple clipboard manager [https://sr.ht/~jintwo/clipr/]
https://github.com/jintwo/clipr
clipboard clipboard-manager emacs macos rust
Last synced: 2 months ago
JSON representation
simple clipboard manager [https://sr.ht/~jintwo/clipr/]
- Host: GitHub
- URL: https://github.com/jintwo/clipr
- Owner: jintwo
- License: mit
- Created: 2022-11-11T02:40:39.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-07-20T14:59:12.000Z (12 months ago)
- Last Synced: 2025-08-25T21:35:14.934Z (11 months ago)
- Topics: clipboard, clipboard-manager, emacs, macos, rust
- Language: Rust
- Homepage:
- Size: 296 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Clipr - command line clipboard (pasteboard) manager
===================================================
Simple MacOS clipboard (pasteboard) manager with cli and emacs interfaces. Under development.
## Running
### Server
```bash
cargo run --bin clipr-daemon -- -c PATH/TO/config.toml
```
### CLI
```bash
cargo run --bin clipr-cli -- -c PATH/TO/config.toml
```
#### Alias
```bash
CLIPR_CLI="PATH/TO/target/debug/clipr-cli"
CLIPR_CONFIG="PATH/TO/config.toml"
alias c="$CLIPR_CLI -c $CLIPR_CONFIG"
```
### Emacs module
```bash
cargo build --lib clipr-emacs
cp target/debug/libclipr.dylib /clipr-mode/clipr.so
cp clipr-emacs/src/clipr-mode.el /clipr-mode/
```
```elisp
;; Usage example
(use-package clipr-mode
:load-path "PATH/TO/clipr-mode"
:bind (:map global-map (("C-c c" . clipr-show)))
:custom
(clipr-config-path "PATH/TO/config.toml"))
```
#### Keys
##### List mode
g - refresh
RET - select and close
d - delete entry
q - close
+ - add tag
- - delete tag
f - set filter by tag
c - clear filter
j - jump to tag
S - save state
L - load state
E - edit entry
##### Edit mode
C-c C-c - save entry (will be added as new one ;) )
C-c C-k - quit edit mode
## Tasks
### General [1/7]
* [/] Pinned entries (use letters!).
Currently there is no big difference from Tags.
Put it in front of list while listing ;)
~~Allow set-by-pin -> because pins should be unique.~~
~~Convert pins to upper case.~~
* [ ] Rework select
Use different option for specifying selection (and combinations)
* [ ] Masked entries
* [ ] Deadline timeout (for sensitive data)
* [/] GC? (remove non tagged/pinned/persistent/old entries)
Ring (limited size)?
* [/] Limited size. Only after proper implementation of pinned entries.
* [ ] LaunchD plist
* [X] Save state on quit
* [ ] GUI/global menu (tag-based folders?)
### Refactoring [1/5]
* [X] Switch to LINKED-LIST + SET (or w/o). Looks like it will be a lot easier to reorder entries.
* [ ] Split/simplify command handling
* [ ] Maybe actor-like stuff isn't necessary there?
* [ ] More rusty (try to specify lifetimes + remove all .clone)
* [ ] Reduce dependencies
### Emacs [1/3]
* [X] Use removal by range / remove selection in clipr-mode
* [ ] Emacs UI display current filter
* [ ] Multi tag selection
* [ ] Edit inplace
### Bugs [1/2]
* [X] If there is no changes in PB we still allocating NSString
* [ ] After cleanup memory usage doesn't goes down