TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
클립보드 관리 시스템
Clipboard management system
생산성C · JavaScriptGitHub @Keruspe직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
GPaste is a clipboard management system for GNOME: a daemon that remembers what
you copy, plus a GTK 4 interface, a GNOME Shell extension and a CLI to get it
back.
New to the idea? This post
explains what clipboard managers are for.README 전문 보기 ↗GPaste is a clipboard management system for GNOME: a daemon that remembers what you copy, plus a GTK 4 interface, a GNOME Shell extension and a CLI to get it back.
New to the idea? This post explains what clipboard managers are for.
gpaste-client migrate.x-kde-passwordManagerHint) is taken in as a
password on its own, and GPaste marks the passwords it puts on the clipboard
the same way, so other clipboard managers can recognise them. Current GTK
advertises the marker on X11 but cannot serve its value, so other managers
may not recognise GPaste passwords there. Deleting a password entry clears
its selection, including after a rename; a separate named entry with the same
value is kept distinct.gpaste-client --favourites.sudo dnf install gpaste gpaste-ui gnome-shell-extension-gpaste
sudo pacman -S gpaste
One package: it ships the daemon, the graphical tool and the extension together.
sudo apt install gpaste-2 gnome-shell-extension-gpaste
The digit tracks the library API version, so it becomes gpaste-3 once this
release lands. Ubuntu's copy lives in universe and lags a long way behind —
several major versions, even on the current LTS — while Debian unstable keeps
up.
sudo zypper install gpaste
GPaste is packaged in plenty of other distributions — Alpine, nixpkgs, Void and Gentoo among them. Repology tracks which version each one ships.
Wherever it came from, enable the extension in the Extensions app once it is installed.
On Fedora and other rpm-based distributions:
# Build dependencies
sudo dnf install meson ninja-build gcc gettext-devel \
glib2-devel gtk4-devel libadwaita-devel gcr-devel \
libXfixes-devel dbus-devel gnome-control-center \
gobject-introspection-devel vala mutter-devel
# Optional, but on by default when found
sudo dnf install libsodium-devel sqlite-devel libsecret-devel \
libpwquality-devel
On Debian, Ubuntu and other deb-based distributions:
# Build dependencies
sudo apt install meson ninja-build build-essential pkg-config gettext \
libglib2.0-dev libgtk-4-dev libadwaita-1-dev libgcr-4-dev \
libxfixes-dev libdbus-1-dev systemd-dev gnome-control-center \
gobject-introspection libgirepository1.0-dev valac
# and the libmutter-N-dev of the mutter GNOME Shell runs on
# Optional, but on by default when found
sudo apt install libsodium-dev libsqlite3-dev libsecret-1-dev libpwquality-dev
mutter is wanted for the GNOME Shell extension and the clipboard backend it
hosts, gobject-introspection for the typelibs the extension loads and for the
bindings, and vala for the Vala ones:
-Dgnome-shell=false -Dintrospection=false -Dvapi=false builds without all
three, and without the extension and the bindings.
dbus, systemd and gnome-control-center are wanted for their pkg-config files
alone, which say where the D-Bus service and interface files, the systemd user
unit and the control-center keybinding files go. Fedora ships systemd's in the
base package, which is why only the apt line names it. A packager who would
rather not pull any of them in can name the four directories outright —
-Ddbus-services-dir, -Ddbus-interfaces-dir, -Dsystemd-user-unit-dir and
-Dcontrol-center-keybindings-dir — and dbus and gnome-control-center are still
needed at runtime either way.
Then, wherever you are:
git clone https://github.com/Keruspe/GPaste.git
cd GPaste
meson setup build
ninja -C build
sudo ninja -C build install
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
GPaste currently needs GLib 2.90, GTK 4.24, libadwaita 1.10, gcr 4 and Meson 1.9. That libadwaita is newer than anything Debian ships outside experimental, so a deb-based build of the 51 series needs one built by hand.
Pass these to meson setup (or meson configure build) as -Doption=value.
The feature ones default to auto: enabled when the dependency is present,
skipped otherwise.
| Option | Default | What it controls |
|---|---|---|
encryption | auto | libsodium-based history encryption |
sqlite | auto | the SQLite storage backends (needs SQLite ≥ 3.35) |
libsecret | auto | remember the encryption passphrase in the keyring (needs encryption) |
pwquality | auto | rate a passphrase or a password as it is typed |
gnome-shell | true | the GNOME Shell extension and the mutter clipboard backend (requires introspection) |
introspection | true | GIR data |
vapi | true | Vala bindings (requires introspection) |
systemd | true | the systemd user unit |
bash-completion, zsh-completion, fish-completion | true | shell completions |
For a minimal build:
meson setup build -Dgnome-shell=false -Dintrospection=false -Dvapi=false
| Shortcut | Action |
|---|---|
| Ctrl+Alt+H | Show the history |
| Ctrl+Alt+G | Launch the graphical tool |
| Ctrl+Alt+V | Pop the first item off the history |
| Ctrl+Alt+S | Mark the active item as a password, if it is a text one |
| Ctrl+Alt+O | Sync the clipboard to the primary selection |
| Ctrl+Alt+P | Sync the primary selection to the clipboard |
| Ctrl+Alt+U | Upload the active item to a pastebin, if it is a text one |
All of them are configurable in the preferences.
Uploading runs whatever the upload-command preference names, defaulting to
curl -sS --data-binary @- https://paste.rs. Any command that takes the item on its
standard input and answers the url on its standard output will do —
wgetpaste, pastebinit and nc termbin.com 9999 among them.
Inside the graphical tool, which has a few of its own:
| Shortcut | Action |
|---|---|
| Ctrl+F | Search the history |
| Ctrl+N | Add a new item |
| Ctrl+Shift+N | Add a new password |
| Ctrl+0…9 | Paste the item at that index |
| Ctrl+, | Show the preferences |
| Ctrl+? | Show the keyboard shortcuts |
| Ctrl+W or Esc | Close the window |
| Menu or Shift+F10 | Open the selected item's menu |
gpaste-client # print the history
gpaste-client --oneline --use-index # ... one line per item, numbered
gpaste-client search <pattern> # print matching items
gpaste-client select <uuid> # put an item back in the clipboard
gpaste-client add <text> # copy some text
echo hello | gpaste-client # copy from a pipe
gpaste-client file <path> # copy a file's contents
gpaste-client delete <uuid> # forget one item
gpaste-client empty # forget everything
gpaste-client ui # open the graphical tool
gpaste-client preferences # open the settings
gpaste-client migrate # switch storage backend
gpaste-client change-passphrase # re-key an encrypted history
gpaste-client doctor # check the stored histories, putting right what can be
gpaste-client help lists every subcommand; see also man gpaste-client.
Items are addressed by UUID by default. Pass --use-index to use their
position in the history instead, starting at zero: --use-index merge 0 1 2
merges the first three items. Indexes must be unsigned decimal numbers. Text,
search patterns, paths and history names keep their usual meaning.
Restart the daemon so the new version takes over:
gpaste-client daemon-reexec
gpaste-client daemon-version # confirm which one is running
Three libraries are installed, each with its own pkg-config file, headers, GIR and VAPI:
| Library | pkg-config | GIR | Contents |
|---|---|---|---|
libgpaste-3 | gpaste-3 | GPaste-3 | Core objects, settings, and the D-Bus client for the daemon |
libgpaste-daemon | gpaste-daemon | GPasteDaemon-1 | The clipboard item hierarchy, the history and the storage backends |
libgpaste-gtk4 | gpaste-gtk4 | GPasteGtk-4 | GTK 4 / libadwaita widgets and helpers |
Each has a single umbrella header — <gpaste.h>, <gpaste-daemon.h> and
<gpaste-gtk4.h> — which is the only one you may include directly.
Run the test suite from the build directory:
ninja -C build test
Each C test binary runs on its own in-memory settings and private D-Bus, so it
needs dbus-daemon; a supervisor reaps that bus even if a test crashes. The UI
tests open their windows on a private Xvfb and are skipped without it. The
history-switcher and indicator JavaScript tests use Node.js with actor and
bus doubles. They check history switcher drafts, dialogs, counts and focus,
plus the indicator's daemon status, item actions, upload callbacks and teardown.
They are omitted when Node.js is unavailable and touch no settings, bus or
display. None of the tests touches the desktop session.
AGENTS.md documents the coding style and repository
conventions in more detail, and each part of the tree has an AGENTS.md of its
own beside its code.
Bug reports and patches are welcome on GitHub.
Translations go through Weblate, which credits every translator on the project page.
GPaste is what a hundred or so people have made it: thanks to everyone who has contributed.
GPaste is developed in my spare time. If it is useful to you, you can support its development through GitHub Sponsors, or through PayPal if you are not on GitHub.
The latest release for GNOME 51 is GPaste 51.2 (tarball).
Release announcements and everything else about GPaste are
on my blog. See
NEWS for the full changelog.