Commit Graph

372 Commits

Author SHA1 Message Date
Kevin Lange
4d310b3c03 Make sure wallpaper and panel clean up dead children 2014-05-10 20:09:16 -07:00
Kevin Lange
bcb86108ce Fix terminal damage rects 2014-05-10 14:02:49 -07:00
Kevin Lange
c042d04fc0 remove extraneous debug output 2014-05-09 23:04:30 -07:00
Kevin Lange
0061105b29 Make the alt-tab slick and operate as expected 2014-05-09 23:03:47 -07:00
Kevin Lange
d3273d934a Simple key binding system, plus alt-tab and ctrl-alt-t 2014-05-09 22:01:24 -07:00
Kevin Lange
ee9ff92b60 Clean up some legacy /etc stuff 2014-05-07 00:10:34 -07:00
Kevin Lange
50824abdec And actually load the right file... 2014-05-05 22:03:57 -07:00
Kevin Lange
4bcd567bb5 Uh, draw the logout button for the logout button 2014-05-05 22:00:20 -07:00
Kevin Lange
2fbc220546 Cleanup panel 2014-05-05 21:47:45 -07:00
Kevin Lange
c6dd91a113 Maintain window ordering in panel list 2014-05-05 21:18:13 -07:00
Kevin Lange
1bef69e527 Panel icons for game and julia fractals 2014-05-03 17:51:33 -07:00
Kevin Lange
49aebbbb8d advertise windows in ttk 2014-05-03 17:28:53 -07:00
Kevin Lange
0947432963 Actually make an effort to release textures from closed windows 2014-05-03 15:41:16 -07:00
Kevin Lange
a4b70a6cda Rudimentary fullscreen shortcut 2014-05-03 15:36:09 -07:00
Kevin Lange
15ff21f104 Support icons other than the precached ones 2014-05-03 13:51:37 -07:00
Kevin Lange
9fce12f10c Only used scaled rendering if icon is not correct size 2014-05-03 13:22:40 -07:00
Kevin Lange
601768c4bf Panel icon support 2014-05-03 13:20:16 -07:00
Kevin Lange
d55c5953e1 Handle focused windows properly 2014-05-03 12:22:16 -07:00
Kevin Lange
2070d255e2 New window advertisement format 2014-05-03 12:07:03 -07:00
Kevin Lange
2d7b15b231 Don't readvertise RPG window every time 2014-05-02 23:20:48 -07:00
Kevin Lange
5d4b0df120 Make sure toast daemon doesn't block its death signal 2014-04-29 00:52:31 -07:00
Kevin Lange
74d710fe5f Supplementary plane support (emojis) 2014-04-29 00:29:19 -07:00
Kevin Lange
29841b03fc Fix waitpid calls to account for EINTR 2014-04-29 00:28:41 -07:00
Kevin Lange
4d8335ad75 Implement proper wait/waitpid.
This is a pretty big commit, so let's run through it in parts:

- All of the userspace changes are to switch away from syscall_wait
  Mostly, this is to waitpid; some things were tweaked to do things
  "properly" instead of waiting for particular processes. Init has
  been fixed to do a proper spin wait.
- syscall_wait is gone - as are its uses. newlib bindings have been
  using just waitpid for a while now.
- waitpid now performs like a Unix waitpid
- process reaping is no longer a "do this on next change thing":
  it happens when a process is waited on, like it should
  (That means we can have real zombies: terminated processes that
  have not yet been waited on)
- Reparenting of children to init has been implemented, so you
  can fork-daemonize!

