SlideShare a Scribd company logo
Themes, shells and other
       animals
Themes
   Plasma graphics is heavily based on the
    Svg standard
   Easily themeable
   Architecture indipendence
   Basis for resolution indipendence
   High level of abstraction from an API
    standpoint
Using Svgs from themes
   They are installed in the KDE prefix/share/
    apps/desktopthemes/themeName
   Subfolders: dialogs, widgets, applet
    names, opaque, locolor
   Loading them:
           Plasma::Theme abstracts the loading of the proper
              path, with proper fallbacks
           m_svg->setImagePath(“widgets/background”);
From packages
   A scripted applet can load a svg from its
    own package with Package::filePath()
           In javascript you do
              plasmoid.findSvg(“foo”)
           Will search foo.svg(z) in the images
             subfolder of your plasmoid
Some advices
   Try to use graphics from the theme and
    default widgets as much as possible
   Install your own graphics (c++ case) or use
    from the package (scripted case) only
    when really necessary
   Try to make visually work your additional
    graphic with different themes (at least dark
    vs light)
Implementation details:
            Plasma::Svg
   The central machinery that renders svgs,
    eases use of QSvgRenderer
   Several optimizations (a renderer is quite
    heavy):
           Shared: for each svg file a single shared
             renderer
           Cached: saves rendered svgs on disk:
             avoids completely creation of renderers
             in some cases
   Use it: several paint() functions, takes a
    Qpainter as argument
Plasma::FrameSvg
           Most Plasma theme
            elements style mostly-
            rectangular widgets
           Svg is scalable, but...
            not so much :)
           We want to keep the
            radius of rounded
            borders intact and each
            element exactly aligned
            to the pixel grid
           Plasma::FrameSvg
            comes to rescue
From a graphics standpoint
            We have svgs made of 9
             elements: center, edges and
             corners
            The center can be scaled as
             ve wish
            Corners are NEVER scaled
            Horizontal edges are scaled
             in the x axis, vertical in the y
             axis instead
From a code standpoint
   FrameSvg is a subclass of Svg, so usual
    setImagePath()
   ResizeFrame scales the final composition
    with said rules
   PaintFrame() paints the whole composition
   A svg can have multiple sets of 9 elements
    sets, with a different prefix in their name,
    switch with setElementPrefix()
Part 2: shells - Plasma-mid
   Plasma-mid is an experimental interface for
    mobile internet devices and other
    contrained little devices.
   Work began at Akademy-2008, mostly by
    Aaron, some work by Sebas in mid-specific
    containments, some patches by me and i'm
    forgetting somebody, sorry :)
   The improved sytem-tray we have now
    actually derives from toughts and design
    around plasma-mid
Plasma-mid
   What does work
          Plasma-mid is a barebone plasma app with a
             main view and a panel view in the same window
          Loads correctly applet layouts from config files
          Supports panels in the 4 locations
          The main view can correctly switch containment
   What does not
          More than 1 panel
          Any configuration interface, hand editing
             configuration files is necessary
One size fits.. not much
   Different devices with different hardware
    capabilities will need to have a different-
    looking interface.. different applets layout
    same app
   Touchscreen or not, keyboard and mouse
    or not, makes needed stuff and Fitt's laws
    slightly different
   Also, a really tiny single-purpose device
    could have just plasma, a more general
    one like the Eee mixes up plasma and
    traditional apps
Current demo
   A plasma-based interface that mostly
    manages traditional apps
   Right vertical panel thumb friendly with an
    activitybar, an “activewindow”, a sytemtray
    and a clock
   3 activities: an icon list to launch apps, a
    fullscreen taskbar and a traditional widgets
    space
   Ideally the windowmanager would have to
    be very barebone, even more than
    matchbox
Current demo
   It's a full screen non-desktop window, with
    the panel area reserved, so clicking on the
    panel brings the plasma interface on top
   Both the panel and the main screen
    containments are simplified mid-oriented
    code
   It's done with already existing applets,
    maybe not really adapt and not so pretty
    but we have a basic working thing from
    where we can start to build something
