{"action":"created","comment":{"url":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/comments/59119685","id":59119685,"diff_hunk":"@@ -0,0 +1,461 @@\n+//! Register wlc callbacks to events.\n+//!\n+//! See individual methods for callback details.\n+//!\n+//! # wlc Example\n+//! ```no_run\n+//! use rustwlc;\n+//! use rustwlc::callback;\n+//! use rustwlc::handle::WlcView;\n+//!\n+//! // An example callback function\n+//! // See the various functions in this module for more information\n+//! extern \"C\" fn view_focus_callback(view: WlcView, focused: bool) {\n+//!     println!(\"A view came into focus!\");\n+//! }\n+//!\n+//! // Set a default log callback\n+//! rustwlc::log_set_default_handler();\n+//!\n+//! // Register some callbacks\n+//! callback::view_focus(view_focus_callback);\n+//! // ... and additional callbacks\n+//!\n+//! // The only thing your code should do before init2 is register callbacks\n+//! // and log handlers.\n+//! let run_wlc = rustwlc::init2()\n+//!     .expect(\"Unable to initialize wlc!\");\n+//!\n+//! run_wlc();\n+//! ```\n+\n+use super::types::*;\n+use super::handle::{WlcOutput, WlcView};\n+\n+#[link(name = \"wlc\")]\n+extern \"C\" {\n+    // Output was created. Return false if you want to destroy the output.\n+    // (e.g. failed to allocate data related to view)\n+    fn wlc_set_output_created_cb(cb: extern \"C\" fn(WlcOutput) -> bool);\n+\n+    // Output was destroyed.\n+    fn wlc_set_output_destroyed_cb(cb: extern \"C\" fn(WlcOutput));\n+\n+    // Output got or lost focus.\n+    fn wlc_set_output_focus_cb(cb: extern \"C\" fn(WlcOutput, bool));\n+\n+    // Output resolution changed.\n+    fn wlc_set_output_resolution_cb(cb: extern \"C\" fn(WlcOutput, &Size, &Size));\n+\n+    // Output pre render hook.\n+    fn wlc_set_output_render_pre_cb(cb: extern \"C\" fn(WlcOutput));\n+\n+    // Output post render hook.\n+    fn wlc_set_output_render_post_cb(cb: extern \"C\" fn(WlcOutput));\n+\n+    // View was created. Return false if you want to destroy the view.\n+    // (e.g. failed to allocate data related to view)\n+    fn wlc_set_view_created_cb(cb: extern \"C\" fn(WlcView) -> bool);\n+\n+    // View was destroyed.\n+    fn wlc_set_view_destroyed_cb(cb: extern \"C\" fn(handle: WlcView));\n+\n+    // View got or lost focus.\n+    fn wlc_set_view_focus_cb(cb: extern \"C\" fn(WlcView, bool));\n+\n+    // View was moved to output.\n+    fn wlc_set_view_move_to_output_cb(cb: extern \"C\" fn(WlcView, WlcOutput,\n+                                                    WlcOutput));\n+\n+    // Request to set given geometry for view.\n+    // Apply using wlc_view_set_geometry to agree.\n+    fn wlc_set_view_request_geometry_cb(cb: extern \"C\" fn(WlcView, &Geometry));\n+\n+    // Request to disable or enable the given state for view.\n+    // Apply using wlc_view_set_state to agree.\n+    fn wlc_set_view_request_state_cb(cb: extern \"C\" fn(WlcView, ViewState, bool));\n+\n+    // Request to move itself. Start a interactive move to agree.\n+    fn wlc_set_view_request_move_cb(cb: extern \"C\" fn(WlcView, &Point));\n+\n+    // Request to resize itself with the given edges.\n+    // Start a interactive resize to agree.\n+    fn wlc_set_view_request_resize_cb(cb: extern \"C\" fn(WlcView, ResizeEdge,\n+                                                    &Point));\n+\n+    // View pre render hook.\n+    fn wlc_set_view_render_pre_cb(cb: extern \"C\" fn(WlcView));\n+\n+    // View post render hook.\n+    fn wlc_set_view_render_post_cb(cb: extern \"C\" fn(WlcView));\n+\n+    // Key event was triggered, view handle will be zero if there was no focus.\n+    // Return true to prevent sending the event to clients.\n+    fn wlc_set_keyboard_key_cb(cb: extern \"C\" fn(WlcView, u32, &KeyboardModifiers,\n+                                             u32, KeyState) -> bool);\n+\n+    // Button event was triggered, view handle will be zero if there\n+    // was no focus. Return true to prevent sending the event to clients.\n+    fn wlc_set_pointer_button_cb(cb: extern \"C\" fn(WlcView, u32, &KeyboardModifiers,\n+                                             u32, ButtonState, &Point) -> bool);\n+\n+    // Scroll event was triggered, view handle will be zero if there was no\n+    // focus. Return true to prevent sending the event to clients.\n+    fn wlc_set_pointer_scroll_cb(cb: extern \"C\" fn(WlcView, u32, &KeyboardModifiers,\n+                                               ScrollAxis, [f64; 2]) -> bool);\n+\n+    // Motion event was triggered, view handle will be zero if there was no\n+    // focus. Apply with wlc_pointer_set_position to agree. Return true to\n+    // prevent sending the event to clients.\n+    fn wlc_set_pointer_motion_cb(cb: extern \"C\" fn(WlcView, u32, &Point) -> bool);\n+\n+    // Touch event was triggered, view handle will be zero if there was no\n+    // focus. Return true to prevent sending the event to clients.\n+    fn wlc_set_touch_cb(cb: extern \"C\" fn(WlcView, u32, &KeyboardModifiers,\n+                                    TouchType, i32, &Point) -> bool);\n+\n+    // Compositor is ready to accept clients.\n+    fn wlc_set_compositor_ready_cb(cb: extern \"C\" fn());\n+\n+    // Compositor is about to terminate.\n+    fn wlc_set_compositor_terminate_cb(cb: extern \"C\" fn());\n+\n+    // We're not supporting libinput experimental callbacks\n+\n+    // Input device was created. Return value does nothing. (Experimental)\n+    //fn wlc_set_input_created_cb(cb: extern \"C\" fn(&LibinputDevice) -> bool);\n+\n+    // Input device was destroyed. (Experimental)\n+    //fn wlc_set_input_destroyed_cb(cb: extern \"C\" fn(&LibinputDevice));\n+}\n+\n+/// Callback invoked when an output is created.\n+/// Return `true` to allow the output to exist.\n+///\n+/// # Example\n+/// ```rust\n+/// use rustwlc::handle::WlcOutput;\n+///\n+/// extern fn on_output_created(output: WlcOutput) -> bool {\n+///     println!(\"Output {} ({:?}) was created\", output.get_name(), output);\n+///     return true;\n+/// }\n+/// # fn main() { }\n+/// ```\n+pub fn output_created(callback: extern \"C\" fn(output: WlcOutput) -> bool) {\n+    unsafe {\n+        wlc_set_output_created_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked when an output is destroyed.\n+///\n+/// # Example\n+/// ```rust\n+/// use rustwlc::handle::WlcOutput;\n+///\n+/// extern fn output_destroyed(output: WlcOutput) {\n+///     println!(\"Goodbye, {:?}\", output);\n+/// }\n+/// # fn main() { }\n+/// ```\n+pub fn output_destroyed(callback: extern \"C\" fn(output: WlcOutput)) {\n+    unsafe {\n+        wlc_set_output_destroyed_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked when an output gains focus.\n+///\n+/// # Example\n+/// ```rust\n+/// use rustwlc::handle::WlcOutput;\n+///\n+/// extern fn output_focus(output: WlcOutput, focused: bool) {\n+///     println!(\"Output {} {} focus\", output.get_name(), if focused { \"gained\" } else { \"lost\" });\n+/// }\n+/// # fn main() { }\n+/// ```\n+pub fn output_focus(callback: extern \"C\" fn(output: WlcOutput, focused: bool)) {\n+    unsafe {\n+        wlc_set_output_focus_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked when an output's resolution changes.\n+///\n+/// # Example\n+/// ```rust\n+/// use rustwlc::handle::WlcOutput;\n+/// use rustwlc::types::Size;\n+///\n+/// extern fn output_resolution(output: WlcOutput, old_size: &Size, new_size: &Size) {\n+///     println!(\"Output {} went from {} to {}\", output.get_name(), old_size, new_size);\n+/// }\n+/// # fn main() { }\n+/// ```\n+pub fn output_resolution(callback: extern \"C\" fn(output: WlcOutput, old_size: &Size,\n+                                             new_size: &Size)) {\n+    unsafe {\n+        wlc_set_output_resolution_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked pre-render for an output.\n+pub fn output_render_pre(callback: extern \"C\" fn(output: WlcOutput)) {\n+    unsafe {\n+        wlc_set_output_render_pre_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked post-render for an output.\n+pub fn output_render_post(callback: extern \"C\" fn(output: WlcOutput)) {\n+    unsafe {\n+        wlc_set_output_render_post_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked when a view is created. Return `true` to allow the view to be created.\n+///\n+/// When a new view is created, the following should probably be applied:\n+/// * Set the view's mask to the output's mask\n+/// * Focus the view\n+/// * Bring the view to the front\n+///\n+/// # Example\n+/// ```rust\n+/// use rustwlc::handle::WlcView;\n+///\n+/// extern fn view_created(view: WlcView) -> bool {\n+///     println!(\"View \\\"{}\\\" was created ({:?})\", view.get_class(), view);\n+///     view.set_mask(view.get_output().get_mask());\n+///     view.bring_to_front();\n+///     view.focus();\n+///     return true;\n+/// }\n+/// # fn main() { }\n+/// ```\n+pub fn view_created(callback: extern \"C\" fn(view: WlcView) -> bool) {\n+    unsafe {\n+        wlc_set_view_created_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked when a view is destroyed.\n+///\n+/// When a view is destroyed, it's a good idea to shift focus to\n+/// some other view, i.e. the last one used.\n+///\n+/// # Example\n+/// ```rust\n+/// use rustwlc::handle::WlcView;\n+///\n+/// extern fn view_destroyed(view: WlcView) {\n+///     println!(\"Goodbye, {:?}\", view);\n+/// }\n+/// # fn main() { }\n+/// ```\n+pub fn view_destroyed(callback: extern \"C\" fn(view: WlcView)) {\n+    unsafe {\n+        wlc_set_view_destroyed_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked when a view is focused.\n+///\n+/// The view's `ViewState::VIEW_ACTIVATED` bit should be set to true here.\n+///\n+/// # Example\n+/// ```rust\n+/// use rustwlc::handle::WlcView;\n+/// use rustwlc::types::*;\n+///\n+/// extern fn view_focus(view: WlcView, focused: bool) {\n+///     println!(\"View {:?} is {} focus, updating...\",\n+///               view, if focused { \"in\" } else { \"out of\" });\n+///     view.set_state(VIEW_ACTIVATED, focused);\n+/// }\n+/// ```\n+pub fn view_focus(callback: extern \"C\" fn(handle: WlcView, focused: bool)) {\n+    unsafe {\n+        wlc_set_view_focus_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked when a view switches outputs.\n+///\n+/// Moving views between outputs is unsupported in wlc at the time of writing.\n+/// Wayland mandates each output have its own memory buffer so it may take wlc some time before\n+// this is implemented.\n+pub fn view_move_to_output(callback: extern \"C\" fn(view: WlcView,\n+                                                   old_output: WlcOutput, new_output: WlcOutput)) {\n+    unsafe {\n+        wlc_set_view_move_to_output_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked when a view requests geometry.\n+pub fn view_request_geometry(callback: extern \"C\" fn(handle: WlcView, geometry: &Geometry)) {\n+    unsafe {\n+        wlc_set_view_request_geometry_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked when a view requests a `ViewState`.\n+pub fn view_request_state(callback: extern \"C\" fn(current: WlcView, state: ViewState, handled: bool)) {\n+    unsafe {\n+        wlc_set_view_request_state_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked when a view requests a move.\n+pub fn view_request_move(callback: extern \"C\" fn(handle: WlcView, destination: &Point)) {\n+    unsafe {\n+        wlc_set_view_request_move_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked when a view requests a resize.\n+pub fn view_request_resize(callback: extern \"C\" fn(handle: WlcView, edge: ResizeEdge, location: &Point)) {\n+    unsafe {\n+        wlc_set_view_request_resize_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked pre-view-render.\n+pub fn view_render_pre(callback: extern \"C\" fn(view: WlcView)) {\n+    unsafe {\n+        wlc_set_view_render_pre_cb(callback)\n+    }\n+}\n+\n+/// Callback invoked post-view-render.\n+pub fn view_render_post(callback: extern \"C\" fn(view: WlcView)) {\n+    unsafe {\n+        wlc_set_view_render_post_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked on keypresses. Return `true` to block the press from the view.\n+///\n+/// # Arguments\n+/// The first `u32` is a timestamp, the second is the key code. The view may be the root window.\n+/// Proper values for `key` can be found in `input.h` or a similar library/crate - see wlc\n+/// documentation on the subject, it may not support your keyboard layout at the moment.\n+///\n+/// # Example\n+/// ```rust\n+/// use rustwlc::handle::WlcView;\n+/// use rustwlc::types::{KeyboardModifiers, KeyState};\n+///\n+/// extern fn keyboard_key(view: WlcView, time: u32, mods: &KeyboardModifiers,\n+///                        key: u32, state: KeyState) -> bool {\n+///     println!(\"Key {} {:?} on {:?} at {} with modifiers {:?}\",\n+///              key, view, state, time, mods);\n+///     return false;\n+/// }\n+/// # fn main() { }\n+/// ```\n+pub fn keyboard_key(callback: extern \"C\" fn(view: WlcView, time: u32,\n+                                            mods: &KeyboardModifiers, key: u32, state: KeyState) -> bool) {\n+    unsafe {\n+        wlc_set_keyboard_key_cb(callback);\n+    }\n+}\n+\n+/// Callback invoked on mouse clicks. Return `true` to block the click from the view.\n+///\n+/// # Arguments\n+/// The first u32 is a timestamp, the second is the button code. The view may be the root\n+/// window. Probper values for `button` can be found in `input.h` or a similar library/crate.\n+///\n+/// # Example\n+/// ```rust\n+/// use rustwlc::handle::WlcView;\n+/// use rustwlc::types::{KeyboardModifiers, ButtonState, Point};\n+///\n+/// extern fn pointer_button(view: WlcView, time: u32, mods: &KeyboardModifiers, button: u32,\n+///                          state: ButtonState, point: &Point) -> bool {\n+///     println!(\"Button {} {:?} at {} at {} in {:?}, keyboard mods: {:?}\",\n+///              button, state, time, point, view, mods);\n+///     return false;\n+/// }\n+/// # fn main() { }\n+/// ```\n+pub fn pointer_button(callback: extern \"C\" fn(view: WlcView, time: u32, mods: &KeyboardModifiers, button: u32, state: ButtonState, point: &Point) -> bool) {","path":"src/callback.rs","position":385,"original_position":385,"commit_id":"1d6d8b01e4fad22f904a2ed74376c57034812def","original_commit_id":"1d6d8b01e4fad22f904a2ed74376c57034812def","user":{"login":"Timidger","id":3515754,"avatar_url":"https://avatars.githubusercontent.com/u/3515754?v=3","gravatar_id":"","url":"https://api.github.com/users/Timidger","html_url":"https://github.com/Timidger","followers_url":"https://api.github.com/users/Timidger/followers","following_url":"https://api.github.com/users/Timidger/following{/other_user}","gists_url":"https://api.github.com/users/Timidger/gists{/gist_id}","starred_url":"https://api.github.com/users/Timidger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Timidger/subscriptions","organizations_url":"https://api.github.com/users/Timidger/orgs","repos_url":"https://api.github.com/users/Timidger/repos","events_url":"https://api.github.com/users/Timidger/events{/privacy}","received_events_url":"https://api.github.com/users/Timidger/received_events","type":"User","site_admin":false},"body":"This line is super long, are we still using rustfmt?","created_at":"2016-04-09T19:02:43Z","updated_at":"2016-04-09T19:02:43Z","html_url":"https://github.com/Immington-Industries/rust-wlc/pull/31#discussion_r59119685","pull_request_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/31","_links":{"self":{"href":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/comments/59119685"},"html":{"href":"https://github.com/Immington-Industries/rust-wlc/pull/31#discussion_r59119685"},"pull_request":{"href":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/31"}}},"pull_request":{"url":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/31","id":65882104,"html_url":"https://github.com/Immington-Industries/rust-wlc/pull/31","diff_url":"https://github.com/Immington-Industries/rust-wlc/pull/31.diff","patch_url":"https://github.com/Immington-Industries/rust-wlc/pull/31.patch","issue_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/issues/31","number":31,"state":"open","locked":false,"title":"Update to wlc version 0.0.1","user":{"login":"SnirkImmington","id":1468114,"avatar_url":"https://avatars.githubusercontent.com/u/1468114?v=3","gravatar_id":"","url":"https://api.github.com/users/SnirkImmington","html_url":"https://github.com/SnirkImmington","followers_url":"https://api.github.com/users/SnirkImmington/followers","following_url":"https://api.github.com/users/SnirkImmington/following{/other_user}","gists_url":"https://api.github.com/users/SnirkImmington/gists{/gist_id}","starred_url":"https://api.github.com/users/SnirkImmington/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SnirkImmington/subscriptions","organizations_url":"https://api.github.com/users/SnirkImmington/orgs","repos_url":"https://api.github.com/users/SnirkImmington/repos","events_url":"https://api.github.com/users/SnirkImmington/events{/privacy}","received_events_url":"https://api.github.com/users/SnirkImmington/received_events","type":"User","site_admin":false},"body":"The `version-stability` branch matches wlc's tagged `v0.0.1` release. It contains the new `callback` module for callback-registering functions, and a few improvements.\r\n\r\nI _think_ the merge conflicts are in the `Cargo.lock`s but I am not sure.\r\n\r\n- We've been handling scrolling wrong. The scroll heights array is now a proper `[f64; 2]` even though its numbers are weird.\r\n- Version bump to 0.3.0 - kind of arbitrary... maybe 0.3.1 so we're always .3 ahead of wlc?\r\n- Remove `Cargo.lock` from the repository (and add to `.gitignore`) - this is apparently bad practice for libraries. \r\n- Add `#[derive(Hash)]` for `WlcOutput`, `WlcView`, `ButtonState`, `KeyState`, `Point`, `Size`, `Geometry`, `Keysym`\r\n- Add the `callback` module and `init2()` for wlc's new initialization API\r\n- Remove body of `rustwlc::exec`\r\n- Add lots of deprecation warnings in the docs all over the place\r\n- Clean up the docs for WlcInterface, great time to do so now that it's deprecated\r\n- Updated all the doc examples to use the new API\r\n- Updated the readme to reflect wlc version 0.3 and new API\r\n\r\n#### After the merge\r\n\r\n- [ ] Add links within the docs\r\n- [ ] Fix merge conflicts\r\n- [ ] Publish new version\r\n- [ ] Update docs","created_at":"2016-04-09T14:18:12Z","updated_at":"2016-04-09T19:02:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":{"login":"Timidger","id":3515754,"avatar_url":"https://avatars.githubusercontent.com/u/3515754?v=3","gravatar_id":"","url":"https://api.github.com/users/Timidger","html_url":"https://github.com/Timidger","followers_url":"https://api.github.com/users/Timidger/followers","following_url":"https://api.github.com/users/Timidger/following{/other_user}","gists_url":"https://api.github.com/users/Timidger/gists{/gist_id}","starred_url":"https://api.github.com/users/Timidger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Timidger/subscriptions","organizations_url":"https://api.github.com/users/Timidger/orgs","repos_url":"https://api.github.com/users/Timidger/repos","events_url":"https://api.github.com/users/Timidger/events{/privacy}","received_events_url":"https://api.github.com/users/Timidger/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/31/commits","review_comments_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/31/comments","review_comment_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/issues/31/comments","statuses_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/statuses/1d6d8b01e4fad22f904a2ed74376c57034812def","head":{"label":"Immington-Industries:version-stability","ref":"version-stability","sha":"1d6d8b01e4fad22f904a2ed74376c57034812def","user":{"login":"Immington-Industries","id":10932466,"avatar_url":"https://avatars.githubusercontent.com/u/10932466?v=3","gravatar_id":"","url":"https://api.github.com/users/Immington-Industries","html_url":"https://github.com/Immington-Industries","followers_url":"https://api.github.com/users/Immington-Industries/followers","following_url":"https://api.github.com/users/Immington-Industries/following{/other_user}","gists_url":"https://api.github.com/users/Immington-Industries/gists{/gist_id}","starred_url":"https://api.github.com/users/Immington-Industries/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Immington-Industries/subscriptions","organizations_url":"https://api.github.com/users/Immington-Industries/orgs","repos_url":"https://api.github.com/users/Immington-Industries/repos","events_url":"https://api.github.com/users/Immington-Industries/events{/privacy}","received_events_url":"https://api.github.com/users/Immington-Industries/received_events","type":"Organization","site_admin":false},"repo":{"id":50853160,"name":"rust-wlc","full_name":"Immington-Industries/rust-wlc","owner":{"login":"Immington-Industries","id":10932466,"avatar_url":"https://avatars.githubusercontent.com/u/10932466?v=3","gravatar_id":"","url":"https://api.github.com/users/Immington-Industries","html_url":"https://github.com/Immington-Industries","followers_url":"https://api.github.com/users/Immington-Industries/followers","following_url":"https://api.github.com/users/Immington-Industries/following{/other_user}","gists_url":"https://api.github.com/users/Immington-Industries/gists{/gist_id}","starred_url":"https://api.github.com/users/Immington-Industries/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Immington-Industries/subscriptions","organizations_url":"https://api.github.com/users/Immington-Industries/orgs","repos_url":"https://api.github.com/users/Immington-Industries/repos","events_url":"https://api.github.com/users/Immington-Industries/events{/privacy}","received_events_url":"https://api.github.com/users/Immington-Industries/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Immington-Industries/rust-wlc","description":"Rust bindings for wlc, the Wayland compositor library","fork":false,"url":"https://api.github.com/repos/Immington-Industries/rust-wlc","forks_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/forks","keys_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/teams","hooks_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/hooks","issue_events_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/issues/events{/number}","events_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/events","assignees_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/assignees{/user}","branches_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/branches{/branch}","tags_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/tags","blobs_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/git/refs{/sha}","trees_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/statuses/{sha}","languages_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/languages","stargazers_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/stargazers","contributors_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/contributors","subscribers_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/subscribers","subscription_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/subscription","commits_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/commits{/sha}","git_commits_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/git/commits{/sha}","comments_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/comments{/number}","issue_comment_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/issues/comments{/number}","contents_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/contents/{+path}","compare_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/merges","archive_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/downloads","issues_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/issues{/number}","pulls_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls{/number}","milestones_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/milestones{/number}","notifications_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/labels{/name}","releases_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/releases{/id}","deployments_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/deployments","created_at":"2016-02-01T16:30:47Z","updated_at":"2016-04-02T01:46:03Z","pushed_at":"2016-04-09T14:18:12Z","git_url":"git://github.com/Immington-Industries/rust-wlc.git","ssh_url":"git@github.com:Immington-Industries/rust-wlc.git","clone_url":"https://github.com/Immington-Industries/rust-wlc.git","svn_url":"https://github.com/Immington-Industries/rust-wlc","homepage":"","size":309,"stargazers_count":22,"watchers_count":22,"language":"Rust","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":6,"forks":2,"open_issues":6,"watchers":22,"default_branch":"master"}},"base":{"label":"Immington-Industries:master","ref":"master","sha":"e58c0768a037639461a116e65f6d8313f0247ae4","user":{"login":"Immington-Industries","id":10932466,"avatar_url":"https://avatars.githubusercontent.com/u/10932466?v=3","gravatar_id":"","url":"https://api.github.com/users/Immington-Industries","html_url":"https://github.com/Immington-Industries","followers_url":"https://api.github.com/users/Immington-Industries/followers","following_url":"https://api.github.com/users/Immington-Industries/following{/other_user}","gists_url":"https://api.github.com/users/Immington-Industries/gists{/gist_id}","starred_url":"https://api.github.com/users/Immington-Industries/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Immington-Industries/subscriptions","organizations_url":"https://api.github.com/users/Immington-Industries/orgs","repos_url":"https://api.github.com/users/Immington-Industries/repos","events_url":"https://api.github.com/users/Immington-Industries/events{/privacy}","received_events_url":"https://api.github.com/users/Immington-Industries/received_events","type":"Organization","site_admin":false},"repo":{"id":50853160,"name":"rust-wlc","full_name":"Immington-Industries/rust-wlc","owner":{"login":"Immington-Industries","id":10932466,"avatar_url":"https://avatars.githubusercontent.com/u/10932466?v=3","gravatar_id":"","url":"https://api.github.com/users/Immington-Industries","html_url":"https://github.com/Immington-Industries","followers_url":"https://api.github.com/users/Immington-Industries/followers","following_url":"https://api.github.com/users/Immington-Industries/following{/other_user}","gists_url":"https://api.github.com/users/Immington-Industries/gists{/gist_id}","starred_url":"https://api.github.com/users/Immington-Industries/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Immington-Industries/subscriptions","organizations_url":"https://api.github.com/users/Immington-Industries/orgs","repos_url":"https://api.github.com/users/Immington-Industries/repos","events_url":"https://api.github.com/users/Immington-Industries/events{/privacy}","received_events_url":"https://api.github.com/users/Immington-Industries/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Immington-Industries/rust-wlc","description":"Rust bindings for wlc, the Wayland compositor library","fork":false,"url":"https://api.github.com/repos/Immington-Industries/rust-wlc","forks_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/forks","keys_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/teams","hooks_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/hooks","issue_events_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/issues/events{/number}","events_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/events","assignees_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/assignees{/user}","branches_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/branches{/branch}","tags_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/tags","blobs_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/git/refs{/sha}","trees_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/statuses/{sha}","languages_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/languages","stargazers_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/stargazers","contributors_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/contributors","subscribers_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/subscribers","subscription_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/subscription","commits_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/commits{/sha}","git_commits_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/git/commits{/sha}","comments_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/comments{/number}","issue_comment_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/issues/comments{/number}","contents_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/contents/{+path}","compare_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/merges","archive_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/downloads","issues_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/issues{/number}","pulls_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls{/number}","milestones_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/milestones{/number}","notifications_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/labels{/name}","releases_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/releases{/id}","deployments_url":"https://api.github.com/repos/Immington-Industries/rust-wlc/deployments","created_at":"2016-02-01T16:30:47Z","updated_at":"2016-04-02T01:46:03Z","pushed_at":"2016-04-09T14:18:12Z","git_url":"git://github.com/Immington-Industries/rust-wlc.git","ssh_url":"git@github.com:Immington-Industries/rust-wlc.git","clone_url":"https://github.com/Immington-Industries/rust-wlc.git","svn_url":"https://github.com/Immington-Industries/rust-wlc","homepage":"","size":309,"stargazers_count":22,"watchers_count":22,"language":"Rust","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":6,"forks":2,"open_issues":6,"watchers":22,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/31"},"html":{"href":"https://github.com/Immington-Industries/rust-wlc/pull/31"},"issue":{"href":"https://api.github.com/repos/Immington-Industries/rust-wlc/issues/31"},"comments":{"href":"https://api.github.com/repos/Immington-Industries/rust-wlc/issues/31/comments"},"review_comments":{"href":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/31/comments"},"review_comment":{"href":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Immington-Industries/rust-wlc/pulls/31/commits"},"statuses":{"href":"https://api.github.com/repos/Immington-Industries/rust-wlc/statuses/1d6d8b01e4fad22f904a2ed74376c57034812def"}}}}