Git Product home page Git Product logo

parcellite's Introduction

Parcellite - Lightweight GTK+ Clipboard Manager
-------------------------------------------------------------------------------

Copyright (C) 2007-2008 Gilberto "Xyhthyx" Miralla <[email protected]>
Copyright (C) 2009-2024 Doug Springer <[email protected]>


Introduction
-------------------------------------------------------------------------------

Parcellite is a lightweight GTK+ clipboard manager. This is a stripped down,
basic-features-only clipboard manager with a small memory footprint for those
who like simplicity. 

Project website: http://parcellite.sourceforge.net/
or https://github.com/rickyrockrat/parcellite

Release 1.2.4.0 for addition to Alpine Linux. See the Changelog.


How to compile and install parcellite
-------------------------------------------------------------------------------

Requirements:
	* gtk+ >= 2.10.0 
	* intltool
	* libglib

Download the parcellite source code, then:
	$ tar zxvf parcellite-x.y.z.tar.gz
	$ cd parcellite-x.y.z

No Autotools (just make and install it): Assuming you are on tag 1.2.3:
	$ make -f Makefile.simple VERSION=1.2.3
	$ sudo make -f Makefile.simple install prefix=/usr/local
	$ OR make -f Makefile.simple install DESTDIR=/tmp/myinstall prefix=/usr/local

if you want autotools:
	$ ./autogen.sh
# See note below on OpenBSD
	$ ./configure
	$ make
	$ sudo make install

OpenBSD notes:

Thanks to Lawrence Teo for this tidbit on BSD.
	
For OpenBSD, you will need to use GNU make instead of BSD make (complains about .desktop files). 
GNU make is usually available on BSD systems by installing the "gmake" package.

the configure script needs to be invoked as follows on OpenBSD:

   LIBS="`pkg-config --libs gtk+-2.0`" ./configure

If not, configure will report that the gtk >= 2.10.0 requirement is not met on OpenBSD.

Release instructions:
1) run rel.sh - it copies the trunk to the tag the script asks the developer for.
2) If 1 doesn't work, rel.deb.sh can be run to complete the .deb builds.
3) run rel.ppa.sh to build & dput code to the ppa.

All scripts are run from a checked-out svn trunk directory (i.e. same directory as this file).

To update the pot file, run extract_strings.sh in the trunk directory.

parcellite's People

Contributors

alexgabi avatar davidmp1 avatar ls4154 avatar nikoss avatar rickyrockrat avatar thejohnfreeman avatar theosotr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

parcellite's Issues

Understanding expected fifo_cmd behavior

The ability to disable Parcellite collection from the command line was added back in 2013.

My understanding of this feature is that it should work as follows:

  1. Pass echo -n "stop_all" >> fifo_cmd
  2. Clipboard is disabled - items copied do not appear in Parcellite history.
  3. Pass echo -n "run_all" >> fifo_cmd
  4. Clipboard is re-enabled - items copied while the clipboard was disabled still do not show up in Parcellite history

However, when testing with Parcellite 1.2.1, after passing echo -n "run_all" >> fifo_cmd, anything that I copied while the clipboard was disabled shows up in the Parcellite history. Since I am trying to use these commands to disable Parcellite collection while using password-store, this means that copied passwords still eventually end up in the Parcellite history, which is not desired.

Is this expected as part of the added fifo_cmd functionality? If so, would it be possible to add a command that will both disable the clipboard and not restore copied entries once re-enabled?

Problems with self defined commands

Hey,

I defined this command in parcellite:

echo "%s" >> /home/complexinfinity/.parcellite.log

It works, but if I try to use this command on C - code like

printf("\n*******COMPLETION TIME (ms) :%f\n", elapsed);

nothing is written to .parcellite.log.

U have an idea about this?

Cli option to remove item

I want to use parcellite together with my password manger (pass). my password manager removes password from clipboard after given period of time. but I have no idea how to avoid passing a password to the history of parcellite.
I thought that if there will be an option to remove last added item from parcellite I will run it after the pass manger command.

Parcellite seems to use the US keyboard layout when pasting without saving history

I disabled the history in parcellite and noticed that when I paste an item containing special characters, they get replaced with the equivalent keystroke in the US layout. I'm using the pt-PT keyboard layout exclusively. Also, as I think it might be relevant, I'm attaching my locale settings:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=pt_PT.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Switching history back on resolves the issue, but for security reasons, I'd like to have it disabled.

No copy on MuPDF

