Code Monkey home page Code Monkey logo

eventd's People

Contributors

keruspe avatar mathstuf avatar sardemff7 avatar worr 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

Watchers

 avatar  avatar  avatar

eventd's Issues

Feature request: Moving bubbles

Hey, I love eventd. Really awesome!

Humans are evolutionary trained to react to movement in their peripheral vision, after all it might be a tiger.
For this reason I really want my notification bubbles to slide in (or something) I don't care much what movement exactly, at least some of them. It is much stronger in getting attention, especially on a big screen. This should of course be optional per action.

Do you think, this would be doable?

I totally understand if you think this is outside the intended scope of the project.

eventd-master doesn't build with meson-0.44.0

meson --buildtype plain --libdir lib64 --localstatedir /var/lib --prefix /usr --sysconfdir /etc --wrap-mode nodownload -Dsystemduserunitdir=/usr/lib/systemd/user -Dsystemdsystemunitdir=/usr/lib/systemd/system -Ddbussessionservicedir=/usr/share/dbus-1/services -Denable-websocket=false -Denable-dns-sd=false -Denable-ssdp=false -Denable-ipv6=true -Denable-systemd=false -Denable-notification-daemon=true -Denable-nd-wayland=false -Denable-nd-xcb=true -Denable-nd-fbdev=false -Denable-im=false -Denable-sound=false -Denable-tts=false -Denable-webhook=false -Denable-libnotify=true -Denable-libcanberra=false -Denable-gobject-introspection=true -Denable-debug=false /var/tmp/portage/net-misc/eventd-0.23.0_p20171112/work/eventd-0.23.0_p20171112 /var/tmp/portage/net-misc/eventd-0.23.0_p20171112/work/eventd-0.23.0_p20171112-build
The Meson build system
Version: 0.44.0
Source dir: /var/tmp/portage/net-misc/eventd-0.23.0_p20171112/work/eventd-0.23.0_p20171112
Build dir: /var/tmp/portage/net-misc/eventd-0.23.0_p20171112/work/eventd-0.23.0_p20171112-build
Build type: native build
Project name: eventd
Native C compiler: x86_64-pc-linux-gnu-gcc (gcc 7.2.0)
Appending CFLAGS from environment: '-O2 -pipe -march=native -Wall'
Appending LDFLAGS from environment: '-Wl,-O1 -Wl,--as-needed'
Build machine cpu family: x86_64
Build machine cpu: x86_64
Found pkg-config: /usr/bin/x86_64-pc-linux-gnu-pkg-config (1.3.90)
Native dependency glib-2.0 found: YES 2.52.3
Native dependency gobject-2.0 found: YES 2.52.3
Native dependency gio-2.0 found: YES 2.52.3
Native dependency gio-unix-2.0 found: YES 2.52.3
Native dependency gmodule-2.0 found: YES 2.52.3
Has header "locale.h": YES
Has header "fcntl.h": YES
Has header "errno.h": YES
Has header "sys/socket.h": YES
Configuring config.h using configuration
Configuring config.ent using configuration
Compiler for C supports argument -Wformat=2: YES
Compiler for C supports argument -Wno-unused-parameter: YES

Executing subproject libnkutils.

Project name: libnkutils
Native C compiler: x86_64-pc-linux-gnu-gcc (gcc 7.2.0)
Native dependency uuid found: YES 2.31.0
Native dependency xkbcommon found: YES 0.7.2
Program git found: YES (/usr/bin/git)
Build targets in project: 14

Subproject libnkutils finished.
Program g-ir-scanner found: YES (/usr/bin/g-ir-scanner)
Program g-ir-compiler found: YES (/usr/bin/g-ir-compiler)
Native dependency gobject-introspection-1.0 found: YES 1.52.1
Has header "sys/un.h": YES
Has header "netinet/in.h": YES
Native dependency libsoup-2.4 found: YES 2.58.2
Dependency avahi-client found: NO
Dependency avahi-glib found: NO
Native dependency gssdp-1.0 found: YES 1.0.2
Configuring org.eventd.fdo-notifications.service using configuration
Native dependency gdk-pixbuf-2.0 found: YES 2.36.10
Native dependency cairo found: YES 1.14.12
Native dependency pango found: YES 1.40.12
Native dependency pangocairo found: YES 1.40.12
Library m found: YES

