SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
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?

Más contenido relacionado

Destacado

Campkde 2010: KDE Plasma netbook
Campkde 2010: KDE Plasma netbookCampkde 2010: KDE Plasma netbook
Campkde 2010: KDE Plasma netbookMarco Martin
 
Akademy 2010 presentation
Akademy 2010 presentationAkademy 2010 presentation
Akademy 2010 presentationMarco Martin
 
Krasne fotky a vtipy
Krasne  fotky  a vtipyKrasne  fotky  a vtipy
Krasne fotky a vtipyHaKuPa
 
Podzimni prochazka s Ferdou 2
Podzimni prochazka s Ferdou 2Podzimni prochazka s Ferdou 2
Podzimni prochazka s Ferdou 2HaKuPa
 
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 CardMinh NghC
 

Destacado (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 a 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 DesktopSamsung Open Source Group
 
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 GLSLMinko3D
 
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 .docxdaniahendric
 
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
 
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 ModelsZvi 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 Expressiongoodfriday
 
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 JavaScriptIgalia
 
Sig13 ce future_gfx
Sig13 ce future_gfxSig13 ce future_gfx
Sig13 ce future_gfxCass Everitt
 
Migrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMigrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMark Kilgard
 
Computer application
Computer applicationComputer application
Computer applicationSudamRaut2
 
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 AppEdureka!
 
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.jsMinko3D
 
Cadence design environment
Cadence design environmentCadence design environment
Cadence design environmentHoopeer 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 nearBartlomiej Filipek
 

Similar a 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
 

Último

Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Último (20)

Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

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