Breathing life back into the

CarstenCarsten HaitzlerHaitzler

<> <>

LinuxLinux ForumForum KoreaKorea NovemberNovember 14,14, 20132013

What... Err.. Who am I?

PrincipalPrincipal EngineerEngineer atat SamsungSamsung ElectronicsElectronics HQHQ

GraphicsGraphics ArchitectArchitect workingworking onon TizenTizen

Founder/Leader/DictatorFounder/Leader/Dictator /EFLEnlightenment/EFL etc.etc.

SillySilly WeiguginWeigugin hanginghanging aroundaround inin AsiaAsia

The future is...

HTML5

Err...

Escape codes!

Terminology

What is a terminal?

Type + Print

●TypeType inin ●SimpleSimple characterscharacters ●SimpleSimple controlscontrols ●PrinterPrinter printsprints outputoutput resultsresults ●Printer-likePrinter-like controlscontrols ●SimpleSimple charactercharacter supportsupport (no(no bitmapsbitmaps etc.)etc.)

LotsLots ofof deaddead treestrees

All hail the cereal terminal

AllAll hailhail thethe cerealcerealserialserial terminalterminal

●TheThe mightymighty VT100VT100 comescomes toto thethe rescuerescue ●SavesSaves thethe rain-forests!rain-forests! ●HighHigh resolutionresolution 80x2480x24 characters!characters! ●12001200 bitsbits perper secondsecond displaydisplay pipeline!pipeline! ●22 amazingamazing colorscolors ●IntelIntel 8-bit8-bit 80808080 CPUCPU atat aa blisteringblistering 3-6Mhz!3-6Mhz!

●Other terminals did come before like the VT05

AllAll hailhail thethe cerealcerealserialserial terminalterminal

●MakesMakes forfor aa nicenice catcat carrycarry case!case!

CrazyCrazy peoplepeople wantedwanted pixelspixels

●TextText justjust waswas notnot goodgood enoughenough ●AllAll thethe trendytrendy peoplepeople werewere doingdoing itit ●ItIt soldsold moremore hardwarehardware

AndAnd waswas warmwarm enoughenough toto sitsit onon

But we still used terminals

●TotallyTotally addictedaddicted toto texttext ●YouYou cancan prypry mymy grepgrep outout ofof mymy coldcold deaddead handshands ●MassiveMassive install-baseinstall-base ofof command-linecommand-line softwaresoftware ●FunctionalFunctional andand efficientefficient forfor thosethose thatthat learnedlearned thethe command-linecommand-line worldworld

Behold … the !

The VT100 returns

●SoftwareSoftware emulationemulation ofof thethe VT100VT100 ●AddsAdds otherother terminalterminal typestypes tootoo ●AlmostAlmost limitlesslimitless scrollbackscrollback supportsupport ●CanCan do...do... CCOOLLOORR!! ●Doesn'tDoesn't requirerequire halfhalf youryour deskdesk toto runrun ●BeginsBegins withwith aa coolcool letterletter 'X''X' likelike X-Men!X-Men!

Has awesome code