Meson encountered an error in file plugins/nd/meson.build, line 79, column 4:
Subproject name must not contain a path separator.

Multiple tests fail with 'Unable to bind the IP socket: Error binding to address: Cannot assign requested address'

Hello.

I am trying to make eventd's testsuite pass all tests, but relay-connection.test, libeventc-connection.test, and evp-connection.test fail all the time with Unable to bind the IP socket: Error binding to address: Cannot assign requested address error.

Here's the build log: https://paste.pound-python.org/show/wVbbUgrQig2qFd0hGeaE/
Here's the test-suite.log: https://paste.pound-python.org/show/e0AP8psd9dawXRt0vo1r/

I'm probably missing something obvious.

Unicode problems on NixOS (glibc 2.26 - 2.27 locales incompatibility)

I am not sure, if this is a bug or just a problem with my system.
I cannot find a way to get notifications with non-ascii symbols to work.

My system is configured to use utf-8 everywhere and has no encoding problems with anything else.

This is a part of my env:

LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8

I am using

eventc 0.24.1 (using libeventc 0.24.1)

and a command like

eventc critical battery -d "title='Batterie lädt!'"

will fail with the message

(eventc:5279): eventc-WARNING **: 23:40:20.682: Couldn't parse the arguments: Invalid byte sequence in conversion input

Also bubbles not triggered from eventc but the dbus-notify plugin wont get shown, when they contain unicode.

I use nixos and have compiled eventd myself. Might it be, that I could some compile parameters wrong?

Any help on this would be much appreciated!

Allow building both notification-daemon and libnotify

For packaging eventd, the ability to build both the plugin and dbus functionality at the same time would be great. Currently, the package would either need to be built twice or be missing functionality. The two should probably detect that the other is in use and become a no-op.

AUR build fails

Hello, I'd love to use eventd but sadly the build fails for me.
When trying to install from AUR check() fails.

Here are the full logs.
Long story short that is the error:

--- stderr ---
**
ERROR:../eventd-0.24.1/src/libnkutils/tests/token.c:972:_nk_token_list_tests_func: assertion failed (result == data->result): ("Thu M\303\244r  1 14:14:08 2018" == "Thu Mar  1 14:14:08 2018")
-------

eventd-0.24.0 fails test - ERROR:../eventd-0.24.0/src/libnkutils/tests/token.c:972:_nk_token_list_tests_func: assertion failed (result == data->result): ("1,00000" == "1.00000")

Hello.

eventd-0.24.0 fails test:

>>> Test phase: net-misc/eventd-0.24.0-r9999
ninja -v -j4 -l4 -C /var/tmp/portage/net-misc/eventd-0.24.0-r9999/work/eventd-0.24.0-build test
ninja: Entering directory `/var/tmp/portage/net-misc/eventd-0.24.0-r9999/work/eventd-0.24.0-build'
[1/33] /var/tmp/portage/net-misc/eventd-0.24.0-r9999/work/eventd-0.24.0-build/src/libnkutils/nk-git-version header src/libnkutils/nkutils-git-version.h /var/tmp/portage/net-misc/eventd-0.24.0-r9999/work/eventd-0.24.0 /var/tmp/portage/net-misc/eventd-0.24.0-r9999/work/eventd-0.24.0/.git /usr/bin/git
[2/12] /var/tmp/portage/net-misc/eventd-0.24.0-r9999/work/eventd-0.24.0-build/src/libnkutils/nk-git-version entity src/libnkutils/nkutils-git-version.ent /var/tmp/portage/net-misc/eventd-0.24.0-r9999/work/eventd-0.24.0 /var/tmp/portage/net-misc/eventd-0.24.0-r9999/work/eventd-0.24.0/.git /usr/bin/git
[2/3] /usr/bin/python3.5 -u /usr/lib/python-exec/python3.5/meson test --no-rebuild --print-errorlogs
 1/14 libnkutils / libnkutils uuid module tests  OK       0.05 s
 2/14 libnkutils / libnkutils token module tests  FAIL     0.10 s
 3/14 libnkutils / libnkutils gtk-settings module tests  OK       0.06 s
 4/14 libnkutils / libnkutils xdg-de module tests  OK       0.33 s
 5/14 libnkutils / libnkutils xdg-theme module tests  OK       0.21 s
 6/14 libnkutils / libnkutils enum module tests  OK       0.04 s
 7/14 libnkutils / libnkutils colour module tests  OK       0.04 s
 8/14 libnkutils / libnkutils bindings module tests  OK       1.12 s
 9/14 eventd / libeventd-event unit tests     OK       0.23 s
10/14 eventd / libeventd-protocol unit tests  OK       0.03 s
11/14 eventd / eventd EvP integration test    OK       0.40 s
12/14 eventd / eventd relay integration test  OK       0.52 s
13/14 eventd / eventd ws integration test     OK       0.49 s
14/14 eventd / libeventc integration test     OK       0.28 s

OK:        13
FAIL:       1
SKIP:       0
TIMEOUT:    0


The output from the failed tests:

 2/14 libnkutils / libnkutils token module tests  FAIL     0.10 s

--- command ---
/var/tmp/portage/net-misc/eventd-0.24.0-r9999/work/eventd-0.24.0-build/src/libnkutils/nk-token.test
--- stdout ---
/nkutils/token/basic: OK
/nkutils/token/basic/dash-underscore: OK
/nkutils/token/basic/unicode: OK
/nkutils/token/basic/boolean/true: OK
/nkutils/token/basic/boolean/false: OK
/nkutils/token/basic/wrong/1: OK
/nkutils/token/basic/wrong/2: OK
/nkutils/token/key/name: OK
/nkutils/token/key/index/positive: OK
/nkutils/token/key/index/negative: OK
/nkutils/token/key/name/modifier: OK
/nkutils/token/key/join/default: OK
/nkutils/token/key/join/custom: OK
/nkutils/token/key/join/replace: OK
/nkutils/token/wrong/modifier: OK
/nkutils/token/wrong/key: OK
/nkutils/token/wrong/key/index: OK
/nkutils/token/wrong/regex/pattern: OK
/nkutils/token/wrong/regex/replace: OK
/nkutils/token/fallback/with: OK
/nkutils/token/fallback/without: OK
/nkutils/token/fallback/recurse: OK
/nkutils/token/fallback/boolean/true: OK
/nkutils/token/fallback/boolean/false: OK
/nkutils/token/substitute/with: OK
/nkutils/token/substitute/without: OK
/nkutils/token/substitute/boolean/true: OK
/nkutils/token/substitute/boolean/false: OK
/nkutils/token/anti-substitute/with: OK
/nkutils/token/anti-substitute/without: OK
/nkutils/token/anti-substitute/boolean/true: OK
/nkutils/token/anti-substitute/boolean/false: OK
/nkutils/token/range/symbol: OK
/nkutils/token/range/text: OK
/nkutils/token/range/middle-split: OK
/nkutils/token/range/double: OK
/nkutils/token/range/plural/singular: OK
/nkutils/token/range/plural/plural: OK
/nkutils/token/prettify/float/width: OK
/nkutils/token/prettify/float/0-padding: OK
/nkutils/token/prettify/float/precision: FAIL
/nkutils/token/prettify/prefixes/binary: FAIL
/nkutils/token/prettify/prefixes/si/big: OK
/nkutils/token/prettify/prefixes/si/small: OK
/nkutils/token/prettify/prefixes/si/with-precision: FAIL
/nkutils/token/prettify/prefixes/si/2-precision: FAIL
/nkutils/token/prettify/prefixes/si/0-precision: OK
/nkutils/token/prettify/time/default: OK
/nkutils/token/prettify/time/with-format: OK
/nkutils/token/prettify/duration/default: OK
/nkutils/token/prettify/duration/with-format: OK
/nkutils/token/replace/full: OK
/nkutils/token/replace/missing: OK
/nkutils/token/replace/capture: OK
/nkutils/token/replace/remove: OK
/nkutils/token/replace/multiple: OK
/nkutils/token/replace/before-after/with: OK
/nkutils/token/replace/before-after/without: OK
/nkutils/token/replace/braces/paired: OK
/nkutils/token/replace/braces/opening: OK
/nkutils/token/replace/braces/closing: OK
/nkutils/token/replace/escaping/backslash: OK
/nkutils/token/replace/escaping/forwardslash/1: OK
/nkutils/token/replace/escaping/forwardslash/2: OK
/nkutils/token/replace/escaping/forwardslash/3: OK
/nkutils/token/replace/escaping/right-curly-bracket/2: OK
/nkutils/token/replace/recurse/with: OK
/nkutils/token/old/before-after: OK
/nkutils/token/identifier/double-escape: OK
/nkutils/token/identifier/non-dollar: OK
/nkutils/token/identifier/none: OK
/nkutils/token/enum/basic: OK
/nkutils/token/enum/nested: OK
/nkutils/token/enum/fallback: OK
/nkutils/token/enum/substitute: OK
/nkutils/token/enum/anti-substitute: OK
/nkutils/token/enum/regex: OK
/nkutils/token/enum/prettify/float: FAIL
/nkutils/token/enum/prettify/prefixes/si: OK
/nkutils/token/enum/prettify/prefixes/binary: OK
/nkutils/token/enum/wrong/regex: OK
/nkutils/token/enum/wrong/token: OK
--- stderr ---
**
ERROR:../eventd-0.24.0/src/libnkutils/tests/token.c:972:_nk_token_list_tests_func: assertion failed (result == data->result): ("1,00000" == "1.00000")
**
ERROR:../eventd-0.24.0/src/libnkutils/tests/token.c:972:_nk_token_list_tests_func: assertion failed (result == data->result): ("612,015625Ki" == "612.015625Ki")
**
ERROR:../eventd-0.24.0/src/libnkutils/tests/token.c:972:_nk_token_list_tests_func: assertion failed (result == data->result): ("1,0M" == "1.0M")
**
ERROR:../eventd-0.24.0/src/libnkutils/tests/token.c:972:_nk_token_list_tests_func: assertion failed (result == data->result): ("626,70k" == "626.70k")
**
ERROR:../eventd-0.24.0/src/libnkutils/tests/token.c:1166:_nk_token_list_enum_tests_func: assertion failed (result == data->result): ("1,56" == "1.56")
-------

Full log written to /var/tmp/portage/net-misc/eventd-0.24.0-r9999/work/eventd-0.24.0-build/meson-logs/testlog.txt
FAILED: meson-test
/usr/bin/python3.5 -u /usr/lib/python-exec/python3.5/meson test --no-rebuild --print-errorlogs
ninja: build stopped: subcommand failed.

Full test log: https://paste.pound-python.org/show/VrdzkeB1cOEmTnZ2cbOd/
Full build log: https://paste.pound-python.org/show/JGjDQ7mLipS4fdm6mxpj/

eventd-0.23.0 doesn't build with meson>=0.42.0

Hello.

Current eventd release doesn't build with recent versions of meson.
I know the changes are in master already, but the patches are changing build system all over the place.
Github also doesn't make things easier to use snapshots as it doesn't include submodules in tarballs.
Could you please tag a new release?

eventd: incorrectly uses /run directory in absence of XDG_RUNTIME_DIR env variable

Hello.

Spec on XDG_RUNTIME_DIR says:

The directory MUST be owned by the user, and he MUST be the only one
having read and write access to it. Its Unix access mode MUST be 0700.
[...]
If $XDG_RUNTIME_DIR is not set applications should fall back to
a replacement directory with similar capabilities and print a warning
message.

FHS spec on /run says:

/run should not be writable for unprivileged users; it is a major
security problem if any user can write in this directory. User-specific
subdirectories should be writable only by each directory's owner.

eventd falls back to /run/eventd directory when XDG_RUNTIME_DIR isn't set. Because /run mustn't be writable by regular users, this attempt fails, e.g:

~ $ echo $XDG_RUNTIME_DIR

~ $ eventdctl start

(eventd:2362): eventd-WARNING **: Couldn't create the run dir '/run/eventd': Permission denied
Segmentation fault (core dumped)

This problem prevents d-bus activation from happening when XDG_RUNTIME_DIR is not set.

Please fix.

Image options in eventd.conf are ignored.

Some options for the nd plugin are being ignored for me. I cannot set the size, anchor, etc. of images.

This is my configuration:

[Queue default]
Anchor=top-right
Margin=20
Spacing=10
Limit=3
OldestAtAnchor=true

[Queue topleft]
Anchor=top-left
Margin=14
Spacing=10
Limit=5
OldestAtAnchor=true

[Queue top]
Anchor=top
Margin=14
Spacing=10
Limit=5

[Notification]
Text=${title}${message/^/\n}

[NotificationBubble]
Padding=20
Radius=0
Border=2
BorderColour=#35586c
BorderBlur=0
Colour=#151718

[NotificationText]
Font=GohuFont 11px
Colour=#FFF

[NotificationImage]
Width=100
Height=-1
FixedSize=false
Anchor=Bottom

[NotificationIcon]
Placement=Foreground
Height=25

Port to libsoup3 API

libsoup2 is deprecated and unfortunately, while libsoup2 and libsoup3 can be installed in parallel, they can't be loaded within the same process - which causes problems if the other is loaded transitively by another dependency of some software.

Needs a port to libsoup3 API.

Bump version

There have been more API changes. A new version bump/tag would be appreciated :) . Thanks.

how to set Anchor

(using git 1055845 )What I did was to set in eventd.conf to :

[Notification]
Anchor=bottom left

When trying to use notify-send, eventd ends in a SEGFAULT (line 71 in src/libnkutils/src/token.c).

eventd/eventd-git 0.27.0-1 fails to build with meson 0.56.0-1 on Arch

I'm trying to install the latest version of eventd from the AUR but it fails to build with the following message:

plugins/nd/meson.build:86: WARNING: Subproject name has a path separator. This may cause unexpected behaviour.

plugins/nd/meson.build:85:4: ERROR: Neither a subproject directory nor a libgwater/xcb.wrap file was found.

A full log can be found at /home/jed/.cache/yay/eventd/src/build/meson-logs/meson-log.txt

I've uploaded the full meson-log.txt file in case it's of any help.

A cursory google search brings up a similar issue with rofi and meson 0.55 back in August that I think may be to blame here. I'm not very familiar with meson and I was wondering if there was going to be a fix at some point the future or if somebody could suggest a quick fix to get eventd to build?

Settings ignored

I'm using eventd solely for its nd plugin - getting and displaying notifications.

Here's my config (now being placed both in ~/.config/eventd/eventd.conf and /usr/share/eventd/eventd.conf):

[NotificationText]
Font=Terminus 16px
Colour=#DDDDDD

[NotificationBubble]
Colour=#00FF00

Nothing changes when I try to notify-send Title Message. The notification with default notification theme is displayed.

I'm running eventd on Arch Linux x64 (i3 window manager), eventd package from AUR installed without any modifications.

How to start eventd properly

I try to use eventd in my arch + wayland + sway setup.
It works fine only when i start eventd in terminal, but i cannot find right eventdctl command to start it in background.

Feature request: better queue control

I've recently switched from dunst to eventd, and this is quite good. However, there are a few features that dunst has but eventd doesn't that would be great:

  • Temporary pausing of a queue (and showing all notifications after)
  • Showing past notifications

These could be implemented as eventdctl commands. How hard would these be to implement?

Text wrapping

It'd be a nice feature to have rather than just truncating long text

Fails to build from source with Meson 0.63.0

During rc1 testing for the upcoming Meson release, eventd stopped building with the following error:

The Meson build system
Version: 0.63.0.rc1
Source dir: /tmp/eventd
Build dir: /tmp/eventd/builddir
Build type: native build
Project name: eventd
Project version: 0.27.0
C compiler for the host machine: ccache cc (gcc 11.1.0 "cc (GCC) 11.1.0")
C linker for the host machine: cc ld.bfd 2.36.1
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (1.8.0)
Run-time dependency glib-2.0 found: YES 2.70.3
Run-time dependency gobject-2.0 found: YES 2.70.3
Run-time dependency gio-2.0 found: YES 2.70.3
Run-time dependency gio-unix-2.0 found: YES 2.70.3
Run-time dependency gmodule-2.0 found: YES 2.70.3
Has header "locale.h" : YES 
Has header "fcntl.h" : YES 
Has header "errno.h" : YES 
Has header "sys/socket.h" : YES 
Configuring config.h using configuration

meson.build:112:0: ERROR: Sandbox violation: Tried to grab file config.ent.in from a nested subproject.

This happens due to the following lines:

subproject_dir: 'src',

config_ent = configure_file(input: files('src/config.ent.in'), output: 'config.ent', configuration: other_conf)

As the src/ directory has been defined as a resource path for vendoring external projects, it cannot also contain primary project resources (in this case config.ent.in) as it breaks the sandbox model. This likely should never have worked, but apparently hit a codepath that was never validated. Due to internal refactoring in Meson, this now behaves like other inputs.

Originally reported in https://bugs.gentoo.org/854195

Placement issue with Sway

I was able to compile eventd with the Wayland backend on my Arch installation running the latest swaywm (here is the meson-log output relevant to the Wayland backend. However, running eventdctl nd backends still only shows xcb and eventdctl nd switch wayland $WAYLAND_DISPLAY results in event notifications not showing anything. On top of that I'm noticing that running with the xcb backend, notifications grab focus from the currently focused window. I also have a second display plugged in (running off a laptop in clamshell mode) and the notification is positioned relative to the laptop's display, not the external one.

I'm assuming the latter issue is due to not being able to use the Wayland backend. I'm also assuming that the Wayland backend is not working because Sway does not implement your notification area protocol. Can you help me verify if those assumptions are correct or if it should work and maybe there's another issue?

Thanks!

EDIT: Is there a reason now not to use the WLR layer shell spec instead? That seems like the ideal way to implement notifications that would be compatible with the most compositors (anything built on wlroots for a start).

systemd unit broken (eventd-git arch linux)

I cannot seem to get the systemd unit to work under arch linux with the eventd-git package from AUR.

I get the following output:

# aaa at noctis in ~ 
→ systemctl status eventd.service
● eventd.service - eventd
   Loaded: loaded (/usr/lib/systemd/system/eventd.service; indirect; vendor preset: disabled)
   Active: failed (Result: exit-code) since Mon 2018-02-26 16:07:50 CET; 7s ago
     Docs: man:eventd(1)
           man:eventd.conf(5)
           https://www.eventd.org/
  Process: 8812 ExecStart=/usr/bin/eventd --listen systemd --system (code=exited, status=217/USER)
 Main PID: 8812 (code=exited, status=217/USER)

Feb 26 16:07:50 noctis systemd[1]: Starting eventd...
Feb 26 16:07:50 noctis systemd[8812]: eventd.service: Failed to determine user credentials: No such process
Feb 26 16:07:50 noctis systemd[8812]: eventd.service: Failed at step USER spawning /usr/bin/eventd: No such >
Feb 26 16:07:50 noctis systemd[1]: eventd.service: Main process exited, code=exited, status=217/USER
Feb 26 16:07:50 noctis systemd[1]: eventd.service: Failed with result 'exit-code'.
Feb 26 16:07:50 noctis systemd[1]: Failed to start eventd.

Add meta plugin support

With bindings, plugins will need to go and find other plugins to work properly (eventd shouldn't know how to load a Ruby or Python plugin). Instead, a single Python plugin should have functions which go off and find Python modules which are plugins.

My idea is to have 3 symbols which are functions: one which returns a list of ids, another to get the context for an id and another for the get_interface function. The problem is that some state needs to be passed to the get_interface function (or some global state needs to be tracked ugh). Maybe better would be to pass a function which the meta plugin calls to register the plugins it finds back with the server? Unloading will also be interesting since the module can't be closed until all children plugins have been dealt with.

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.