Giter VIP home page Giter VIP logo

spaceline-all-the-icons.el's Introduction

Installation | Usage | Customization | Debugging

Installation

You should be able to install this package in the standard way, add it to the load path and then calling

(package-install 'spaceline-all-the-icons)

(require 'spaceline-all-the-icons)
;; or
(use-package spaceline-all-the-icons)

N.B. This package is highly dependent on all-the-icons.el, so make sure you have the fonts installed correctly

Usage

The simplest way to use this package is to set the mode-line-format to be the spaceline-all-the-icons theme or by calling spaceline-all-the-icons-theme

(use-package spaceline-all-the-icons 
  :after spaceline
  :config (spaceline-all-the-icons-theme))

Optional dependencies

There are a few segments that require optional packages and custom setup functions in order to run. Calling these two functions in your setup/config will enable the segments.

(spaceline-all-the-icons--setup-anzu)            ;; Enable anzu searching
(spaceline-all-the-icons--setup-package-updates) ;; Enable package update indicator
(spaceline-all-the-icons--setup-git-ahead)       ;; Enable # of commits ahead of upstream in git
(spaceline-all-the-icons--setup-paradox)         ;; Enable Paradox mode line
(spaceline-all-the-icons--setup-neotree)         ;; Enable Neotree mode line

Customization

The mode line is broken down into segments, where each segment can be toggled on or off independently.

Also, some of the segments have icon sets associated with them and can be modified to your taste.

You can see all of these options by calling

M-x customize-group spaceline-all-the-icons

Custom Segments

You can add your own custom segments to the theme by installing it using the spaceline-all-the-icons-theme function and passing the segment symbols as arguments.

(spaceline-all-the-icons-theme 'your-segment-symbol "Hello" 'etc)

These segments will appear in order on the right side of the mode line, in the empty middle section before all other right aligned segments.

Disabled Segments

Some segments are disabled by default you can turn them on by calling the following in your :config

(spaceline-toggle-all-the-icons-SEGMENT-on)
Segment Description
bookmark Indicates whether the current file is Bookmarked
dedicated Indicates whether the current file is dedicated
fullscreen Indicates whether the frame is Fullscreen
buffer-position Indicates the position through the buffer as a percentage
narrowed Indicates whether the current buffer has been narrowed

Icon Sets

The following segments can have their icon sets customized. You can choose these by calling the following or setting it in :config

M-x customize-group spaceline-all-the-icons-icon-set

(setq spaceline-all-the-icons-icon-set-modified 'toggle)

These segments can have one of the following icon sets

Segment Available Icons
modified chain, toggle, circle
bookmark bookmark, heart, star
dedicated pin, sticky-note
window-numbering circle, solid, string, square
eyebrowse-workspace circle, solid, string, square
multiple-cursors caret, pointer
git-stats diff-icons, arrows
flycheck-slim solid, outline, dots
sun-time rise/set, sun/moon, arrows

Separators

You can customize the divider separators using spaceline-all-the-icons-separator-type, the available types are: 'slant, 'arrow, 'cup, 'wave, 'none

You also have two types of separators between individual segments, these are spaceline-all-the-icons-primary-separator & spaceline-all-the-icons-secondary-separator. Their defualt values are | & ยท respectively.

Debugging

When a segment throws an error in Spaceline, this causes the entire mode line to disappear (be blank), this is since the mode-line-format throws an error.

Spaceline unfortunately hides a lot of errors internally and doesn't given you information as to which segment is throwing an error.

To debug this, try running

M-x spaceline-all-the-icons--debug-segments
C-u M-x spaceline-all-the-icons--debug-segments

This will (should) return a list of segments which are throwing errors and will help me to debug any issues you're having!

Calling it with a C-u prefix will (should) disable the segments that are currently erroring so that at least the mode line will work.

โ–ฒ back to top

spaceline-all-the-icons.el's People

Contributors

alexmurray avatar domtronn avatar jwintz avatar liupai avatar mattiasb 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

spaceline-all-the-icons.el's Issues

Invalid face attribute spam

I get a lot of this in my *Messages* buffer:

Invalid face reference: unknown?
Invalid face reference: if
Invalid face attribute :height (\, (spaceline-all-the-icons--height 0.8))
Invalid face reference: `
Invalid face attribute :family (\, (all-the-icons-faicon-family))
Invalid face reference: unknown?
Invalid face reference: if

Any idea what they are?

Clock Icon should only be included in Fullscreen Frames

(Quoted from @jwintz #7)

the clock icon: I used to use your fonts, with the awesome all-the-icons in my previous setup in various places but since I didn't plan on getting weather forecast in my editor, I skipped the weather once. Now it is fixed, and I have my beautiful clock, however, I think this segment should only be display when the current frame is fullscreen.

Separator icons not aligning properly

Hello,

I'm having an issue where the separator icons don't align to the mode-line properly. This happens regardless of the separator icons I use. If you have have any suggestions how I can resolve that issue it would be greatly appreciated. It's most prominent on the right most icons, but you can see it on all of the left ones as well.

This is on Emacs 26.0.50 on macOS Sierra (10.12.5).

image

Diminish/Minor Mode Segment

Spaceline comes with a diminish/minor mode segment (see here)

It would be nice to reproduce this behaviour in spaceline-all-the-icons theme. As a minimum, could just copy the implementation/use the Spaceline segment directly, but any ideas for ways to use the icon fonts instead would be great.

(referenced in #15)

Add custom segments with callback

I want to add a segments displaying file encoding:

  (spaceline-all-the-icons-theme 'file-encoding
                                 (lambda () (format "%s" buffer-file-coding-system))
                                 'etc)

But the code can not work.

But I try:

 (spaceline-all-the-icons-theme 'file-encoding
                                 (lambda () "hello")
                                 'etc)

Work well.

Multiple Cursor Segment

Quoted from domtronn/all-the-icons.el#34

One more segment could be for the number of multiple cursors. I've minor-mode lighters disabled in spaceline. So, I've no way of knowing how many multiple cursors I've.

Add a segment to indicate the number of multiple cursors active when multiple cursors are in use, and not being displayed as part of diminished mode.

spaceline helm and info mode change modeline height

  (spaceline-helm-mode +1)
  (spaceline-info-mode +1)

Provide a custom modeline to display various information when using helm or info.

The modeline actually reduces its height using these modes. Also, separators seem mandatory for it to display nicely.

screen shot 2017-04-20 at 16 56 18

How to custom font size

I found spaceline height is relatively high but inside the font is very small,
how should i configure the font size?

Window Numbering error when using Square Icon Set

(Quoted @jwintz #7)

using (setq spaceline-all-the-icons-icon-set-window-numbering (quote square)), breaks the modeline rendering when window number exceeds one: Invalid face attribute :background nil Invalid face attribute :foreground nil Error during redisplay: (eval (spaceline-ml-all-the-icons)) signaled (wrong-type-argument listp (:height 1.2 :inherit)) [24 times]

seems to be window-number error

When I place my cursor on the mode line and hold it still, the entire mode line disappear just as described in the README section. It will come back if I switch to mini buffer by M-x, so I have to bind the spaceline-all-the-icons--debug-segments to a key binding to avoid activating the mini buffer (Little trick can be added to README).
Here's the error message:
Error during redisplay: (eval (spaceline-ml-all-the-icons)) signaled (wrong-type-argument number-or-marker-p nil) [5 times]
Here is what I got from --debug-segments:
spaceline-all-the-icons--debug-segments: Errors found in Spaceline Segments: [window-number]Error during redisplay: (eval (spaceline-ml-all-the-icons)) signaled (wrong-type-argument number-or-marker-p nil)
By the way, I am currently running Emacs 25.2.

Performance issues on Windows

Hi,

When activating spaceline-all-the-icons on Windows (10) I get really slow performance. Just moving the cursor in the scratch buffer is slow.

No such problems on my Linux machine.

I'm using Emacs 25.1 in both cases.

Any idea what could cause this?

Mode line is broken

Neither active nor inactive modelines work. The *Messeges* buffer shows these:

Error during redisplay: (eval (spaceline-ml-all-the-icons)) signaled (void-function caddr) [7 times]
user-error: No operations specifiedError during redisplay: (eval (spaceline-ml-all-the-icons)) signaled (void-function caddr)
Error during redisplay: (eval (spaceline-ml-all-the-icons)) signaled (void-function caddr) [21 times]

Fragmented clock separator

Yo @domtronn! ๐Ÿ‘‹

Thanks for spaceline-all-the-icons - it really is very pretty.

Got a tiny issue that's bugging me - admittedly more than it should be.
On the right side of my modeline, where my clock sits: the separator is fragmented.

Take a look:

Any ideas how I can fix this? Everything else looks so pristine!

Environment info:

  • Emacs version: GNU Emacs 25.2.1 (x86_64-apple-darwin15.0.0, NS appkit-1404.13 Version 10.11.1 (Build 15B42)) of 2017-05-24 (from Nix)
  • spaceline-all-the-icons package version: 20170719.131
  • spaceline package version: 20170630.2327
  • Theme: doom-one from hlissner/emacs-doom-themes
  • Relevant part of Emacs config (see Theme & Modeline)

Git branch segment

Hi Dom,

I have both:

  (spaceline-toggle-all-the-icons-vc-status-on)
  (spaceline-toggle-all-the-icons-git-status-on)
  (spaceline-toggle-all-the-icons-vc-icon-on)

But there is no way for me to get the current branch name as a segment, even though additions and deletions show up just fine.

Huge powerline height by default

By default the powerline-height is set to 22 on spacemacs. Setting it back to 1 solve this but if this theme would have a good default for it this will be great.
screen shot 2017-04-14 at 10 11 21

Separators look wrong

Hi (again!) :)

When using certain themes, the separators look wrong:

image

This example uses gotham-theme.

I don't know if this is a powerline issue, a spaceline issue or a spaceline-all-the-icons issue. Maybe you do?

Current org-mode clocked in task segment

Something like the following:

(spaceline-define-segment all-the-icons-org-clock-current-task
              "An `all-the-icons' segment to display the current org-clock task."
              (let ((face `(:height ,(spaceline-all-the-icons--height 0.9))))
                (propertize
                 (concat
                  (propertize (all-the-icons-faicon "check-circle" :v-adjust 0.1)
                              'face `(:height ,(spaceline-all-the-icons--height 1.1) :family ,(all-the-icons-faicon-family)))
                  (propertize (concat " " org-clock-current-task)
                              'face face
                              'display '(raise 0.1)))
                 'help-echo "Go to task"
                 'mouse-face (spaceline-all-the-icons--highlight)
                 'local-map (make-mode-line-mouse-map 'mouse-1 #'org-clock-goto)))
              :when (and active
                         org-clock-current-task))

Where it should go? Probably before the weather segment since is more static info which seems to reside on the RHS rather than the LHS.

Requesting help installing in spacemacs

EDIT: Figured it out!

I just had to run `SPC SPC configuration-layer/update-packages.

Leaving this here for ...posterity? Helping any others who might be in the same boat...


Hello, hello!

I stumbled across your spaceline tonight and it looks awesome. I've spent about the last 1.5 hours getting it to work with my spacemacs and I'm feeling like perhaps I've got something in my .spacemacs that could be conflicting with it. If you have time to lend a hand that would be great!

Here's what I've tried.

  • SPC SPC Package install -> search for your package and install it (both all-the-icons and spaceline-all-the-icons).
  • add your packages to my `additional packages like so:
   dotspacemacs-additional-packages '(js-import centered-window-mode all-the-icons spaceline-all-the-icons base16-theme)
  • SPC SPC spaceline-all-the-icons-theme (see screenshot)

screenshot 2017-05-12 23 59 31


so None of the above seemed to work for me, so I also just tossed this from your readme into my user-config

  (package-install 'spaceline-all-the-icons)

  (require 'spaceline-all-the-icons)
  (use-package spaceline-all-the-icons
    :after spaceline
    :config (spaceline-all-the-icons-theme))

but at this point I have no idea what I'm doing!

Thanks for any help, and let me know if I can provide any more information.

๐Ÿ‘

Separator position and height

Hello,

I've played with custom faces in order to get a coloured space line with doom-theme-one, but for one reason, the right-most hand separator is not in the good place is its height is a little bit smaller than expected.

Any clue ?

screen shot 2017-05-22 at 20 25 55

Major Mode Segment

(Quoted from @jwintz #7)

And as a last point, M-x space line-toggle-major-mode-on does have any effect whatsoever. Miss it.

Segments colours are messed up using custom themes

Hello,

Great package ! Was waiting for it to get rid of my custom spaceline config ;-)

I've been giving a shot at your package, together with doom-theme-one.

They do not fit well, in that sense that segments are not coloured. Is there a specific face to set up ?

Also, I am quite surprised that projectile, and file name come as a single segment.

Finally, using doom-theme, the wave segment is not rendered correctly. I do not see anzu working whatsoever, and the clock icon is wrong. Here's the setup:

(use-package spaceline-all-the-icons
  :after spaceline
  :config
  (spaceline-all-the-icons-theme)
  (spaceline-all-the-icons--setup-anzu)
  (spaceline-all-the-icons--setup-package-updates)
  (spaceline-all-the-icons--setup-paradox)
  (spaceline-all-the-icons--setup-neotree)
  (setq spaceline-all-the-icons-flycheck-alternate t)
  (setq spaceline-all-the-icons-highlight-file-name t)
  (setq spaceline-all-the-icons-separator-type (quote wave)))

screen shot 2017-04-16 at 19 56 01

Cheers,

  • ju

Split frame causes active modeline to "hide" middle part

When I am splitting the frame (i.e. C-x 3), the active modeline (on the right) looks like this:

emacs-modeline

So the name part and the major modes get lost. Actually it looks like an involuntary application of the behavior for the inactive modeline on the left side.

Failure to render when git status has changes

Error during redisplay: (eval (spaceline-ml-all-the-icons)) signaled (error "Unknown upattern `(quote deleted)'") [9 times]
QuitError during redisplay: (eval (spaceline-ml-all-the-icons)) signaled (error "Unknown upattern `(quote deleted)'")

I'm unable to insert the deleted icon with all-the-icons-insert as well. If that matters?

Time is displayed, but not date

I hope I am not missing something obvious, but I am unable to display the date in the modeline. I have turned on display-time-mode:

(display-time-mode 1)
(setq display-time-day-and-date t)

...but all I see is the time. Am I missing something obvious? Other themes (like powerline-default-theme) display the date nicely.

Git Ahead Segment - Error when no upstream set for git repo

Hi!

When I open a file in a git repo without any upstream set I get this error:

Error during redisplay: (eval (spaceline-ml-all-the-icons)) signaled (error "Running git --no-pager log --no-color --graph --decorate --date=short --... --abbrev-commit @{upstream}..HEAD ....FAILED (status 128)") [5 times]

Running the git command in a terminal yields this response:

$ git --no-pager log --no-color --graph --decorate --date=short --... --abbrev-commit @{upstream}..HEAD
fatal: no upstream configured for branch 'my_branch'

battery face

I'd like the fancy-battery face to use different colors than the default (I'm using the solarized color theme). The following worked for my old spaceline cofig:

 (use-package fancy-battery
    :init 
    (fancy-battery-mode)
    :config
    (setq-default battery-update-interval 10)
    (set-face-attribute 'fancy-battery-charging nil 
    :foreground "dark blue" :weight 'bold)
    (set-face-attribute 'fancy-battery-discharging nil 
    :foreground "dark magenta" :weight 'bold)
    (set-face-attribute 'fancy-battery-critical nil 
    :foreground "dark red" :weight 'bold))

But this doesn't seem to be working with spaceline-all-the-icons. Any ideas?

README/doc issue

README says spaceline-all-the-icons-separators-type
shouldn't this be spaceline-all-the-icons-separator-type?

Option to use paradox

Thanks for this great looking modeline! While it has built-in support when using paradox for handling the package interface, the built-in display of updates and using that to update does not use paradox. Could there be an option for that?

Text Scale segment throwing error

(Quoted from @jwintz #7)

text-scale works fine whenever you increase or decrease the text scale. By default the modeline does not render anything with the following message: Error during redisplay: (eval (spaceline-ml-all-the-icons)) signaled (void-variable text-scale-mode-lighter) [36 times]

slow performance when opening a file with tramp

It seems related to s-a-t-i because I have no performance problems when using plain modeline, and tramp together.

I did some profiling. It seems some functions are called a lot. Shouldnt it be possible to improve performance with memoization for instance? Failing that, can I disable spaceline-all-the-icons--buffer-path perhaps?

  • redisplay_internal (C function) 27726 56%
  • eval 27723 56%
  • spaceline-ml-all-the-icons 27721 56%
  • spaceline-all-the-icons--buffer-path 22453 45%
    - projectile-project-root 22404 45%
    • cl-some 22232 45%
    • #<compiled 0x599ded3> 22232 45%
    • file-remote-p 172 0%
      + file-truename 30 0%
      + file-name-directory 12 0%
      replace-regexp-in-string 3 0%
      split-string 2 0%
      getenv 1 0%
  • projectile-project-p 5221 10%
  • powerline-raw 14 0%
  • all-the-icons-icon-for-mode 8 0%
  • spaceline-all-the-icons--face-background 7 0%
  • file-name-nondirectory 4 0%
  • spaceline-all-the-icons--highlight 3 0%
  • spaceline-all-the-icons--flycheck-status 2 0%
    all-the-icons-faicon 2 0%
    make-mode-line-mouse-map 1 0%
  • spaceline-all-the-icons--separator 1 0%
  • #<compiled 0x447507> 2 0%
  • command-execute 12290 24%
  • ... 8961 18%
  • timer-event-handler 200 0%
  • tramp-file-name-handler 1 0%

Improve documentation on Segment Behaviour

(Quoted @jwintz #7)

package icons shows up just fine after M-x package-refresh-contents, which makes sense, otherwise it would slow down the startup process
...
text-scale works fine whenever you increase or decrease the text scale. By default the modeline does not render anything

This package on windows

Does anybody have experience with using this package on windows?

I can display this file just fine, so I do have a unicode-enabled font:
http://ergoemacs.org/emacs/unicode.txt

However i cant see any of the icons this theme provides.

If its not supposed to work on windows anyway this can be closed, but it looks so good so i have to ask.

Narrowed Segment

(quoted from domtronn/all-the-icons.el#34)

EDIT: also, you might want to add a segment which indicates when a buffer is narrowed:

   (spaceline-define-segment narrow
     "Display Narrowed when buffer is narrowed."
     (when (buffer-narrowed-p)
       "narrow"))

Add a segment to show when a buffer has been Narrowed

nyan-mode segment

Hi,

First, thank you for the work. This mode line theme is awesome!
However I didn't see any nyan-mode segment in the source code. Is it currently not supported?

Do you have any plans to include a nyan-mode segment into this theme any time soon?

Cheers,

Allow Additional Segments to be added to the theme

(Quoted from @jwintz #7)

I used to declare many additional segments without having to care about their backround color. See jwintz/prolusion@84d80f1#diff-c924d4a72c2aa8a2b67300e06ef9485b, which were added tp space line's default config as such:

(spaceline-spacemacs-theme 'prolusion-mode-icon 'prolusion-narrow 'prolusion-conda-environment 'prolusion-upgrades-count)

Could it still be done with ?

(spaceline-all-the-icons-theme <ADDITIONAL SEGMENTS>)

Loading spaceline-all-the-icons takes a long time

On my machine requiring and calling (spaceline-all-the-icons-theme) takes ~3 seconds, which is a lot longer than e.g. (spaceline-spacemacs-theme).

Would it perhaps be possible to optimize spaceline-all-the-icons so that its impact on init is reduced?

Error message: void-function all-the-icons-icon-family

Hi again,

For some files I get the following error message (and a blank status line):

Error during redisplay: (eval (spaceline-ml-all-the-icons)) signaled (void-function all-the-icons-icon-family) [9 times]

This happened for my .org file containing my task list.

Perspective Mode Segment

(Quoted from @jwintz #7)

Another remark: I'm using persp-mode for perspectives, and seems not to be handled by spaceline-all-the-icons, but is in space line, so I am confused. And in order for it not to mess up the modeline, it needs to be require'd before the ui stuff (which is where I have the spaceline-all-the-icons) setup. Window numbering however forks just fine ;-)

;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Worspaces requirements
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(prolusion/require-package 'persp-mode)
(prolusion/require-package 'window-numbering)
(prolusion/require-package 'all-the-icons)

;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Workspaces setup
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(when (display-graphic-p)
  (window-numbering-mode +1))

(when (display-graphic-p)
  (setq persp-auto-save-fname (expand-file-name "prolusion-perspective" prolusion-save-dir))
  (setq persp-save-dir prolusion-save-dir)
  (setq persp-nil-name (all-the-icons-octicon "dash" :height 0.9 :v-adjust 0.0))
  (custom-set-variables
   '(persp-auto-resume-time -1)
   '(persp-auto-save-opt 0)
   '(persp-keymap-prefix (kbd "C-c w")))
  (persp-mode +1))

Missing info and unable to customize spaceline

I have installed spaceline, all-the-icons and spaceline-all-the-icons and configured it:

emacs

As can be seen in the image the icons themselves seem to work but there are a lot of info missing in the mode line; version control, encoding etc. In the configuration I have specified to use "arrow" as separator but it's clearly not arrow that is used. Have I configured the packages incorrectly?

Regards, Micke.

Customise location of certain widgets

(Quoted from @jwintz #7)

Also, If I ike your HUD segment, I would like to customise it to be on the right-most place, as it is done in spaceline default setup (I do not use Spacemacs, which is however awesome).
...
Could it also be possible to have buffer current position (line and column segment) on the right ?

ERC Track Segment

(quoted from domtronn/all-the-icons.el#34)

And the erc-track segment just indicates the name of the irc channel whenever someone mentions your nick in an active erc channel in emacs.
Eg: if I've opened #emacs in erc and if my nick gets mentioned, #emacs would be shown in the spaceline segment

Add a segment which displays the erc-track value.

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.