Alacritty: Lagging while using nano, vim, etc.

Created on 26 Mar 2019  ·  57Comments  ·  Source: alacritty/alacritty

Which operating system does the issue occur on?
Ubuntu 16.04
If on linux, are you using X11 or Wayland?
X11

When I use nano it isn't loaded immediately, after I press a key it gets rendered. even while typing in nano, A key press will load the previous key and not the current key. Even when exiting, the save file option is shown only after I press some key. This issue remains with any editor I use. Even when using git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit command, it gets rendered only after I press some key. Following is the video to showcase the issue.

simplescreenrecorder-2019-03-26_14 22 30

If you need any other info related to system config or want me to try out some experiments, I can help.

EDIT 1 : Using alacritty 0.2.7

A - deps B - bug B - performance DS - X11 H - linux P - high S - input S - winiglutin

Most helpful comment

Same issue here, whenever I run something (does not depend on which shell, terminal multiplexer, or application) that runs for more than a few seconds of outputting text to the tty, it just freezes until my mouse is moved or I press a key.

OS: Arch Linux amd64, Kernel 5.1.7, zsh 5.4.1, i3-gaps
Device: HP Elitebook 9470M, i7-3687U, 8GB RAM

All 57 comments

Another thing I noticed is, everything works perfectly when I use a new instance of alacritty. But when an instance stays inactive for a while, it starts lagging. Sometimes writing in the terminal starts lagging.

Can you reproduce this in another terminal emulator? What if you try a different shell (bash, zsh, fish)? And finally, can you see if this is reproducible on the latest master? I don't have this issue and that's what I'm currently running. Even checking out the 0.2.7 tag doesn't give me the same behavior.

Could you try running Alacritty with alacritty --print-events to show if Alacritty is updated with a delay or if the key events are actually coming in after the key is pressed (with a delay).

@cole-h

What if you try a different shell (bash, zsh, fish)?

The issue remains irrespective of what I use.

Can you reproduce this in another terminal emulator?

I'm unable to reproduce.

can you see if this is reproducible on the latest master?

I will try it and let you know.

@chrisduerr, Following is the output of the print-events.

