Git Product home page Git Product logo

i3's Introduction

Build Status Issues Forks Stars

i3-gaps

Project status

⚠️ ⚠️ ⚠️

The i3-gaps project has been merged with i3. All i3-gaps features will become available with i3 4.22 (not released yet at the time of writing this).

Package maintainers are asked to replace any i3-gaps packages with the i3 package once i3 4.22 has been released. This repository will be archived and no longer be kept up to date.

What is i3-gaps?

i3-gaps is a fork of i3wm, a tiling window manager for X11. It is kept up to date with upstream, adding a few additional features such as gaps between windows (see below for a complete list).

i3

How do I install i3-gaps?

Please refer to the wiki.

Where can I get help?

For bug reports or feature requests regarding i3-gaps specifically, open an issue on GitHub. If your issue is with core i3 functionality, please report it upstream.

For support & all other kinds of questions, you can ask your question on GitHub Discussions.

Features

i3

gaps

Note: In order to use gaps you need to disable window titlebars. This can be done by adding the following line to your config.

# You can also use any non-zero value if you'd like to have a border
default_border pixel 0

Gaps are the namesake feature of i3-gaps and add spacing between windows/containers. Gaps come in two flavors, inner and outer gaps wherein inner gaps are those between two adjacent containers (or a container and an edge) and outer gaps are an additional spacing along the screen edges. Gaps can be configured in your config either globally or per workspace, and can additionally be changed during runtime using commands (e.g., through i3-msg).

Note: Outer gaps are added to the inner gaps, i.e., the gaps between a screen edge and a container will be the sum of outer and inner gaps.

Configuration

You can define gaps either globally or per workspace using the following syntax. Note that the gaps configurations should be ordered from least specific to most specific as some directives can overwrite others.

gaps [inner|outer|horizontal|vertical|top|left|bottom|right] <px>
workspace <ws> gaps [inner|outer|horizontal|vertical|top|left|bottom|right] <px>

The inner and outer keywords are as explained above. With top, left, bottom and right you can specify outer gaps on specific sides, and horizontal and vertical are shortcuts for the respective sides. <px> stands for a numeric value in pixels and <ws> for either a workspace number or a workspace name.

Commands

Gaps can be modified at runtime with the following command syntax:

gaps inner|outer|horizontal|vertical|top|right|bottom|left current|all set|plus|minus|toggle <px>

# Examples
gaps inner all set 20
gaps outer current plus 5
gaps horizontal current plus 40
gaps outer current toggle 60

With current or all you can change gaps either for only the currently focused or all currently existing workspaces (note that this does not affect the global configuration itself).

You can find an example configuration in the wiki.

Smart Gaps

Gaps can be automatically turned on/off on a workspace in certain scenarios using the following config directives:

# Only enable gaps on a workspace when there is at least one container
smart_gaps on

# Only enable outer gaps when there is exactly one container
smart_gaps inverse_outer

Smart Borders

Smart borders will draw borders on windows only if there is more than one window in a workspace. This feature can also be enabled only if the gap size between window and screen edge is 0.

# Activate smart borders (always)
smart_borders on

# Activate smart borders (only when there are effectively no gaps)
smart_borders no_gaps

Smart Edge Borders

This extends i3's hide_edge_borders with a new option. When set, edge-specific borders of a container will be hidden if it's the only container on the workspace and the gaps to the screen edge is 0.

# Hide edge borders only if there is one window with no gaps
hide_edge_borders smart_no_gaps

i3bar

Bar Height

The height of an i3bar instance can be specified explicitly by defining the height key in the bar configuration. If not set, the height will be calculated automatically depending on the font size.

bar {
    # Height in pixels
    height 25
}

i3's People

Contributors

9ary avatar acrisci avatar adaephon-gh avatar airblader avatar ammgws avatar bapt avatar bitonic avatar cybershadow avatar d912e3 avatar dcoppa avatar deiz avatar elsbrock avatar fernandotcl avatar hwangcc23 avatar jolange avatar knopwob avatar loblik avatar maikf avatar merovius avatar mh21 avatar mihaicmn avatar nmschulte avatar orestisfl avatar pbui avatar psychon avatar sardemff7 avatar shdown avatar stapelberg avatar stlukey avatar xzfc 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  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

i3's Issues

Using i3-gaps with i3blocks causes flickering in i3bar

Hi again