Media center
   Current media center solutions are
    applications that aims to turn a pc in an
    easy attach-to-your-tv single purpose box
   The charateristics of Plasma we're
    developing both in terms of good looking ui
    and network services transparency would
    make this possible, but...
We can do more than that
   Blend media center related stuff and the
    traditional desktop (media center activity?)
   Control a media center from an another
    machine with your plasma desktop (or
    even your plasma-mid portable device ;)
   Scripted widgets to control the media could
    be sent across the network
   Anything ele that can't think about now
What there is now...
    ...And what realistically i would like to get in
    KDE 4.3:
   A video widget in libplasma usable even
    with few lines of javascript
   A media player plasmoid with basic
    audio/video playback capabilities and a
    dbus interface to be remote controlled
Questions?

More Related Content

Viewers also liked

Campkde 2010: KDE Plasma netbook
Campkde 2010: KDE Plasma netbookCampkde 2010: KDE Plasma netbook
Campkde 2010: KDE Plasma netbook
Marco Martin
 
Graphics Art 1
Graphics Art 1Graphics Art 1
Graphics Art 1
guest3cb8af
 
Akademy 2010 presentation
Akademy 2010 presentationAkademy 2010 presentation
Akademy 2010 presentation
Marco Martin
 
URSI 2008
URSI 2008URSI 2008
URSI 2008
guestfe1066
 
Krasne fotky a vtipy
Krasne  fotky  a vtipyKrasne  fotky  a vtipy
Krasne fotky a vtipyHaKuPa
 
Vocab 1.3
Vocab 1.3Vocab 1.3
Vocab 1.3
Jeff Young
 
Podzimni prochazka s Ferdou 2
Podzimni prochazka s Ferdou 2Podzimni prochazka s Ferdou 2
Podzimni prochazka s Ferdou 2HaKuPa
 
farm Animals
farm Animalsfarm Animals
farm Animals
Cristina Cobarrientos
 
10 10 How To Protect Your Bank Card
10 10 How To Protect Your Bank Card10 10 How To Protect Your Bank Card
10 10 How To Protect Your Bank Card
Minh NghC
 

Viewers also liked (10)

Campkde 2010: KDE Plasma netbook
Campkde 2010: KDE Plasma netbookCampkde 2010: KDE Plasma netbook
Campkde 2010: KDE Plasma netbook
 
Graphics Art 1
Graphics Art 1Graphics Art 1
Graphics Art 1
 
Akademy 2010 presentation
Akademy 2010 presentationAkademy 2010 presentation
Akademy 2010 presentation
 
URSI 2008
URSI 2008URSI 2008
URSI 2008
 
Krasne fotky a vtipy
Krasne  fotky  a vtipyKrasne  fotky  a vtipy
Krasne fotky a vtipy
 
Vocab 1.3
Vocab 1.3Vocab 1.3
Vocab 1.3
 
Podzimni prochazka s Ferdou 2
Podzimni prochazka s Ferdou 2Podzimni prochazka s Ferdou 2
Podzimni prochazka s Ferdou 2
 
farm Animals
farm Animalsfarm Animals
farm Animals
 
10 10 How To Protect Your Bank Card
10 10 How To Protect Your Bank Card10 10 How To Protect Your Bank Card
10 10 How To Protect Your Bank Card
 
Kinder ppp numbers from 50 59
Kinder ppp numbers from 50 59Kinder ppp numbers from 50 59
Kinder ppp numbers from 50 59
 

Similar to Tokamak2: themes and netbook shell

EFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the DesktopEFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the Desktop
Samsung Open Source Group
 
pastel
pastelpastel
pastel
pastelpastel
Minko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSL
Minko3D
 
An Introduction to Computer Science with Java .docx
An Introduction to  Computer Science with Java .docxAn Introduction to  Computer Science with Java .docx
An Introduction to Computer Science with Java .docx
daniahendric
 
WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?
Brainhub
 
JAVA_STEP_V7
JAVA_STEP_V7JAVA_STEP_V7
JAVA_STEP_V7
Richard Haney
 
Migration To Multi Core - Parallel Programming Models
Migration To Multi Core - Parallel Programming ModelsMigration To Multi Core - Parallel Programming Models
Migration To Multi Core - Parallel Programming Models
Zvi Avraham
 