/* * W A R N I N G * * If you think you know what all of this code is doing, you are * probably very mistaken. There be serious and nasty dragons here.

●ExcerptExcerpt directdirect fromfrom xtermxterm sourcesource

And the beat goes on

●LotsLots ofof otherother terminalsterminals werewere createdcreated ●FewerFewer dragonsdragons inin themthem ● RxvtRxvt

● Urxvt

● Eterm

● Gnome-terminal

● Terminator

-terminal...

But finally the one you all were waiting for...

TERMINOLOGY

YAYYAY

How did it come about?

HangingHanging outout inin Seoul...Seoul... wantingwanting aa betterbetter terminalterminal

Flew off to thailand...

Hung out on a beach for a week

AndAnd onon thethe 77th day...day...

Why YAY?

ThisThis isis betterbetter saidsaid asas aa demo...demo...

Why YAY?

●FirstFirst terminalterminal toto useuse modernmodern EFLEFL ●EtermEterm definitelydefinitely doesdoes notnot ●Written-from-scratchWritten-from-scratch terminalterminal emulationemulation ●NoNo dragonsdragons ●256256 colorscolors supportedsupported ●CompressedCompressed in-memoryin-memory scrollbackscrollback ●NotNot loggedlogged toto diskdisk likelike somesome terminalsterminals

Why YAY?

●ARGBARGB TransparencyTransparency supportedsupported ●BitmapBitmap andand outlineoutline fontsfonts supportedsupported ●UnicodeUnicode UTF8UTF8 supportedsupported outout ofof thethe boxbox ●InputInput methodsmethods forfor complexcomplex languageslanguages ●SingleSingle oror multiplemultiple processprocess modelmodel ●TabsTabs ●SplitsSplits

Why YAY?

●BackgroundBackground images/animations/videoimages/animations/video etc.etc. ●InlinedInlined images/video/animationsimages/video/animations etc.etc. ●InlinedInlined thumbnailsthumbnails ●Built-inBuilt-in popuppopup ofof mediamedia filesfiles ●URL/pathURL/path highlightinghighlighting ●AutoAuto fetchfetch ofof http/ftphttp/ftp contentcontent ●ThemesThemes

Why YAY?

●WaylandWayland alreadyalready supportedsupported ●WorksWorks inin rawraw framebufferframebuffer withoutwithout X11X11 ●ShouldShould workwork inin TizenTizen alreadyalready ●BuiltBuilt inin configconfig UIUI ●NoNo command-linecommand-line oror texttext filesfiles neededneeded ●PrettyPretty themetheme byby defaultdefault ●OpenGL(ES)OpenGL(ES) renderingrendering alreadyalready possiblepossible

Why YAY?

●SpeedSpeed ●AlmostAlmost asas fastfast asas urxvturxvt (fastest(fastest terminal)terminal) ●BeatsBeats almostalmost everyoneeveryone despitedespite fancierfancier displaydisplay ● 10x10x -- timetime catcat pg100.txtpg100.txt * N.B. These times vary based on driver (below on intel)

But why should that matter?

●AllAll ofof thesethese featuresfeatures withwith aa smallsmall codebasecodebase ●~21,000~21,000 LinesLines ofof codecode onlyonly forfor everythingeverything ●EFLEFL bringsbrings mostmost thingsthings forfor freefree ●MemoryMemory footprintfootprint keptkept reasonablereasonable ●YouYou KNOWKNOW youyou wantwant catcat gifsgifs asas aa terminalterminal wallpaperwallpaper ●StructureStructure && developmentdevelopment areare simplesimple

All things start with a window

●WMWM providesprovides frameframe (except(except Wayland)Wayland) ●CheckCheck areaarea providesprovides byby applicationapplication

All things start with a window

●AllAll windowwindow contentcontent mademade upup ofof objectsobjects ●EachEach objectobject inin thethe scenescene graphgraph asas

propertiesproperties andand contentcontent ofof itsits ownown Basic application layout

●AddAdd aa basebase withwith shadingshading ●CanCan seesee throughthrough toto windowswindows belowbelow

Add some cats

●NoNo appapp completecomplete withoutwithout flufffluff ●FluffFluff isis independentindependent –– cancan animateanimate alonealone

The terminal object goes in

●IsIs aa gridgrid ofof texttext charschars thatthat mirrormirror terminalterminal ●SimplySimply layers/overlayslayers/overlays onon whatwhat isis underunder

Add some shine

●AlphaAlpha channelschannels allowallow lightinglighting effectseffects ●AreAre compositedcomposited atat runtimeruntime byby EvasEvas

Coming together

●AllAll thethe layerslayers andand elementselements makemake upup thethe UIUI ●AllAll objects/layersobjects/layers areare independentindependent

Coming together

●SameSame mediamedia objectsobjects re-usedre-used forfor popupspopups ●Re-usedRe-used forfor inlineinline mediamedia tootoo

Coming together

●SmartSmart objectsobjects actact asas “classes”“classes” toto savesave workwork ●Pre-madePre-made smartsmart objectsobjects likelike emotionemotion givegive

youyou videovideo andand audioaudio Easy to use to learn EFL

●AboutAbout halfhalf ofof codecode directlydirectly relatedrelated toto terminalterminal emulator,emulator, notnot “UI”“UI” ●AnyAny specificspecific UIUI featurefeature onlyonly betweenbetween 220-220- 13001300 LinesLines ofof CC eacheach ●Self-containedSelf-contained UIUI unitsunits ●ActsActs asas aa goodgood exampleexample ofof usingusing EFLEFL inin appsapps ●MyMy catcat approvesapproves ofof itsits codecode

Where?

#e, #edevelop on irc.freenode.net http://www.enlightenment.org http://www.enlightenment.org/p.php?p=about/terminology http://git.enlightenment.org/apps/terminology.git Terminology 0.4 Alpha release + EFL 1.8 Alpha + E 0.18 Alpha https://phab.enlightenment.org/phame/live/3/

Q&A

Flames,Flames, GrillsGrills andand HappinessHappiness

:)