Overall, this is pretty big... So I hope it doesn't break everything.
2014-04-27 01:37:33 -07:00
Kevin Lange
cb19356d50 Break out some magic numbers in toast daemon 2014-04-26 18:05:56 -07:00
Kevin Lange
d79bd92b6c Updated toast theme 2014-04-25 23:16:58 -07:00
Kevin Lange
273b4ce9fa Don't draw logo after login 2014-04-24 22:41:23 -07:00
Kevin Lange
a56a6a6f9c fix some dumb stuff in Draw 2014-04-24 22:38:53 -07:00
Kevin Lange
1487ad17e5 Fix focus default in terminal 2014-04-24 22:36:20 -07:00
Kevin Lange
af6ad29235 Finish port of ttk-demo to yutani 2014-04-23 21:15:12 -07:00
Kevin Lange
1b3dcea6a1 Toast notification daemon 2014-04-21 19:46:38 -07:00
Kevin Lange
deeb1c42a5 fix bad operation ordering for window allocation 2014-04-20 13:47:59 -07:00
Kevin Lange
3241d36e6d Mouse enter/leave/move for non-focused window 2014-04-20 13:44:17 -07:00
Kevin Lange
d967fae3a5 Track down the root of that malloc problem 2014-04-20 13:19:52 -07:00
Kevin Lange
30a79e8ac6 Change focus from panel 2014-04-20 01:24:10 -07:00
Kevin Lange
140f5a71e0 Reenable scrollback (bit glitchy) 2014-04-19 19:51:11 -07:00
Kevin Lange
6300959b12 Ensure thread safety during window buffer things 2014-04-19 19:11:10 -07:00
Kevin Lange
05e3276858 Workaround a weird glitch in newlib's malloc 2014-04-19 19:10:44 -07:00
Kevin Lange
40124cac49 various minor pieces of cleanup 2014-04-19 18:37:37 -07:00
Kevin Lange
6c5a14c839 Fix timings for logo animation in login window 2014-04-19 18:12:13 -07:00
Kevin Lange
77b830ace5 Regular mouse movement events
Demonstrated in the wallpaper with hover states for the icons
2014-04-19 17:44:20 -07:00
Kevin Lange
c5c895bc06 Don't send sigint to wallpaper on session exit 2014-04-19 17:11:07 -07:00
Kevin Lange
30d4eade35 fix missing break in game 2014-04-19 17:08:14 -07:00
Kevin Lange
48e0ddd99e Rudimentary animation system
This is actually the same as the animation system from the old
compositor, but with some added bits for damage rects.
2014-04-19 16:59:32 -07:00
Kevin Lange
9e152263c7 fix terminal rendering on scroll 2014-04-19 15:00:26 -07:00
Kevin Lange
68892b9023 Terminal should only resize to nice sizes if it can. 2014-04-18 20:07:46 -07:00
Kevin Lange
fb67eca4ff support resize in terminal 2014-04-18 19:46:05 -07:00
Kevin Lange
3591981f58 should mark windows win they request to be moved 2014-04-18 19:45:55 -07:00
Kevin Lange
9264a203dd Quick and dirty session ending support with a broadcast event 2014-04-18 19:23:45 -07:00
Kevin Lange
700e711606 Start on panel functionality: Window title advertisement 2014-04-18 00:18:19 -07:00
Kevin Lange
0535ccd993 mouse-initiated window resizes 2014-04-17 00:24:54 -07:00
Kevin Lange
b3410b4b4b Basic resize support (client-initiated) 2014-04-16 23:50:57 -07:00
Kevin Lange
092b08e496 Use an asynch poll loop to eat events in rpg demo (like we used to) 2014-04-16 18:51:09 -07:00
Kevin Lange
939749edf9 unbork terminal 2014-04-16 11:18:40 -07:00
Kevin Lange
9a985ff5fc Speed up terminal rendering a bit with regions 2014-04-16 00:59:58 -07:00
Kevin Lange
7827244d64 Add a subregion damage command 2014-04-16 00:00:52 -07:00
Kevin Lange
2cd36c2edf unbreak ^C and make window rotation use the right bindings 2014-04-15 23:26:27 -07:00
Kevin Lange
16d7a9e032 Make wallpaper icons work again 2014-04-15 21:27:07 -07:00
Kevin Lange
d48b00a767 Kill window.h/window.c 2014-04-15 21:22:45 -07:00
Kevin Lange
262f06a979 port a bunch of other things 2014-04-15 21:16:46 -07:00
Kevin Lange
32fca2fa1b port make-it-snow to yutani 2014-04-15 20:43:08 -07:00
Kevin Lange
0c46b42667 port cairo and pixman demos 2014-04-15 20:38:47 -07:00
Kevin Lange
6065112552 port teapot to yutani 2014-04-15 20:31:14 -07:00
Kevin Lange
4801031d6d port gears to yutani 2014-04-15 20:22:12 -07:00
Kevin Lange
80854c820f fix missing free from yutani poll 2014-04-15 20:22:02 -07:00
Kevin Lange
0ba7947052 port clock-win to yutani 2014-04-15 20:08:21 -07:00
Kevin Lange
39af77be57 port drawlines to yutani 2014-04-15 20:08:12 -07:00
Kevin Lange
b8551d2174 Kill the old compositor 2014-04-15 19:45:56 -07:00
Kevin Lange
c08aa78052 Make draw-beta super speedy 2014-04-15 00:04:39 -07:00
Kevin Lange
73b0fd1f6c Verify mouse events work with a port of Draw 2014-04-14 23:46:13 -07:00
Kevin Lange
f4c6ef10ad Basic mouse events to windows 2014-04-14 23:24:44 -07:00
Kevin Lange
e39c08965e Bring back rotation 2014-04-14 22:42:40 -07:00
Kevin Lange
00ecfff45f make kbd library reentrant 2014-04-14 21:03:23 -07:00
Kevin Lange
17f176c888 Basic window movement in Yutani 2014-04-13 21:52:16 -07:00
Kevin Lange
6db3fe2ec2 Focus change events 2014-04-13 18:28:42 -07:00
Kevin Lange
f0ca89685b Support window focus change 2014-04-13 17:58:19 -07:00
Kevin Lange
731c1303c2 Use env to store compositor endpoint 2014-04-12 18:59:43 -07:00
Kevin Lange
9a8cd903c0 Fix argument handling in yutani 2014-04-12 16:20:46 -07:00
Kevin Lange
bb5b6a0830 Add args parsing and some error handling to yutani 2014-04-11 22:43:18 -07:00
Kevin Lange
d85f3fd4ce Resurrect vga terminal 2014-04-11 20:03:01 -07:00
Kevin Lange
a5621fee66 prepare glogin-beta for eventual cairo port 2014-04-10 21:59:03 -07:00
Kevin Lange
dbcb8b39f7 Use a render thread. 2014-04-07 00:51:59 -07:00
Kevin Lange
44d177a466 Use cairo to flip framebuffer with clips 2014-04-07 00:23:20 -07:00
Kevin Lange
e919ec4548 idgi, but this seems to work 2014-04-06 21:03:50 -07:00
Kevin Lange
58f32b064d Port stuff from old compositor
lots of stacking functionality ported
still need window focus and mouse events, plus mouse move and other
server-side control...
2014-04-06 20:42:29 -07:00
Kevin Lange
4002901d0d Run login app and have it run terminal 2014-04-06 18:48:40 -07:00
Kevin Lange
7009e4ec1c Continued progress on Yutani 2014-04-06 18:21:35 -07:00
Kevin Lange
60d66da7e6 Quick port of Terminal to yutani 2014-04-06 13:25:04 -07:00
Kevin Lange
058574d5a8 fix some missing frees 2014-04-06 00:30:00 -07:00
Kevin Lange
ed82bbd55e quick hacks to get key events flowing 2014-04-05 19:26:49 -07:00
Kevin Lange
6ea113d8b2 Very early work on yutani 2014-04-05 18:36:07 -07:00
Kevin Lange
490d1dd9f0 Fix compositor keyboard after I broke it 2014-04-05 17:06:28 -07:00
Kevin Lange
a8d599b570 Remove calls to syscall_print 2014-04-05 15:25:34 -07:00
Kevin Lange
2205c11ae0 Cleaner desktop launch 2014-04-01 21:39:08 -07:00
Kevin Lange
ace9e62ccc Actually, do the fade, but not the scale 2014-04-01 21:29:36 -07:00
Kevin Lange
b53d912e3e Updated login screen 2014-04-01 21:23:56 -07:00
Kevin Lange
3140c8e4b2 Disable animations for backrounds and panels 2014-04-01 21:22:58 -07:00
Kevin Lange
927d16950a cleanup for ansi library 2014-03-24 21:35:27 -07:00
Kevin Lange
543ca3eb5e initial work to separate ansi/term stuff to library 2014-03-24 21:08:07 -07:00
Kevin Lange
ee30393e48 Keyboard + Mouse as modules 2014-03-16 15:13:27 -07:00
Kevin Lange
af14fd2e72 oops 2014-03-15 20:54:20 -07:00
Kevin Lange
82a917d270 no more serial syscall
More cleanup