I saw you made an issue on the i3 github repo completely by chance as I was installing i3blocks (and i3-gaps of course) to my laptop, but I don't know whether the issue lies within i3blocks or i3-gaps. I've been an avid user of i3blocks and actually talked to Vivien about using it with your fork a little while abck. I was very kindly given instructions to add a few lines to the i3blocks file block.h and then compile:

http://pastebin.com/wbgZFZar (this is line 39-59 in block.h)

and now i3blocks works with your fork, however, when I use the border options you added, it causes -very- annoying flickering multiple times a second independently of my interval settings it my i3blocks.conf, and the issue didn't seem to be with i3blocks.

Is this something on my end or is it a bug in i3-gaps?

Regardless, I at least hope the block.h file modification is useful to you anyway.

Thanks!

Titlebar for all floating windows

Is there a way to allow floating windows to have a titlebar? I find it useful for moving around dialog windows that pop up at a strange location, or are at the large side. Alternately, can I let all floating windows appear in a corner? Or perhaps, how do you manage this?

I have not found that you can set a for_window to target floating windows and my apologies if here is not the right place to ask this. And of course, thanks for your kind time. ^_^

Gap between containers double as big as between container and edge of screen/panel

I don't know if this is a bug or an intended feature, but it would be nice to be able to do something about it.

If I have, say, gap_size = 10, then the gap_size between container A and B will total 20, whereas the gap_size between a container and the edge of the screen will be 10. Would be nice to have consistency, so gap_size = 10 would be 10 everywhere.

Here's a crappy picture for reference:
http://imgur.com/XiHoLXH

Thanks

Open workspaces with correct names on startup

This is an i3 "bug", so if fixed, this should be submitted to i3 as well, though it may not be accepted there.

If workspaces are named, i3 on startup opens one workspace per output, but they are labelled "1", "2" and so on. Can this be fixed by actually giving workspaces names in the i3 config?

More than one color per block

This will remove the necessity to combine multiple blocks which is awkward and verbose.

Syntax could be

full_text: "${#ffffff}Text"

Keep all workspaces open

This is against i3's philosophy, so it definitely won't be accepted as a patch there. But (optionally!) keeping empty workspaces may be an idea.

Enhancement: Add ability to resize outer gap horizontaly or vertically

Hi, first time adding a feature request on github... accidantely pushed enter too early.

Just wanted to mention that it would be cool if there was a way to specify the vertical outer gap seperatly to the horizontal. It's possible in xmonad, and I find it quite usefull for having my two conky windows visible in one layout.

screenshot

Improve gap_size

The current branch "feature-configurable-gaps" contains a fix to change the gap size without having to open a container to cause the rerender.

It would be nice to also have some command like gap_size plus 5.

Smart gaps?

Presently, inner gaps are still applied if there is only one container on the screen even if smart_borders is enabled. This seems counter to the definition of inner gaps as a sort of transparent window border (gaps between containers) while outer gaps are a padding around the edge of the screen.

smart_borders on should hide inner gaps (i3 looks ugly with modest gaps if only one window is open).

Gaps misbehave when fullscreening a split container

Given a "H" layout where the right container is a "V" layout with two containers
When selecting the "V" container
And going fullscreen
Then the gaps from the left window in the "H" container are still considered.

Not really essential or anything since it's probably an unusual workflow; shouldn't be hard too fix, though.

Mouse movement should set focus

Imagine two containers with the mouse being over container 1 and that container being focused. Now switch the workspace, move the mouse so that it would, in theory, be over container 2, and switch back to the first workspace.

Container 1 is still focused and focus will only change on a click or when leaving the container and entering it again. Not updating the focus when switching the workspace is fine, but once the mouse starts moving, it'd be nice to set the focus.

Text not aligned properly horizontally

Hi again

I don't know if the issue is on my end, but I just reinstalled Arch and set up my wm. The usual routine etc.

Now, after a reboot, the text in my i3bar (but not the icons) are not centered horizontally and it's driving me nuts. I usually use i3blocks but I also tested with i3status to make sure:

i3status:
http://imgur.com/uNJTV2q

i3blocks:
http://i.imgur.com/uKP8yJ5.png

Have I done something wrong or is this a bug?

Thanks a lot!

Inner gaps leave bar at the top of the screen undrawn

This seems to be the spot that would normally be occupied either by a titlebar or i3bar. I am running without i3bar and gaps inner 30. The bar in the image is BAR; looks the same (except the weird area starts at the top of the screen) with BAR at the bottom.

Persistent container Proposal

This is comparably a huge feature to implement, but something I would find really useful:

fixed size containers that stay open even without children and that allow clients to be assigned to (in a similar fashion to workspaces).