Yahoo! On Microsoft .NET 3.0 and Microsoft Expression
Yahoo! On Microsoft .NET 3.0 and Microsoft ExpressionYahoo! On Microsoft .NET 3.0 and Microsoft Expression
Yahoo! On Microsoft .NET 3.0 and Microsoft Expression
goodfriday
 
React native
React nativeReact native
Howto curses
Howto cursesHowto curses
Howto curses
Sergi Duró
 
Writing native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScriptWriting native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScript
Igalia
 
basic_java.ppt
basic_java.pptbasic_java.ppt
basic_java.ppt
sujatha629799
 
Sig13 ce future_gfx
Sig13 ce future_gfxSig13 ce future_gfx
Sig13 ce future_gfx
Cass Everitt
 
Migrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMigrating from OpenGL to Vulkan
Migrating from OpenGL to Vulkan
Mark Kilgard
 
Computer application
Computer applicationComputer application
Computer application
SudamRaut2
 
Node JS Express : Steps to Create Restful Web App
Node JS Express : Steps to Create Restful Web AppNode JS Express : Steps to Create Restful Web App
Node JS Express : Steps to Create Restful Web App
Edureka!
 
Minko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.jsMinko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.js
Minko3D
 
Cadence design environment
Cadence design environmentCadence design environment
Cadence design environment
Hoopeer Hoopeer
 
WPF - the future of GUI is near
WPF - the future of GUI is nearWPF - the future of GUI is near
WPF - the future of GUI is near
Bartlomiej Filipek
 

Similar to Tokamak2: themes and netbook shell (20)

EFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the DesktopEFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the Desktop
 
pastel
pastelpastel
pastel
 
pastel
pastelpastel
pastel
 
Minko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSL
 
An Introduction to Computer Science with Java .docx
An Introduction to  Computer Science with Java .docxAn Introduction to  Computer Science with Java .docx
An Introduction to Computer Science with Java .docx
 
WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?
 
JAVA_STEP_V7
JAVA_STEP_V7JAVA_STEP_V7
JAVA_STEP_V7
 
Migration To Multi Core - Parallel Programming Models
Migration To Multi Core - Parallel Programming ModelsMigration To Multi Core - Parallel Programming Models
Migration To Multi Core - Parallel Programming Models
 
Yahoo! On Microsoft .NET 3.0 and Microsoft Expression
Yahoo! On Microsoft .NET 3.0 and Microsoft ExpressionYahoo! On Microsoft .NET 3.0 and Microsoft Expression
Yahoo! On Microsoft .NET 3.0 and Microsoft Expression
 
React native
React nativeReact native
React native
 
Howto curses
Howto cursesHowto curses
Howto curses
 
Writing native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScriptWriting native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScript
 
basic_java.ppt
basic_java.pptbasic_java.ppt
basic_java.ppt
 
Sig13 ce future_gfx
Sig13 ce future_gfxSig13 ce future_gfx
Sig13 ce future_gfx
 
Migrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMigrating from OpenGL to Vulkan
Migrating from OpenGL to Vulkan
 
Computer application
Computer applicationComputer application
Computer application
 
Node JS Express : Steps to Create Restful Web App
Node JS Express : Steps to Create Restful Web AppNode JS Express : Steps to Create Restful Web App
Node JS Express : Steps to Create Restful Web App
 
Minko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.jsMinko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.js
 
Cadence design environment
Cadence design environmentCadence design environment
Cadence design environment
 
WPF - the future of GUI is near
WPF - the future of GUI is nearWPF - the future of GUI is near
WPF - the future of GUI is near
 

Recently uploaded

HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
GDSC PJATK
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 

Recently uploaded (20)

HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 