Oopsy
2014-03-15 20:51:11 -07:00
Kevin Lange
faec73e73d Workaround an issue where terminals werne't closing 2013-12-02 21:05:30 -08:00
Kevin Lange
a9d5009060 Fix terminal alpha rendering in fullscreen mode 2013-11-28 16:14:41 -08:00
Kevin Lange
59cdfbe9a6 Make teapot close with q like everyone else 2013-10-19 00:29:00 -07:00
Kevin Lange
5d1aa1f6b8 Special-case some block drawing to make it look better 2013-09-01 18:32:46 -07:00
Kevin Lange
a1784a5da1 Fix handling of line endings at right side of screen 2013-08-21 18:30:20 -07:00
Kevin Lange
40f0c41932 Preliminary termios support
This is some initial work on support real PTYs.
Canonical mode is not supported at the moment.
2013-07-27 00:18:29 -07:00
Kevin Lange
fd259ce8ab Rough screenshot support
Still needs to be moved to the print screen key. Ctrl+Shift+P for whole
screen, Ctrl+Shift+Alt+P for active window.
2013-07-22 22:42:24 -07:00
Kevin Lange
9f50d7a3bf WHY AM I PRINTING THIS 2013-07-22 22:41:56 -07:00
Kevin Lange
caf16396c1 More threads, less stat 2013-07-20 02:11:27 -07:00
Kevin Lange
69f3cd3b05 Kill the VGA terminal.
I am going to replace it after I finish making the ANSI escape parser
modular again (it became a bit less modular during the development of
this terminal).