This would allow side-by-side development with graphical applications that need to be restarted when iterating a lot.

[Feature request] Toggle split direction

There are split horizontal and split vertical that change the orientation of the current workspace. There seems to be missing split toggle, though. My use case is as follows:

  1. The desktop is blank.

  2. I open a new window, 1, so it has one container.

  3. I open another window, 2. The container changes like this:

    ### ###
    #1# #2#
    ### ###
    

    ...and the focus is given to 2.

Now I'd like to press a hotkey that figures the current orientation for 2's container, and changes it, so that when I open a new window, 3,

  1. I get this:

    ### #2#
    #1#
    ### #3#
    

    instead of this:

    ## ## ##
    #1 #2 #3
    ## ## ##
    
  2. I don't have to figure which key to press now to change the current orientation (which would be required if I used split h|v).

I'm aware that there is layout toggle split, but it acts on already opened windows, rearraging the whole layout. What I want is to change the orientation property "behind the scenes", so that it will only become visible after I actually open a new window.

I apologize if this feature is already implemented; I searched the manual and experimented with config but I just couldn't figure out a way to do what I described.

Window titel disbehaves when either gaps !=0

Hey,
I just tried this fork for the fist time via AUR.
When I activate gaps, the window titles (most times) dissappear and leave some garbage on top where the gap should be. (Pictures above).
Sometimes it appears but with a gap between title and window.
It just appears if either inner or outer is set to a value != 0, so it isn't a general bug as I think.
It also appears in both gaps and gaps-next branches.
For floating windows it is always working as it should.

With inner 10 and outer 5:
Imgur
With inner 0 and outer 5:
Imgur
With inner 10 and outer 5:
Imgur
And finally with inner 0 and outer 0
Imgur
I made the backgound red, to see what is bg and what is garbage.
new_window and new_float is always set to normal
For none or pixel it is also working as it should.

Build fails on ArchLinux

When building i3-gaps-git from the AUR, the build process fails at ipc.c with the following error(s):

[i3] CC src/ipc.c
In file included from ../i3/src/ipc.c:13:0:
../i3/src/ipc.c: In function ‘handle_get_version’:
include/yajl_utils.h:17:53: error: expected expression before ‘)’ token
 #define y(x, ...) yajl_gen_ ## x (gen, ##__VA_ARGS__)
                                                     ^
../i3/src/ipc.c:741:5: note: in expansion of macro ‘y’
     y(integer, MAJOR_VERSION);
     ^
include/yajl_utils.h:17:53: error: expected expression before ‘)’ token
 #define y(x, ...) yajl_gen_ ## x (gen, ##__VA_ARGS__)
                                                     ^
../i3/src/ipc.c:744:5: note: in expansion of macro ‘y’
     y(integer, MINOR_VERSION);
     ^
src/i3.mk:36: recipe for target 'src/ipc.o' failed

The same occurs when building from a cloned repository.

Activate smart borders only if there are no gaps

Hi again

It would be wonderful to have smart border to only activate if there are no gaps. A single window with gaps looks silly without borders.

I don't know the scope of this project, though; whether if would be feasible to implement.

Make gap_size configurable per workspace

This is a placeholder issue for this topic. Some thought will have to go into how this should work exactly. Also, ideally, this is integrated into the restore layout feature.

Indicator does not respect fading

The indicator of a faded terminal is not faded. This is an i3 bug, IMHO, and if I fix it, I'll submit it there. This ticket is just a reminder for me.

Set gaps on a per-output basis

I recently acquired a second, larger monitor and it would be nice to set the inner/outer gaps seperately for each output, not for a workspace (so I can have larger gaps and some outer gaps on the larger monitor).

I don't really know whether and how that would fit into the current protocol, if you don't think it's fitting then I will have to consistently assign my workspaces to my outputs.

fix tabbed view+shadows

i'm not sure if there's a work-around here, but how easy would it be to fix the issue with shadows and tabbed view? notice how the shadows are darker around the entire tabbed frame because it's considered four separate windows, so the shadows stack. also, shadows are drawn from the window title
screenshot

smart_gaps just for specific workspaces?

Thank you for this repo, it's been great, one thing though, is it possible to assign smart_gaps only for certain workspaces?

As in

smart_gaps off
workspace 1 smart_gaps on

Resize containers per mouse in both x and y direction

I know this is probably pretty far fetched, but it's a pretty cool feature and the only thing I miss in i3 after using this fork.