[2019-03-26 23:57] [INFO] Welcome to Alacritty
[2019-03-26 23:57] [INFO] Configuration loaded from "/home/shyamal/.config/alacritty/alacritty.yml"
[2019-03-26 23:57] [INFO] Device pixel ratio: 1.0833333333333333
[2019-03-26 23:57] [INFO] Width: 1366, Height: 744
[2019-03-26 23:57] [INFO] Initializing glyph cache...
[2019-03-26 23:57] [INFO] ... finished initializing glyph cache in 0.033508283s
[2019-03-26 23:57] [INFO] Width: 1366, Height: 744
[2019-03-26 23:57] [INFO] Cell Size: (10 x 21)
[2019-03-26 23:57] [INFO] Padding: (0 x 0)
[2019-03-26 23:57] [INFO] PTY Dimensions: Line(35) x Column(136)
[2019-03-26 23:57] [INFO] Initialisation complete
[2019-03-26 23:57] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: Resized(LogicalSize { width: 1023.6923076923077, height: 686.7692307692308 }) }
[2019-03-26 23:57] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: Moved(LogicalPosition { x: 0.0, y: 22.153846153846157 }) }
[2019-03-26 23:57] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: Resized(LogicalSize { width: 1260.923076923077, height: 686.7692307692308 }) }
[2019-03-26 23:57] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: Refresh }
[2019-03-26 23:57] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: Focused(true) }
[2019-03-26 23:57] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: CursorMoved { device_id: DeviceId(X(DeviceId(2))), position: LogicalPosition { x: 0.0, y: -22.153846153846157 }, modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } }
[2019-03-26 23:57] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 28, state: Released, virtual_keycode: Some(Return), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:57] [INFO] Font size changed to Size(24) with DPR of 1.0833333333333333
[2019-03-26 23:57] [INFO] Width: 1366, Height: 744
[2019-03-26 23:57] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 28, state: Released, virtual_keycode: Some(Return), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:57] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 49, state: Pressed, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 49, state: Pressed, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('n') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 49, state: Released, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 49, state: Released, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 30, state: Pressed, virtual_keycode: Some(A), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 30, state: Pressed, virtual_keycode: Some(A), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('a') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 30, state: Released, virtual_keycode: Some(A), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 30, state: Released, virtual_keycode: Some(A), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 49, state: Pressed, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 49, state: Pressed, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('n') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 49, state: Released, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 49, state: Released, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 24, state: Pressed, virtual_keycode: Some(O), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 24, state: Pressed, virtual_keycode: Some(O), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('o') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 24, state: Released, virtual_keycode: Some(O), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 24, state: Released, virtual_keycode: Some(O), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 24, state: Pressed, virtual_keycode: Some(O), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 24, state: Pressed, virtual_keycode: Some(O), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('o') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 24, state: Released, virtual_keycode: Some(O), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 24, state: Released, virtual_keycode: Some(O), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 14, state: Pressed, virtual_keycode: Some(Back), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 14, state: Pressed, virtual_keycode: Some(Back), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('\u{8}') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 14, state: Released, virtual_keycode: Some(Back), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 14, state: Released, virtual_keycode: Some(Back), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 106, state: Pressed, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 106, state: Pressed, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 106, state: Released, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 106, state: Released, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 28, state: Pressed, virtual_keycode: Some(Return), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 28, state: Pressed, virtual_keycode: Some(Return), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('\r') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 28, state: Released, virtual_keycode: Some(Return), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 28, state: Released, virtual_keycode: Some(Return), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 106, state: Pressed, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 106, state: Pressed, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 106, state: Released, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 106, state: Released, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 30, state: Pressed, virtual_keycode: Some(A), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 30, state: Pressed, virtual_keycode: Some(A), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('a') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 30, state: Released, virtual_keycode: Some(A), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 30, state: Released, virtual_keycode: Some(A), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 31, state: Pressed, virtual_keycode: Some(S), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 31, state: Pressed, virtual_keycode: Some(S), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('s') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 31, state: Released, virtual_keycode: Some(S), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 31, state: Released, virtual_keycode: Some(S), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter(' ') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 32, state: Pressed, virtual_keycode: Some(D), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 32, state: Pressed, virtual_keycode: Some(D), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('d') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 32, state: Released, virtual_keycode: Some(D), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 32, state: Released, virtual_keycode: Some(D), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter(' ') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 33, state: Pressed, virtual_keycode: Some(F), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 33, state: Pressed, virtual_keycode: Some(F), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('f') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 33, state: Released, virtual_keycode: Some(F), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 33, state: Released, virtual_keycode: Some(F), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter(' ') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter(' ') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter(' ') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter(' ') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 48, state: Pressed, virtual_keycode: Some(B), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 48, state: Pressed, virtual_keycode: Some(B), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('b') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 48, state: Released, virtual_keycode: Some(B), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 48, state: Released, virtual_keycode: Some(B), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Pressed, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter(' ') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 57, state: Released, virtual_keycode: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 29, state: Pressed, virtual_keycode: Some(LControl), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 29, state: Pressed, virtual_keycode: Some(LControl), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 45, state: Pressed, virtual_keycode: Some(X), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 45, state: Pressed, virtual_keycode: Some(X), modifiers: ModifiersState { shift: false, ctrl: true, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('\u{18}') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 29, state: Released, virtual_keycode: Some(LControl), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 29, state: Released, virtual_keycode: Some(LControl), modifiers: ModifiersState { shift: false, ctrl: true, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 45, state: Released, virtual_keycode: Some(X), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 45, state: Released, virtual_keycode: Some(X), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 106, state: Pressed, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 106, state: Pressed, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 106, state: Released, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 106, state: Released, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 49, state: Pressed, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 49, state: Pressed, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('n') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 49, state: Released, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 49, state: Released, virtual_keycode: Some(N), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 18, state: Pressed, virtual_keycode: Some(E), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 18, state: Pressed, virtual_keycode: Some(E), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('e') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 18, state: Released, virtual_keycode: Some(E), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 18, state: Released, virtual_keycode: Some(E), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 45, state: Pressed, virtual_keycode: Some(X), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 45, state: Pressed, virtual_keycode: Some(X), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('x') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 45, state: Released, virtual_keycode: Some(X), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 45, state: Released, virtual_keycode: Some(X), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 23, state: Pressed, virtual_keycode: Some(I), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 23, state: Pressed, virtual_keycode: Some(I), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('i') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 23, state: Released, virtual_keycode: Some(I), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 23, state: Released, virtual_keycode: Some(I), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 20, state: Pressed, virtual_keycode: Some(T), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 20, state: Pressed, virtual_keycode: Some(T), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('t') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 20, state: Released, virtual_keycode: Some(T), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 20, state: Released, virtual_keycode: Some(T), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 28, state: Pressed, virtual_keycode: Some(Return), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 28, state: Pressed, virtual_keycode: Some(Return), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: ReceivedCharacter('\r') }
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: Awakened
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 28, state: Released, virtual_keycode: Some(Return), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] glutin event: WindowEvent { window_id: WindowId(X(WindowId(69206021))), event: KeyboardInput { device_id: DeviceId(X(DeviceId(3))), input: KeyboardInput { scancode: 28, state: Released, virtual_keycode: Some(Return), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } } } }
[2019-03-26 23:58] [INFO] glutin event: DeviceEvent { device_id: DeviceId(X(DeviceId(13))), event: Key(KeyboardInput { scancode: 106, state: Pressed, virtual_keycode: Some(Right), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, logo: false } }) }
[2019-03-26 23:58] [INFO] Goodbye

