title: CLIPIK
CLIPIK - сервис для реализации общего буфера обмена по локальной сети
Быстрый старт
Тут должен быть установлен PATH=${HOME}/.local/bin:${PATH}
uv tool install clipik
clipik server & clipik client
или
git clone https://gitflic.ru/project/kurilka/clipik
cd clipik
uv pip install -e .
clipik server & clipik client
Использование
При передаче опций, они перезаписывают данные с конфига и переменных окружения.
server- Запускает сервер с websocket-м на указанном порту (8765) и регестрирует сервис в mdnsclient- Должен запускаться после иницилизации граф. оболочки, мониторит буфер обмена и отправляет его наserverlist,first,last,paste- Читают бд и записывают данные в буфер обмена (по запросуpaste)
$ clipik -h
usage: clipik [-h] [--version] [--config PATH] [--log-level LEVEL] [--log-dir PATH]
[--size-limit BYTES] [--handshake-timeout SECONDS] [--database PATH]
COMMAND ...
Synchronize clipboard by network
options:
-h, --help show this help message and exit
--version show program's version number and exit
--config PATH Force choice config file
--log-level LEVEL Logging level, default [INFO]
--log-dir PATH Force choice log directory
--size-limit BYTES Max size WS-messages and stdout from wayland/x11 clipboard
--handshake-timeout SECONDS
Timeout for wait to websocket handshake
--database PATH Force choice database file
command:
COMMAND
server Run synchronization server
client Run synchronization client
list Get list clipboard history
first Get first clipboard element
last Get last clipboard element
paste Paste record in clipboard
Конфигурация
Сервер
По-умолчанию конфигурация находиться по пути
~/.config/clipik/server.json, если его не существует, при запуске
clipik он создается автоматически, но не все параметры там будут
прописаны.
Конфиг будет иметь вид:
{
"interfaces": [],
"port": 8765,
"size_limit": 67108864,
"log_dir": "~/.local/clipik",
"log_level": "INFO",
"handshake_timeout": 7
}
Со всеми параметрами такой:
{
"interfaces": [],
"port": 8765,
"size_limit": 67108864,
"log_dir": "~/.local/clipik",
"log_level": "INFO",
"handshake_timeout": 7,
"database": "~/.local/clipik/clipik.db",
"allowed_ips": [
"192.164.0.1/24",
"100.0.0.1",
"100.0.0.2"
]
}
Клиент
По тому-же пути, только client.json - ~/.config/clipik/client.json,
создается сам если не существует.
Имеет вид:
{
"interfaces": [],
"size_limit": 67108864,
"log_dir": "~/.local/clipik",
"log_level": "INFO",
"handshake_timeout": 7,
}
Со всеми параметрами такой;
{
"interfaces": [],
"size_limit": 67108864,
"log_dir": "~/.local/clipik",
"log_level": "INFO",
"handshake_timeout": 7,
"database": "~/.local/clipik/clipik.db",
"allowed_ips": [
"192.164.0.1/24",
"100.0.0.1",
"100.0.0.2"
]
}
Переменные окружения
Имеются только переменные окружения, за счет которых можно менять свойства:
CLIPIK_LOG_LEVEL=INFO- Уровель логирования: INFO, DEBUG, ERROR, CRITICAL …WAYLAND_DISPLAY- Если оно установлено, будет использовать wayland clipboardCLIPIK_PORT=8765- На каком порту поднять websocket (передача буфера)CLIPIK_HANDSHAKE_TIMEOUT=7- Сколько ждать HANDSHAKE при подключенииCLIPIK_SIZE_LIMIT=67108864- Макс. размер передаваемых данныхCLIPIK_DATABASE=~/.local/clipik/clipik.db- Путь до sqlite3 файла c БД
База данных
Сервер работает с sqlite3 БД, вся история буфера по сети именно там, с
помощью clipik list можно посмотреть записанную историю, а
clipik paste <id> позволяет её вставить в буфер обмена.
Обязательные утилиты (зависимости)
Linux
Общие (всегда работает с xorg)
xclipclipnotify
Wayland (опционально, если есть wayland)
wl-pastewl-copy
MacOs (пока не поддерживается)
Windows (пока не поддерживается)
Android (пока не поддерживается)
TODO [4/10]
- Возможность регистрировать сервисы для подключения к удаленным сетями
- Регистрацию при подключении (ввод pin-кода/разрешенные хосты в конфиге)
- Поддержка всех типов данных, в том числе при копировании из файловых менеджеров
- Поддержка MacOS
- Поддержка Windows
- Поддержка Android
- Фоновая загрузка больших файлов с ожиданием вставки (до конца загрузки)
- Поддержка передачи данных не только через переменные окружения, но и через опции и конфиги
- Одновременная работа на wayland и x11 без переключения
- Переделать архитектуру, сохранять контент в промежуточную историю вместо загрузки сразу в буфер обмена
Release files for clipik 0.7.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| clipik-0.7.5.tar.gz | 17.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| clipik-0.7.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.1 kB
Release files / clipik-0.7.5.tar.gz
| Download URL | clipik-0.7.5.tar.gz |
|---|---|
| Size | 17.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b90ca9964c58a4394b8db156a2b3e088401229db4634de19d0421162ac84cfda
|
|
BLAKE2b-256 checksum How to use checksums |
113dddd5868716dc161b15a87deb95750f30752a6947f6fada0b7d75ed9e50e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / clipik-0.7.5-py3-none-any.whl
| Download URL | clipik-0.7.5-py3-none-any.whl |
|---|---|
| Size | 23.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d2ecd2fe105161a00e5daa632634efda815a4b6132ff2446e59448d3f0e1afcb
|
|
BLAKE2b-256 checksum How to use checksums |
8c44a8777279eda830298b521583b0898c6c9e1ec967efa98d2caf22373f2fc7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|