In bspwm it's possible, when using $mod+ Right Click, to manipulate both the x axis and the y axis at once, whereas i3 only allows the manipulation of one axis.

Example:
http://youtu.be/U17CLayt_aA?t=14s (14 seconds in)

Would this be possible to implement?

cannot exit i3

I try using $mod+shift+e
then I attempt to click "yes, exit i3"
nothing happens
however I can hit the close button

i have trouble compiling it

when i try compiling with make && sudo make install, i get following output:

fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
[i3] CC src/ipc.c
In file included from ../i3-gaps/src/ipc.c:13:0:
../i3-gaps/src/ipc.c: In function ‘handle_get_version’:
include/yajl_utils.h:17:50: error: expected expression before ‘)’ token
#define y(x, ...) yajl_gen_##x(gen, ##VA_ARGS)
^
../i3-gaps/src/ipc.c:822:5: note: in expansion of macro ‘y’
y(integer, MAJOR_VERSION);
^
include/yajl_utils.h:17:50: error: expected expression before ‘)’ token
#define y(x, ...) yajl_gen_##x(gen, ##VA_ARGS)
^
../i3-gaps/src/ipc.c:825:5: note: in expansion of macro ‘y’
y(integer, MINOR_VERSION);
^

why does this happen, or how could I fix it?

Installing i3-gaps on Ubuntu 15.04 ends up with broken installation

What it says on the tin. Some commands(such as Alt+D) cause the error status_command not found or is missing a library dependency, and the configuration file does not write to ~/.i3 after you are asked to generate a config file.

How i installed:

git clone https://www.github.com/Airblader/i3 i3-gaps
cd i3-gaps
git checkout gaps && git pull
make 
make install

Dependencies installed:

libxcb1-dev libxcb-keysyms1-dev libpango1.0-dev libxcb-util0-dev libxcb-icccm4-dev libyajl-dev libstartup-notification0-dev libxcb-randr0-dev libev-dev libxcb-cursor-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev

(all the dependencies from here https://github.com/Airblader/i3/wiki/Compiling-&-Installing )

OS: Ubuntu 15.04

Installation log:

[libi3] CC libi3/get_process_filename.c
[libi3] CC libi3/safewrappers.c
[libi3] CC libi3/root_atom_contents.c
[libi3] CC libi3/is_debug_build.c
[libi3] CC libi3/get_mod_mask.c
[libi3] CC libi3/string.c
[libi3] CC libi3/ipc_connect.c
[libi3] CC libi3/get_config_path.c
[libi3] CC libi3/ucs2_conversion.c
[libi3] CC libi3/dpi.c
[libi3] CC libi3/font.c
[libi3] CC libi3/get_exe_path.c
[libi3] CC libi3/resolve_tilde.c
[libi3] CC libi3/get_colorpixel.c
[libi3] CC libi3/strndup.c
[libi3] CC libi3/fake_configure_notify.c
[libi3] CC libi3/ipc_send_message.c
[libi3] CC libi3/mkdirp.c
[libi3] CC libi3/get_visualtype.c
[libi3] CC libi3/ipc_recv_message.c
[libi3] AR libi3.a
[i3] CC src/resize.c
[i3] CC src/log.c
[i3] CC src/debug.c
[i3] Generating command parser
[i3] CC src/commands_parser.c
[i3] CC src/regex.c
[i3] CC src/config.c
[i3] CC src/restore_layout.c
[i3] CC src/fake_outputs.c
[i3] CC src/bindings.c
[i3] CC src/manage.c
[i3] CC src/con.c
[i3] CC src/xinerama.c
[i3] CC src/scratchpad.c
[i3] CC src/match.c
[i3] CC src/main.c
[i3] CC src/window.c
[i3] CC src/move.c
[i3] CC src/key_press.c
[i3] CC src/x.c
[i3] CC src/config_directives.c
[i3] CC src/load_layout.c
[i3] CC src/output.c
[i3] CC src/floating.c
[i3] CC src/xcb.c
[i3] CC src/ipc.c
[i3] CC src/sd-daemon.c
[i3] CC src/version.c
[i3] CC src/commands.c
[i3] CC src/randr.c
[i3] CC src/xcursor.c
[i3] CC src/util.c
[i3] CC src/workspace.c
[i3] CC src/click.c
[i3] Generating config parser
[i3] CC src/config_parser.c
[i3] CC src/sighandler.c
[i3] CC src/ewmh.c
[i3] CC src/assignments.c
[i3] CC src/handlers.c
[i3] CC src/display_version.c
[i3] CC src/render.c
[i3] CC src/startup.c
[i3] CC src/tree.c
[i3] Link i3
[i3] Link test.commands_parser
[i3] Link test.config_parser
[i3-config-wizard] CC i3-config-wizard/main.c
[i3-config-wizard] Link i3-config-wizard
[i3-msg] CC i3-msg/main.c
[i3-msg] Link i3-msg
[i3-input] CC i3-input/keysym2ucs.c
[i3-input] CC i3-input/main.c
[i3-input] Link i3-input
[i3-nagbar] CC i3-nagbar/main.c
[i3-nagbar] Link i3-nagbar
[i3bar] CC i3bar/src/outputs.c
[i3bar] CC i3bar/src/parse_json_header.c
[i3bar] CC i3bar/src/config.c
[i3bar] CC i3bar/src/workspaces.c
[i3bar] CC i3bar/src/mode.c
[i3bar] CC i3bar/src/ipc.c
[i3bar] CC i3bar/src/main.c
[i3bar] CC i3bar/src/xcb.c
[i3bar] CC i3bar/src/child.c
[i3bar] Link i3bar
[i3-dump-log] CC i3-dump-log/main.c
[i3-dump-log] Link i3-dump-log
[i3] Install
[i3-config-wizard] Install
[i3-msg] Install
[i3-input] Install
[i3-nagbar] Install
[i3bar] Install
[i3-dump-log] Install

Version:

Binary i3 version:  4.10.3-347-g586854b (2015-07-30, branch "gaps") © 2009-2014 Michael Stapelberg and contributors
Running i3 version: 4.10.3-347-g586854b (2015-07-30, branch "gaps") (pid 1774)

The i3 binary you just called: /usr/bin/i3
RUNNING BINARY DIFFERENT FROM BINARY ON DISK!
The i3 binary you are running: i3

Log:

logs.i3wm.org/logs/5629652273987584.bz2

Graphical glitches with tabs

i3-gaps isn't supposed to work with stacked and tabbed mode, right? I'm saying that because using the following configuration and still gets some graphical glitches sometimes (seems random).

new_window pixel 3
new_float pixel 3

Let me ask you a dumb question why stacked and tabbed mode does not work well with gaps? We can't get rid of the title bars entirely?

i3-gaps has often overloads my CPU up to 100%

Hello,

i3-gaps has often overloads my CPU up to 100%.

My CPU is Intel(R) Core(TM)2 Quad CPU Q8300.

I don't understand why.

http://logs.i3wm.org/logs/5740874747084800.bz2
/var/run/user/1000/i3/errorlog.19732 contents:

ERROR: Received ConfigureNotify for unknown window 0x01000000
ERROR: Received ExposeEvent for unknown window 0x01000000
ERROR: Received ConfigureNotify for unknown window 0x01000000
ERROR: Received ConfigureNotify for unknown window 0x01000003
ERROR: Received ExposeEvent for unknown window 0x01000003
ERROR: Received ConfigureNotify for unknown window 0x01000003
ERROR: Received ConfigureNotify for unknown window 0x01000006
ERROR: Received ExposeEvent for unknown window 0x01000006
ERROR: Received ConfigureNotify for unknown window 0x01000006
ERROR: Received ConfigureNotify for unknown window 0x01000009
ERROR: Received ConfigureNotify for unknown window 0x01000009
ERROR: Received ConfigureNotify for unknown window 0x0100000c
ERROR: Received ConfigureNotify for unknown window 0x0100000c
ERROR: Received ConfigureNotify for unknown window 0x01000003
ERROR: Received ExposeEvent for unknown window 0x01000003
ERROR: Received ConfigureNotify for unknown window 0x01000003
ERROR: Received ConfigureNotify for unknown window 0x01000000
ERROR: Received ExposeEvent for unknown window 0x01000000
ERROR: Received ConfigureNotify for unknown window 0x01000000
ERROR: Received ConfigureNotify for unknown window 0x01000006
ERROR: Received ExposeEvent for unknown window 0x01000006
ERROR: Received ConfigureNotify for unknown window 0x01000006

My i3-gaps version is:

Binary i3 version:  4.10.3-347-g586854b (2015-07-30, branch "makepkg") © 2009-2014 Michael Stapelberg and contributors
Running i3 version: 4.10.3-347-g586854b (2015-07-30, branch "makepkg") (pid 19732)

The i3 binary you just called: /usr/bin/i3
The i3 binary you are running: i3-with-/i3

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.