@svaderia I'm sorry if I've been a bit unspecific, but the event log itself doesn't actually help. I'd like to know if the events arrive when you press the keys, or if they are delayed.

The goal here is to find out if the key events arrive late, or if they arrive as soon as you press the key, but Alacritty doesn't update for a while.

@chrisduerr I got your point. I checked it, the event arrives at the time of key press but alacritty doesn't update till I press the next key.

Another thing I noticed is, the delay only happens when I'm using alacritty in full screen mode (That is my default and preffered choice). It works perfectly fine when I resize it.

@chrisduerr I got your point. I checked it, the event arrives at the time of key press but alacritty doesn't update till I press the next key.

That's very odd, it would mean that Alacritty is not redrawing appropriately. Do you use compton as a compositor or a full package like Gnome/KDE?

I'm using Gnome and not Compton.

If you have the chance to easily test on Wayland, it might be interesting to see if that changes things.

Some hardware information might also be useful. Which GPU and driver are you using?

If you have the chance to easily test on Wayland, it might be interesting to see if that changes things.

Will let you know.

Some hardware information might also be useful. Which GPU and driver are you using?

GPU : GM108M [GeForce 840M]
driver : i915

driver : i915

That's an intel iGPU driver though, right? So probably not what's being used for the 840M? If you're actually using the Nvidia GPU with the correct driver, that shouldn't be an issue though.

Ah, my bad. Using NVIDIA binary driver - version 387.26 from Nvidia-387

@chrisduerr I'm using Alacritty's latest "master" (91aa683bcd060b2ac2f621a388a6448f564d0537) and am experiencing this issue with any program that makes frequent updates to the terminal (eg, apt install , vim [:PlugUpdate], etc). Few screen updates take place until I press a key on my keyboard, then everything updates at once.

This issue does NOT exist in Alacritty v0.2.9 for me; everything works flawlessly there.

Both "latest master" and "v0.2.9" were compiled from source on my machine.

OS: Linux Mint 19.1
Laptop: Dell XPS 15
GPU: GeForce GTX 1050
Nvidia Driver Version: 390.116

See below for a screencast using Vim and the latest version of Alacritty. The left terminal is alacritty, the right terminal is Gnome-Terminal. I'm using Screenkey to print my keys at the end so you can see exactly when I press them:
screencast

When I use nano it isn't loaded immediately, after I press a key it gets rendered. even while typing in nano,