Tokamak2: themes and netbook shell

  • 1. Themes, shells and other animals
  • 2. Themes  Plasma graphics is heavily based on the Svg standard  Easily themeable  Architecture indipendence  Basis for resolution indipendence  High level of abstraction from an API standpoint
  • 3. Using Svgs from themes  They are installed in the KDE prefix/share/ apps/desktopthemes/themeName  Subfolders: dialogs, widgets, applet names, opaque, locolor  Loading them:  Plasma::Theme abstracts the loading of the proper path, with proper fallbacks  m_svg->setImagePath(“widgets/background”);
  • 4. From packages  A scripted applet can load a svg from its own package with Package::filePath()  In javascript you do plasmoid.findSvg(“foo”)  Will search foo.svg(z) in the images subfolder of your plasmoid
  • 5. Some advices  Try to use graphics from the theme and default widgets as much as possible  Install your own graphics (c++ case) or use from the package (scripted case) only when really necessary  Try to make visually work your additional graphic with different themes (at least dark vs light)
  • 6. Implementation details: Plasma::Svg  The central machinery that renders svgs, eases use of QSvgRenderer  Several optimizations (a renderer is quite heavy):  Shared: for each svg file a single shared renderer  Cached: saves rendered svgs on disk: avoids completely creation of renderers in some cases  Use it: several paint() functions, takes a Qpainter as argument
  • 7. Plasma::FrameSvg  Most Plasma theme elements style mostly- rectangular widgets  Svg is scalable, but... not so much :)  We want to keep the radius of rounded borders intact and each element exactly aligned to the pixel grid  Plasma::FrameSvg comes to rescue
  • 8. From a graphics standpoint  We have svgs made of 9 elements: center, edges and corners  The center can be scaled as ve wish  Corners are NEVER scaled  Horizontal edges are scaled in the x axis, vertical in the y axis instead
  • 9. From a code standpoint  FrameSvg is a subclass of Svg, so usual setImagePath()  ResizeFrame scales the final composition with said rules  PaintFrame() paints the whole composition  A svg can have multiple sets of 9 elements sets, with a different prefix in their name, switch with setElementPrefix()
  • 10. Part 2: shells - Plasma-mid  Plasma-mid is an experimental interface for mobile internet devices and other contrained little devices.  Work began at Akademy-2008, mostly by Aaron, some work by Sebas in mid-specific containments, some patches by me and i'm forgetting somebody, sorry :)  The improved sytem-tray we have now actually derives from toughts and design around plasma-mid
  • 11. Plasma-mid  What does work  Plasma-mid is a barebone plasma app with a main view and a panel view in the same window  Loads correctly applet layouts from config files  Supports panels in the 4 locations  The main view can correctly switch containment  What does not  More than 1 panel  Any configuration interface, hand editing configuration files is necessary
  • 12. One size fits.. not much  Different devices with different hardware capabilities will need to have a different- looking interface.. different applets layout same app  Touchscreen or not, keyboard and mouse or not, makes needed stuff and Fitt's laws slightly different  Also, a really tiny single-purpose device could have just plasma, a more general one like the Eee mixes up plasma and traditional apps
  • 13. Current demo  A plasma-based interface that mostly manages traditional apps  Right vertical panel thumb friendly with an activitybar, an “activewindow”, a sytemtray and a clock  3 activities: an icon list to launch apps, a fullscreen taskbar and a traditional widgets space  Ideally the windowmanager would have to be very barebone, even more than matchbox
  • 14. Current demo  It's a full screen non-desktop window, with the panel area reserved, so clicking on the panel brings the plasma interface on top  Both the panel and the main screen containments are simplified mid-oriented code  It's done with already existing applets, maybe not really adapt and not so pretty but we have a basic working thing from where we can start to build something
  • 15. Media center  Current media center solutions are applications that aims to turn a pc in an easy attach-to-your-tv single purpose box  The charateristics of Plasma we're developing both in terms of good looking ui and network services transparency would make this possible, but...
  • 16. We can do more than that  Blend media center related stuff and the traditional desktop (media center activity?)  Control a media center from an another machine with your plasma desktop (or even your plasma-mid portable device ;)  Scripted widgets to control the media could be sent across the network  Anything ele that can't think about now
  • 17. What there is now... ...And what realistically i would like to get in KDE 4.3:  A video widget in libplasma usable even with few lines of javascript  A media player plasmoid with basic audio/video playback capabilities and a dbus interface to be remote controlled