These changes are part of an effort to make the terminal more efficient.
Another goal is to make the terminal use the "new-style" compositor
interface, which is still in development.
2013-06-28 18:51:30 -07:00
Kevin Lange
570905a7d2 Kill the font loading bar 2013-06-28 00:55:02 -07:00
Kevin Lange
a0b589b56b Drop legacy fullscreen from plasma 2013-06-28 00:43:35 -07:00
Kevin Lange
9a40a41f03 Drop legacy fullscreen support and add new fullscreen support 2013-06-28 00:42:40 -07:00
Kevin Lange
43a795fa9a Compositor can now take an argument for what to run on startup 2013-06-28 00:33:03 -07:00
Kevin Lange
15be8f2138 thinking about this still 2013-06-28 00:15:32 -07:00
Kevin Lange
a36421ae4e Like I said, use FAST/GOOD macros instead 2013-06-18 23:48:04 -07:00
Kevin Lange
b6ec637f74 Use nearest-neighbor scaling
Major speed improvement, though it might make things like "Scale
windows" look a bit less polished; windows that are scaled up in scale
mode are rendered with bilinear scaling. Will probably replace with the
FAST/GOOD macros later.

Also, add the framework for Alt+Tab window picking (not implemented yet)
2013-06-18 23:43:56 -07:00
Kevin Lange
2888fc776f Add alt key support to terminal 2013-06-15 15:23:10 -07:00
Kevin Lange
b7254576d4 Don't lock up when a client isn't paying attention
Also fix the mouse to account for this... development.
Smoother mouse movement all around, though it may make things slightlys
lower by spamming lots of mouse packets. Just write good clients and
everything will be fine...
2013-06-12 23:37:07 -07:00
Kevin Lange
cf91715ab5 Missed one 2013-06-10 10:39:58 -07:00
Kevin Lange
abc8298b4b Fix logout (actually login problem) 2013-06-10 00:55:33 -07:00
Kevin Lange
4c9be9361a Compositor animations - actual
There are both some good changes and some terribly hacky changes in this
commit.