Hi. I use MuPDF like pdf viewer on Debian 9 with XFCE. I changed the default clipboard manager of Xfce (clipman) because creates conflicts with inkscape, so now i used parcellite. But when i use MuPDF and i select text for copy nothing happens.

Please, some hint.

UPDATE: From man page of MuPDF:

Right mouse button drag
Select text in an area. On X11, the selected text can be pasted
in another application with a middle click. Press Ctrl+C to
copy the selected text to the clipboard. On Windows, the
selected text will automatically be copied to the clipboard.

Review/Update of pt_BR.po

Hello Mr RickyRockRat,

Please accept my review of pt_BR.po. The main actions are: humanization of the texts automatically translated by an internet translator, adaptations and adaptations of the texts so that they can make complete sense in my language, revision of the writing of capital and small letters according to the original text in English.

I thank you for developing and maintaining the program.

marcelocripe
(Original text in Brazilian Portuguese language)


Olá Senhor RickyRockRat,

Por favor, aceite a minha revisão do pt_BR.po. As principais ações forma: humanização dos textos traduzidos automaticamente por tradutor da internet, adaptações e adequações dos textos para poderem fazer sentido completo em meu idioma, revisão da escrita das letras maiúsculas e minúsculas conforme o texto original em idioma Inglês.

Eu agradeço por desenvolver e manter o programa.

marcelocripe
(Texto original em idioma Português do Brasil)
parcellite_pt_BR_13-01-2022.po.zip

High power consumption

powertop reports >100 mW power consumption for parcellite on an idle Ubuntu 20.04 system. This is quite a lot.

Does the application use polling? Can this be reduced or worked around?

Display thumbnail of copied images in list

It would be a really awesome feature if you can see a small thumbnail(s) in the history if you copy image data or an (single, or multible) image file(s).
This is really useful if you do a lot of graphic copy stuff.

that software is great man!

Clipboard passwords exposed in ~/.xsession-errors log.

Hi,

In my hunt for a clipboard manager that works properly and well while syncronising clipboards, so I can cut and paste nicely out of my secure password database, and into applications I need them in, I tried out parcellite for a while.

I immediately stopped and tried out another one when, to my horror, I saw this in my ~/.xsession-errors log file:

xdotool:'/bin/sh -c 'xdotool mousedown 2 && xdotool mouseup 2''
text: <my raw password>

Now maybe I am using it wrong, or maybe I am an idiot for expecting a password manager to only transiently store any data anywhere by default, but for your password to be stored in a persistent log file like that, in full, and in clear text, without it being made abundantly clear this would happen somewhere along the way, that strikes me as an oversight, a bug, or at least 'issue'.

Just glancing at my workstation I see that ~/.xsession-errors is at least persisted as ~/.xsession-errors.old at your next session, if not longer perhaps in some distributions/setups.

K.

PS.

$ parcellite --version
Flag 0x0001, status 0, EXIT 1 STAT 0
Parcellite svn, GTK 2.24.32
$ lsb_release -a
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 20
Release: 20
Codename: ulyana
$

Separate persisted list with predefined values

In addition to transient (or persistent) history of recent commands I have some "long constant texts" that I use quite often (e.g. [email protected]). It would be very useful to be able to have a dedicated persisted list that would be possible to call with a keyboard shortcut to select the value (e.g. CTRL+META+P and 1,2,3... - or just choose from the list with arrows).

LibreOffice Calc paste loses formula

If I select a cell or cells in LibreOffice Calc (akin to Excel), and Ctrl-C to copy them, it prepares them for pasting, and the normal behavior is to copy the formula from the cell(s).

When pasting with Ctrl-V, I only get the copied cell text, no formula.

After closing Parcellite and doing the copy/paste again, I get the formula when pasting.

Is there any way to avoid the interaction problem here? Maybe exclude an application from Parcellite somehow?

#75 Parcellite Persistent not persistent

Copy from source forge. When you select a persistent history item (or any item), it moves to the top of the list.
The idea is to have the list be static and not reorder itself...
This happens because the persistent items are simply a flag in a single list, so when an item from the persistent menu is selected, it re-orders the list. This is a function of how the persistent history was implemented...an add on to existing functionality.

Is there a way to save the history to a file from the commandline? (ie, run the same function as in `icon-right-click > save as`)

Is there a way to save the history to a file from the commandline?
(ie, run the same function as in icon-right-click > save as)

-h only tells me about:

Application Options:
  -n, --no-icon       Do not use status icon (Ctrl-Alt-P for menu)
  -c, --clipboard     Print clipboard contents
  -p, --primary       Print primary contents
  -v, --version       Display Version info