FWIW I'm not sure if it's the same issue, but I recently get the issue that the terminal, while running an interactive process (such as a wget download) stops updating. It doesn't hang, it continues fine, but it stops updating the screen. Only after a keypress the new state of the terminal appears.
(This is on X11, Ubuntu 18.04, compton compositor)

Edit: OH, this is exactly what @pappasam describes too. When I have time I'll try to bisect …

I bisected it to:

0f96a62218cfc78b56606f0dcc334d59202edf7c is the first bad commit
commit 0f96a62218cfc78b56606f0dcc334d59202edf7c
Author: Christian Duerr <[email protected]>
Date:   Thu Mar 14 20:06:38 2019 +0000

    Update glutin to version 0.20

    Fixes #458.
    Fixes #1681.

:100644 100644 8c8cb0a95d517b5385ed6fac6a77a09d9186245a 67535e3f0bd7636858d1f9f738151712c0bad7e8 M  CHANGELOG.md
:100644 100644 3370ad4ea01f69a7a55f9400a8c94e1770df827e 619deec9662a4d48abd801351c705d45f1967459 M  Cargo.lock
:100644 100644 b6a7d975b29131507c5859d1b2f9b2158e88ccc4 f5818866e25430794230703ea4401640deda55b0 M  Cargo.toml
:040000 040000 79a4a644c582f0c4b7e089a7cf0d8a96bede0209 e6ea040c63a3233ef2968ad58ebe2c864f3fd1b4 M  src

It's surprising to me that this would be caused by a glutin update. Just to make sure, can you verify this with the latest master? I've recently bumped glutin to 0.21 so maybe that fixed it.

Otherwise it seems like we'd have to bisect this in winit which would likely be a very laborious task especially because I can't do it myself since I can't reproduce this.

I'm surprised too, but I'm fairly sure about it, I tried again:

  • I get the behavior with 0f96a62218cfc78b56606f0dcc334d59202edf7c
  • and not with its parent commit b1032bcc6b79135f87f327548e43563da05657fb
  • also have the problem with master (as of now, f0dbfc9b9c6514bc60e271bb74c2970e645d998f)

Hopefully others can confirm this.

Otherwise it seems like we'd have to bisect this in winit which would likely be a very laborious task especially because I can't do it myself since I can't reproduce this.

Why winit? I'd say the next step would be bisecting glutin between 0.20 and 0.19?

Glutin is mostly just a wrapper around winit. Most of the changes are actually made in winit and not glutin. So I'd expect this breakage to come from a winit update and not a glutin update.

The reason why this is caused by a glutin update is likely just because the winit version was bumped in glutin 0.20 to the next minor winit version and we interact with winit exclusively through glutin.

Edit: This would also be trivial to confirm, I'd assume that the minor update before the winit version bump in glutin is the first bad commit, so it would just require testing two versions instead of a full bisect if I'm right.

The only glutin-related issue I can see would be if the Awakened event isn't propagated properly. For that reason it might be interested to look at where exactly the freeze is happening in Alacritty.

If anyone is willing to help with troubleshooting, putting a println before and after this statement could give some insights. I'd assume it's stuck in there and it would be really interesting if that's not the case.

If anyone is willing to help with troubleshooting, putting a println before and after this statement could give some insights. I'd assume it's stuck in there and it would be really interesting if that's not the case.

I did this—and yes, it hangs before the statement. It also seems any kind of event will wake it up, not just a keypress, but also mouse movement.

And I'd assume while hanging, no Awakened events are displayed in --print-events?

Can you check if the wakeup is attempted by adding some debug output here? That would clearly indicate what's going on.

I'm assuming that Alacritty is trying to wake up the event loop (which is sleeping), but the wakeup call never arrives so no Awakened event is printed in --print-events and the loop is never woken up.

Can you check if the wakeup is attempted by adding some debug output here? That would clearly indicate what's going on.

Done. Below (the terminal in the background on the top-right shows the debug info) is output with the debug lines added and --print-events. Sorry for the bad photo, I can't make a screenshot as any touching of the computer causes it to become unstuck:

screen

So yes I'd say it looks like the wakeup is attempted but it stays in wait_events.