- Server uses a different struct than client now for windows, so
  arbitrary compositor things like effect parameters can be added
  without having to rebuild everything. That's good.
- Client window structs no longer attempt to track or use window
  locations. That's good.
- Windows do not destroy in response to the destory command, but rather,
  a special animation is triggered; the end state for this animation
  calls the actually window destruction code. That's a hack.
- Animations are based on rendered frames, not on time. That's a hack.
2013-05-29 21:31:59 -07:00
Kevin Lange
c3995aaa55 Workaround window corruption on startup 2013-05-22 22:59:23 -07:00
Kevin Lange
80445dafcc Various shell and terminal cleanups 2013-05-22 21:59:28 -07:00
Kevin Lange
3e59074974 [terminal] redraw cursor on focus change 2013-05-22 20:56:52 -07:00
Kevin Lange
0420002212 Quick hack: Animation demo 2013-05-21 21:11:30 -07:00
Kevin Lange
fd7c103c78 Teapot Mesa shader example 2013-05-13 02:59:10 -07:00
Kevin Lange
416d483fd6 Box drawing and new wcwidth
Currently a brute-force method, going
to replace this with a Markus Khun-esque interval
search shortly.
2013-05-11 13:20:20 -07:00
Kevin Lange
04dccab9a4 Swap /bin and /usr/bin in PATH 2013-05-10 19:34:01 -07:00
Kevin Lange
8d20462288 work around -onlcr 2013-05-09 23:56:49 -07:00
Kevin Lange
0789c46bfe Add /usr/bin to default PATH 2013-05-08 00:45:27 -07:00
Kevin Lange
1e664bef2b Integrate signals into libc 2013-05-05 15:00:24 -07:00
Kevin Lange
fcdec09eaf Unfocused terminal cursor box 2013-05-04 23:22:54 -07:00
Kevin Lange
907566b259 Fix terminal padding opacity 2013-05-03 00:20:16 -07:00
Kevin Lange
8ceb3f990a New panel layout and background 2013-05-02 23:33:57 -07:00
Kevin Lange
8af7d27445 Make terminal darker 2013-05-01 18:35:03 -07:00
Kevin Lange
8b39566b43 Kill some code duplication in the terminal 2013-04-27 01:43:24 -07:00
Kevin Lange
6aa623216d But clear the buffer on ^C 2013-04-27 01:16:17 -07:00
Kevin Lange
b575e5e2e4 Flush buffer on switch to raw mode 2013-04-27 01:14:21 -07:00
Kevin Lange
038a899b45 i have no idea why I'm messing with this clock 2013-04-16 23:05:29 -07:00
Kevin Lange
b6dd8f47c6 More curses samples 2013-04-13 20:59:36 -07:00
Kevin Lange
cd677b44c3 Fix up some terminal bits, add F keys 2013-04-13 20:21:40 -07:00
Kevin Lange
0a140ce941 gears (a port of glxgears) SEE LICENSE IN FILE 2013-04-12 21:20:38 -07:00
Kevin Lange
5177d6fa76 more work on ttk 2013-04-08 20:44:42 -07:00
Kevin Lange
7ed7f85769 Various windowing and TTK improvements 2013-04-07 16:21:00 -07:00
Kevin Lange
969d454083 disable visual bell in terminal 2013-04-02 23:02:54 -07:00
Kevin Lange
5152ed6305 pid_t for pid on fork 2013-04-02 15:25:40 -07:00
Kevin Lange
f411f84047 Fix scale mode 2013-04-02 02:14:35 -07:00
Kevin Lange
724a7e2745 Translate by integer coordinates for crisp 90d rotations 2013-04-02 02:10:45 -07:00
Kevin Lange
c0cc4a8907 For simplicity, use integer degrees for rotation.
Ensures crisp 180s, still working on 90s.
2013-04-02 01:39:48 -07:00
Kevin Lange
17879bd850 EXPERIMENTAL: Rotating windows.
* Dumb bounding box top_at logic replaced with select buffer
* Select buffer rendered through cairo with AA disabled
  Using rectangles for window shapes - this should easily
  be expandable to 1bpp bitmaps. Currently, the select buffer
  is very inefficient, using twice the space it needs (plus,
  it's double buffered, so in reality, 4x the space needed),
  however, it's also very accurate and fast, and I like that.
* Window rotation is controlled through Ctrl+Shift+{z,x,c} where
  z = rotate 1 degree left
  x = rotate 1 degree right
  c = reset rotation
* Input is remapped based on window rotation, so you *can* use the
  draw app, and it is totally epic.
2013-04-02 01:26:32 -07:00
Kevin Lange
4a66259cb8 Fix a couple minor rendering issues in the terminal 2013-04-01 21:25:53 -07:00
Kevin Lange
7c4cd8dd51 fix nulldev, add zerodev 2013-03-31 13:01:05 -07:00
Kevin Lange
02a6d7ebc1 Replace Elementary icons 2013-03-30 21:20:47 -07:00
Kevin Lange
e2d5411a96 Use alpha channel in text rendering in terminal 2013-03-29 00:39:23 -07:00
Kevin Lange
8e48ee8cfa Fix alpha blitting once and for all 2013-03-29 00:34:12 -07:00
Kevin Lange
98b6ae5867 esh -> sh, clean up
* login should set some environment variables now
* init should start terminals as login shells, so --single doesn't really
  mean "single user" any more, just sorta single terminal session
* system() should work now since esh now accepts -c; not that vim is
  still going to be unhappy because it does crazy shit.
2013-03-28 00:12:48 -07:00
Kevin Lange
eff6aa9114 RGB color support in terminal 2013-03-27 17:42:47 -07:00
Kevin Lange
faae12f1cd Fix bg=16 in terminal being interpreted as transparent
This fixes a bug in Vim and one introduced an hour ago in Nyancat.
This bug was also present in early versions of bim.

Problem: If the background is set to 16 (all black) explicitly, we still
treat it as if it is the default color and thus make it transparent.
This is wrong, only the default background, as set by resetting either
the bg itself (with mode 49) or the full display parameter set (with 0)
should show up transparent.

Solution: By using flag to indicate wether the background is "default",
we can detect other uses of background color 16 without having fudge
with other colors like 0. The flag is ANSI_SPECBG, where SPEC means
"special", and thus it is set any time the background changes
explicitly, and is unset in raw cells or places where we are in default
mode.
2013-03-27 00:22:15 -07:00
Kevin Lange
5867eec659 Deprecate legacy terminal size feedback 2013-03-25 22:24:26 -07:00
Kevin Lange
479827eb1b Clean up terminal resizes; fix scale 2013-03-22 22:08:21 -07:00
Kevin Lange
fa79c89e54 Some fixes and cleanup 2013-03-22 11:58:22 -07:00
Kevin Lange
ef459bdaad More rough stubs and fixes 2013-03-20 21:24:55 -07:00
Kevin Lange
21aeb34ea4 Rough ioctl with support for winsize 2013-03-18 23:57:40 -07:00
Kevin Lange
71342f842d procfs, and more pty cleanup 2013-03-18 00:52:12 -07:00
Kevin Lange
e02cf79e2a Rough PTY support (needs work) 2013-03-17 16:34:23 -07:00
Kevin Lange
22f04f137b Relatively compliant uname() implementation
Also, sleep() as a function (implemented by way of nanosleep) and new
absolute and relative sleep system calls added to newlib.

[ci skip] I damn well know this is going to break CI.
2013-03-13 21:55:25 -07:00
Kevin Lange
a8020854e4 TTK as a library 2013-02-12 00:04:31 -08:00
Kevin Lange
4dbdaf342d compositor2 -> compositor 2013-02-10 02:01:31 -08:00
Kevin Lange
b2f94bd393 Completely new build system for userspace 2013-02-10 01:36:35 -08:00