and the manpage only gives a few examples of adding items to the clipboard.

(EDIT: ... sorry if this is some dumb mistake on my side like a broken version or something. (Parcellite 1.2.1, GTK 2.24.32))

Using Super key requires more than one press

Hello I just installed parcellite 1.2.1 from the amd64 deb package on a fresh Mint 18.3.

I have one issue because I use the super key (The Logo key) to have faster hotkeys: I use Super-V to get the history and select the entry I want. It is very near the Ctrl-V so it is easy to remember and natural to type.

But the history raises currently at the third press.
When the focus is in a text field (like here), and the mouse cursor is hovering the field, we see it change from I-beam to arrow on first press, back to I-beam on second press, and history appaers on third press.

Can you reproduce ?

Monochrome icon for GNOME Shell

Please show a monochrome icon in the icon tray when Parcellite is run in GNOME Shell. The deisng also has to be simplified. I would like to sugget the outline of the current icon and a cut-out of the letter P in the middle. All using only transparant and one very light gray color as GNOME has in its guidelines.

PS See also https://sourceforge.net/p/parcellite/feature-requests/71/ Better close down on of the issue reporting services so all is maintained in one place.

Attempt to unlock mutex that was not locked

Parcellite is my favourite clipboard manager since many years.
However recently it often crashes and fails to start like this:

$ parcellite 
Flag 0x0001, status 0, EXIT 1 STAT 0
DRM_I915No magic! Assume no history.
Attempt to unlock mutex that was not locked
Aborted

The history seems to be deleted or corrupted:

$ ls -al ~/.local/share/parcellite/
total 4
drwxr-xr-x 1 mb mb   68 26. Sep 08:31 .
drwx------ 1 mb mb 1842 26. Sep 07:51 ..
-rw-r--r-- 1 mb mb    4 28. Aug 08:05 actions
prw-r----- 1 mb mb    0 26. Sep 08:31 fifo_c
prw-r----- 1 mb mb    0 26. Sep 08:31 fifo_cmd
prw-r----- 1 mb mb    0 26. Sep 08:31 fifo_p
-rw-r--r-- 1 mb mb    0 25. Sep 15:32 history

Always the only solution to fix this is restoring the directory from a backup.
But even if the history is lost, why doesn't the application start anymore?

The reason why this might has appeared this time, the machine was crashed somehow, IO was blocked. I needed to reset by SYSREQ and emergency sync.

Category management for persistent snippets

FeatureRequest:

Hello,

please add categories for persistent clipboard entries. This could make it easier to have a longer text snippet library. Please also add a shortcut to jump to the persistent entries.
For now I need to jump to END and scroll all the unsorted snippets.

Best regards.

how to launch parcellite panel from the command line?

Hi and thanks for the software @rickyrockrat.

I wonder how can I lauch parcellite panel from the command line. See, I use parcellite from a docker container, so there is absolutelly no bar or gnome panel whatsoever available. I can only launch X apps from the command line.

So I was wondering if you could provide a command like parcellite -g to launch the graphical penal from the command line.

thanks in advance.

paste with formatting removed?

I use Ubuntu's packaged version of parcellite. Right now, on Ubuntu 16.04, it's parcellite 1.1.9. Previously, I was on Ubuntu 12.04, which they say had parcellite 1.0.2~rc5.

The main reason I used it was the feature of pasting things without formatting. ... just plain text. I have not been able to figure out how to do that in parcellite 1.1.9. Was I previously using something that was a bug that got fixed, or was that feature removed at some point.

Provide a shortcut to paste primary and secondary clipboard

Hi,

can you anything say or do about hexchat/hexchat#1962 ?
Is it possible that parcellite would overwrite the paste behaviour of CTRL+v and Shift+Insert to separate secondary and primary paste?

I would like to have CTRL+v pasting the secondary while Shift+Insert should paste the primary. Lot of applications are doing it like this like terminator and Palemoon. But Hexchat and Firefox are different here, so I wonder if this is managed by Gtk.

I'm using Parcellite for many years and got to know from it that here is more than only one clipbard. But I still wonder if the paste management is part of Gtk or the Window Manager itself.

Failed to load module "canberra-gtk-module"

On a quite fresh Ubuntu 19.04 install. Parcellite doesn't launch with launcher, and from a shell I get the following error message:

❯ parcellite
Gtk-Message: 13:10:21.341: Failed to load module "canberra-gtk-module"
Flag 0x0001, status 256, EXIT 1 STAT 1