Reported upstream in https://github.com/tomaka/winit/issues/834. Thanks for the help with troubleshooting.

If anyone is willing to go through the effort of bisecting, please report your results there. If you need help with it, please let me know.

Any workarounds till this get fixed?

@chrisduerr I've done some sleuthing and have a path for future research: https://github.com/tomaka/winit/issues/834#issuecomment-482682007

If anyone on this thread is familiar with X Events, specifically, with the following man pages, you may find the explanation more quickly than me:

Thanks a ton for looking into this with so much detail. Hopefully that will help upstream.

@chrisduerr the problem goes away when I remove the explicit "wait_for_event" in src/event.rs:

image

"window.wait_events" ultimately calls winit's "run_forever" function, which relies on select (2).

@chrisduerr can you evaluate whether and why the "wait_for_event" flag is still useful / necessary? It only lives in src/event.rc and its relevant commit mentions something about "visual bell support". This was its date/author/summary message:

2017-02-03|Mark Andrus Roberts|Add visual bell support

At first glance, by removing this step, the terminal performance seems to get a lot faster and this issue becomes resolved.

Unless you feel strongly otherwise, I'll create a PR for you to evaluate.

can you evaluate whether and why the "wait_for_event" flag is still useful / necessary?

It is absolutely necessary, yes. Everything else would just be wasting resources completely, it's entirely unrelated to the visual bell.

Based on observation, this issue only occurs with multithreaded programs. For me, vim-plug.

It only hangs during the threaded calls. If I force vim-plug to use 1 thread with :PlugUpdate1, there is no problem.

line showing vim-plug is multithreaded

I've done a lot of digging but have come up short. A lot of things changed in winit, glutin AND alacritty in early March, making debugging this issue incredibly challenging.

I don't think nano is heavily multithreaded and in general I don't see how this would be affected by multithreading. So I think that might be a red herring or another issue (like a vim-internal one).

I'm having the same issue, and I think it's worth noting that (for me) it only occurs when using tmux. I can reliably reproduce this problem by running a command like htop -d 1 and waiting a few seconds; alacritty then stops drawing until I press a key. This does not happen when using alacritty without tmux.

i can reproduce this reliably with everything that streams output in Alacritty, pressing a random key (even without Alacritty having focus) resumes the stream printing,

i can reproduce this with either Nvidia or Intel graphics cards and it doesn't happen on other terminals

This bash loop is sufficient to reproduce the issue:

for ((i=0;; i++)); do printf '\r%s' $i; sleep .1; done

Eventually the count will appear to hang. Keyboard input (even shift or alt-tab) will cause it to jump up to the correct value and resume counting for awhile.

On current master (f3cc7c4c4e46778eedab18c4d25c7009b9bbb04f), this reproduces both with and without tmux. In general, it appears to reproduce somewhat more quickly and reliably under tmux.

Confirming the bisection results of others above, we found that commit 0f96a62218cfc78b56606f0dcc334d59202edf7c ("Update glutin to version 0.20") reproduces the issue but the commit before it (b1032bcc6b79135f87f327548e43563da05657fb "Add text reflow") does not.

The issue can be reproduced and has been identified. It is waiting only on upstream progress.

There's no further information necessary, so please keep things to a minimum until the upstream issue has progressed.

Same issue as @pappasam when using 0.3.2

I'm having the same issue, and I think it's worth noting that (for me) it only occurs when using tmux. I can reliably reproduce this problem by running a command like htop -d 1 and waiting a few seconds; alacritty then stops drawing until I press a key. This does not happen when using alacritty without tmux.

I cannot reproduce it using tmux (tmux 2.9a) and htop -d 1.

OS: Linux Mint 19.1
Laptop: Dell XPS 13
Kernel: x86_64 Linux 4.15.0-51-generic
Shell: zsh 5.4.2

Same issue here, whenever I run something (does not depend on which shell, terminal multiplexer, or application) that runs for more than a few seconds of outputting text to the tty, it just freezes until my mouse is moved or I press a key.