Command line option for storing to clipboard

Man page cli example is echo "copied to clipboard" | parcellite -c ,
First run parcellite with parcellite &.
(1)Now when I try this I get following with no clipboard history

echo "copy" | parcellite -c
Looking in '/etc/xdg/parcellite/parcelliterc'

(2)And this with hello being the only thing in clipboard history

echo "copy" | parcellite -c
Looking in '/etc/xdg/parcellite/parcelliterc'

hello

In the first case "copy" is nowhere in the clipboard history and in second case "copy" is the second item in history not the first .
Is this expected behaviour.

No icon on ubuntu 20.

No icon in the tray.

Following #30, nothing worked. No info on how to enable the unity setting.

I can't open any GUI, with Ctrl-Alt-P or whatever the key combination is.

I created a /home/user/.config/parcellite/parcelliterc file and attempted to set the unity setting by trying on_unity=1 and on_unity=true, then running parcellite in the console. Nothing seemed to happen.

build from source failed early

RHEL 7.7 x86_64 3.10 kernel

autogen.sh reports

configure.ac:23: warning: macro 'AM_GLIB_GNU_GETTEXT' not found in library
configure.ac:7: error: possibly undefined macro: AC_PACKAGE_VERSION
configure.ac:23: error: possibly undefined macro: AM_GLIB_GNU_GETTEXT

and then configure fails with