OS: Arch Linux amd64, Kernel 5.1.7, zsh 5.4.1, i3-gaps
Device: HP Elitebook 9470M, i7-3687U, 8GB RAM

Can confirm it happens to me, though, only when using the open source drivers. Like amdgpu, nouveau, i915, etc. It doesn't happen with the nvidia propietary driver.

+1 same issue
arch linux - x11 - zsh
latest alacritty from arch repo 0.3.3-3
amd - opencl-mesa 19.1.4-1

I've tried, and haven't seen the issue anymore after #2438, while it was consistently happening beforehand. Thanks for fixing this!

Happy to see this is fixed! :) Any plans to release a new version with this?

Would love a release with this fix in it. It's quite a big deal!

+1. Is there a way to build it from source while waiting for a release with this fix?

@NathanCrama Just clone the repository, change branches if needed, using Cargo, build Alacritty (run cargo build --release) and copy the binary from target/release/ to your $PATH instead of the current binary.

@sagis-tikal thanks for your answer. I guess my question wasn't clear enough: what I was wondering was which branch, if any, has this fix implemented?

@NathanCrama I used the master branch and it seems like the change is still there.

FWIW @NathanCrama, with git and GitHub you can answer these questions yourself. GitHub shows which PR this issue was closed in above:

DeepinScreenshot_select-area_20191111101640

Going to that PR we see that it was merged in 729eef0:

DeepinScreenshot_select-area_20191111101800

Now with an updated version of the alacritty repo locally, you can run git log and look for that commit to be sure it's in the tree. Or even run git log 729eef0^..HEAD to see all commits (including the merge) which came afterwards.

Hope this helps.

I've been using Master ever since the fix went in on 10/4 and it's working fine.

I don't know, I'm really confused right now. I've experienced the bug yesterday on alacritty-git (v0.3.3) from the AUR on Manjaro but I'm unable to reproduce it today.

@NathanCrama I too couldn't reliably reproduce this issue, though I would see it from time to time. Once we have a few remaining issues resolved on mater we'll be cutting a new release.

Until then, you can either run master (or something with the merged PR) or wait until the release. Sorry for any inconveniences this has caused.

@NathanCrama I think you can reliably check from which commit your alacritty is built by looking at version at version number in the output of pacman -Qi alacritty-git.

@NathanCrama Just clone the repository, change branches if needed, using Cargo, build Alacritty (run cargo build --release) and copy the binary from target/release/ to your $PATH instead of the current binary.

This is a good way for someone who doesn't want to install alacritty-git or doesn't have it available (non-AUR distro). One note to that, though: I'd recommend changing PATH instead of replacing binary manually:

export PATH="${HOME}/.cargo/bin:${PATH}"

With this approach it's enough to do cargo install --path . in one's working copy of alacritty.
After required version is released cargo uninstall alacritty can be used to remove locally built version and use the one from distro repos.

I'm also using alacritty-git from the Arch User Repository (AUR) and I'm still having the problem, or one like it.

I have been using alacritty 0.3.3 (3475e449) which was built Oct 11, 6 days after #2438 was merged to master.

I've just upgraded to alacritty 0.3.3 (561063b5) which is from today but don't expect to see any difference.

Same issue on lubuntu 19.04, vim typing lags by a few milliseconds. What you type, is seen on the screen a few milliseconds later. If you type very fast, you can def see the huge lag to the point where is not bearable. Full screen is lagging more than minimized to a smaller size for sure, but something is def bogging down performance.

I don't see this issue with terminator or qterminal.

Perhaps a good Troubleshoooting.md could help users to get to the bottom of this.

I realized that I didn't update this thread after fixing my problem. Sorry about that!

I changed my compton backend from glx to xr_glx_hybrid and poof! Delay is gone. The issue wasn't with Alacritty (for me.)

@jeffhiltz I'll give it a try since I'm on lubuntu is a good chance it could fix my issue. Cheers!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

theduke picture theduke  ·  69Comments

spamwax picture spamwax  ·  50Comments

pschyska picture pschyska  ·  61Comments

pikajude picture pikajude  ·  62Comments

inoperable picture inoperable  ·  60Comments