./configure: line 2825: syntax error near unexpected token (' ./configure: line 2825: PACKAGE=AC_PACKAGE_TARNAME()'

The lines around this are

Define the identity of the package.

PACKAGE=AC_PACKAGE_TARNAME()
VERSION=AC_PACKAGE_VERSION()

Parcellite not showing up

I think Parcellite may be something I want, but I'm unable to run it. I'm on Ubuntu 18.04.2 LTS and installed Parcellite using APT. There's an application I can start, and when I do, it shows up in my processes:

$ ps aux | grep parcellite
sander   20201  0.3  0.0 353100 19980 tty2     Sl+  01:59   0:00 parcellite

However, I believe I should be seeing an icon for it at the top of my screen, and it's not there.

This is in /var/log/syslog:

Feb 18 01:59:33 sander-laptop3 parcellite.desktop[20201]: Looking in '/etc/xdg/xdg-ubuntu/parcellite/parcelliterc'
Feb 18 01:59:33 sander-laptop3 parcellite.desktop[20201]: Looking in '/etc/xdg/parcellite/parcelliterc'
Feb 18 01:59:33 sander-laptop3 parcellite.desktop[20201]: Looking in '/etc/xdg/xdg-ubuntu/parcellite/parcelliterc'
Feb 18 01:59:33 sander-laptop3 parcellite.desktop[20201]: Looking in '/etc/xdg/parcellite/parcelliterc'
Feb 18 01:59:33 sander-laptop3 parcellite.desktop[20201]: Flag 0x0001, status 0, EXIT 1 STAT 0
Feb 18 01:59:33 sander-laptop3 parcellite.desktop[20201]: Looking in '/etc/xdg/xdg-ubuntu/parcellite/parcelliterc'
Feb 18 01:59:33 sander-laptop3 parcellite.desktop[20201]: Looking in '/etc/xdg/parcellite/parcelliterc'

I've googled and found some relevant matches for the Flag ... status... EXIT... STAT 0 thing, but nothing with solutions that I could apply.

I believe there is a UI, but I don't know where it is hiding 😭 Thanks for overtaking this project, I'd really appreciate if you could help.

Automatically restoring clipboard on application exit

Hi, I thought this was a default feature of Parcellite?

I'm using Peppermint Linux 7 with Parcellite from apt. If I copy something in, say, jEdit, then exit jEdit, and try to paste in another application, the clipboard is empty.

I can see the copied text in the Parcellite list, so it was saved. It's just not automatically put back into the clipboard again.

I'm looking for a general solution to this general Linux problem (the emptied clipboard on application exit). Preferrably one I can ship with my Java programs, but an other way will also do.

Can I configure Parcellite to do this?

Fails to launch after upgrading libglib-2.0

My liniux mint system upgraded from 2.56.1-2ubuntu1 to 2.56.2-0ubuntu0.18.04.1 and I now notice that I get the following error in dmesg when I try to launch parcellite.

traps: parcellite[7821] trap int3 ip:7f7ff9e90c41 sp:7fffb46839d0 error:0 in libglib-2.0.so.0.5600.2[7f7ff9e3f000+113000]

Or from bash:

➜  ~ parcellite
Flag 0x0001, status 256, EXIT 1 STAT 1
parcelliteAssuming old history style. Read and convert.

(parcellite:12806): GLib-ERROR **: 15:08:33.985: ../../../../glib/gmem.c:135: failed to allocate 18446744071566123041 bytes
[1]    12806 trace trap (core dumped)  parcellite

Here is the source w/ changelog for libglib-2.0. https://launchpad.net/ubuntu/+source/glib2.0/2.56.2-0ubuntu0.18.04.1

How do I key bind to tilde?

I love the program. Good work guys.
I've already spent about 3 hours total googling it. Didn't find a way to bind the history menu to <Ctrl>Tilde.
Thanks for a great tool.
Alternatively if there's a command (command line) for opening the history menu I can bind it on OS lvl.

Synchronize only clipboard to primary

Hello, is it possible to synchronize only clipboard to primary and not the other way around? I want this as I don't want selecting some text in the browser to destroy my clipboard for example.

Another thing I want to ask - if I copy some text in gVim and then close it, I can paste the text in a terminal with a middle click or SHIFT+INSERT but I cannot paste it in chromium with CTRL+V. I'm not sure I understand why. How can this be fixed?

Failed to load saved history file

I saved parcellite history to a file, but there appears to be no way to load it up again.

It looks like parcellite uses a binary format to persist history in ~/.local/share/parcellite/history, but the manually saved history file is formatted like:

NHIST_0382 r8712u
NHIST_0383 RTL8188SU
NHIST_0384 127.0.0.1 localhost
127.0.1.1 DebianHostName

Is there a way to reconcile these?

One click copy paste

So i was searching for one click paste but i found there is an option for that called auto paste ,but it doesn't work on terminal and sometimes in general

Actions are always appended as a second option in the list.

Hi,

I tried to start using actions in parcellite, but each time I use it, the actual value that I want is pushed to second place on the list.

Say, I copy manually some text
'dsadasdasdasdasdasdasda'

Then, press ctrl + alt + a ; and choose my 'email' option like so

parcellite-1

The history looks like so:

parcellite-3

I am ending up with the value I want pasted right away in second place on the list. Is this behaviour normal?

Configuration screenshots and tshoot info below

cat /etc/linuxmint/info 
RELEASE=19
CODENAME=tara
EDITION="Cinnamon"
DESCRIPTION="Linux Mint 19 Tara"
DESKTOP=Gnome
TOOLKIT=GTK
NEW_FEATURES_URL=http://www.linuxmint.com/rel_tara_cinnamon_whatsnew.php
RELEASE_NOTES_URL=http://www.linuxmint.com/rel_tara_cinnamon.php
USER_GUIDE_URL=help:linuxmint
GRUB_TITLE=Linux Mint 19 Cinnamon

dpkg -l | grep parcel
ii  parcellite                                        1.2.1-2                                             amd64        lightweight GTK+ clipboard manager

parcellite-2

Screenshot from 2019-07-10 09-51-27
Screenshot from 2019-07-10 09-51-35

Problem with parcellite and Ubuntu MATE 18.04 indicator applet

When parcellite is installed under Ubuntu MATE 18.04, it shows 2 icons - one in the system tray and another in the indicator applet. One shows what would usually be the left click menu whilst the other shows what would usually be in the context/RMB menu.

Add dbus support

A dbus interface would enable the users to configure parcellite according to their needs. Integrating it to other tools would be possible with dbus support.

RFE: add letters as accelerator for persistent entries

Actually the persistent stack show all lines like

https://fsf.org
This is copied from text
parcellite

But having:

A. https://fsf.org
B. This is copied from text
C. parcellite

Where A,B & C would be underlined and reachable through key press, like a menu accelerator.
So, without mouse, I can do Ctrl-Alt-H, A to paste the FSF url.

A similar addition to add 1..9 0 to first ten history items would be great also.

how to use ctrl+space as a hotkey

This is a great tool, thanks for all the work!

I'm just trying to figure out how to use ctrl + space as a hotkey combination. I get how to specify ctrl as <Ctrl> but I can't seem to figure out how to specify space.

[Feature request] Directly paste selected item from history

In macOS I've started to use ClipMenu and it has a very nice option to enable so that directly when you pick an item from the clipboard history, it is inserted at the cursor. For me this is exactly what I want to do 97.5% of the times, so it saved my quire a few keystrokes over time.

I would love to see this in Parcellite too.

(It seems like this is not the place where feature requests are done, since this is the first issue. Where is the right place to post this)

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.