-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
20 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
{"pdfpcFormat":2,"disableMarkdown":false,"pages":[{"idx":0,"label":1,"overlay":0,"forcedOverlay":false,"hidden":false},{"idx":1,"label":2,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"# Fabio\n- context\n- plugin system\n# Felix\n- plugin ideas\n- User interface\n- showcase"},{"idx":2,"label":3,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"# topic\n- goal:\n - plugin system for reset\n- methods:\n - analysis of existing solutions\n - Implementation\n - exemplary plugins to validate system\n - user tests to validate experience\n - testing framework across both to prove validity and viability"},{"idx":3,"label":4,"overlay":0,"forcedOverlay":false,"hidden":false},{"idx":4,"label":5,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"# default gnome look\n- modular\n - can be replaced unlike in windows\n - different environments kde, budgie, hyprland, sway\n- not all apps cross compatible\n - especially with wayland"},{"idx":5,"label":6,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- specific implementation needed\n- not all environments support everything\n- differing paradigms\n- not all environments offer settings at all"},{"idx":6,"label":7,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- show picture of ReSet -> explain functionality\n- works on as many environments as possible\n- All features share one user interface design"},{"idx":7,"label":8,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- Explain why these features are chosen\n - Everything a typical user might want to use\n - Base features include features that are independent of environments\n- Explain why the plugin system\n - wayland and x11 differences\n - environment differences\n - user preferences to omit features\n - new hardware -> new configuration"},{"idx":8,"label":9,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- gtk -> reliable, established -> 20 years\n - iced possible alternative -> not ready when SA started\n - no change for BA due to time constraints\n- libadwaita -> extension of gtk -> subjective choice\n- rust -> fast, memory efficient, good developer experience, still safe\n -> optimal to speed up with dbus -> aka mask dbus overhead"},{"idx":9,"label":10,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- testing not possible because BUS connection\n - reliance on real world hardware\n- features set intentionally limited due to plugin system\n- accessibility limited to default gtk\n - work in progress"},{"idx":10,"label":11,"overlay":0,"forcedOverlay":false,"hidden":false},{"idx":11,"label":12,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- shared libraries\n - compiled binaries which are loaded at runtime\n- interpreted languages\n - simplification by using an \"easier\" language"},{"idx":12,"label":13,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- dynamic libraries\n - less memory -> load once, access from anywhere\n - performance -> rust is still rust, no interpretation\n - compatibility -> if rust supports the tookit, then libraries will as well\n - interoperability -> C-ABI requires programming overhead\n - user experience -> installation not always simple\n- interpreted languages\n - user experience -> simple installation -> see neovim\n - simple extendability -> neovim easy to expand with lua, instead of C\n - requires good API\n - ABI -> no ABI as language interpreted\n - stability defined by interpreter\n - interpreter per process -> 2 interpreters for ReSet\n - performance overhead -> interpretation\n - implementation overhead -> creating an interpreter is time consuming and complex\n - limited compatibility -> using GTK within interpreted language with existing gtk thread requires synchronization"},{"idx":13,"label":14,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- multi process\n- user can choose how to interact\n- plugins\n - only frontend\n - only backend\n - or both"},{"idx":14,"label":15,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- explain each function\n- explain why crossroads was an issue"},{"idx":15,"label":16,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- compile time difference\n - debug includes log\n - release does not\n- also used for testing system\n- 0 cost abstraction"},{"idx":16,"label":17,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- mock\n - fake bluetooth\n - fake network\n - sound not possible\n- plugins\n - custom result prints\n - all tests independent -> different thread\n- macro"},{"idx":17,"label":18,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- one thread per plugin\n- speed up loading"},{"idx":18,"label":19,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- issues\n - arbitrary code execution\n - malicious plugin copied into folder\n - review necessary -> takes time, infeasible\n- mitigations\n - enforce copyleft to make it \"illegal\" to create proprietary plugins\n - implemented\n - not enforceable\n - by default all proprietary plugins are \"evil\"\n - permission system\n - user needs to accept plugin on first load\n - plugin hash stored within user wallet\n - kwallet, gnome keyring etc\n - not implemented\n - signing system\n - only good if user checks signature\n - only protects against malicious derivations\n - malicious creations without impersonation are still possible"},{"idx":19,"label":20,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- flexibility\n - language\n - hard to achieve with DBus and gtk wrappers\n - requires modifications to both\n - toolkit\n - not possible with ReSets own user interface\n - but reset can be used without it, hence you can create your own\n - stability\n - rust provides good documentation with documentation tests\n - memory safety -> all crashes were due to logic errors or gtk issues"},{"idx":20,"label":21,"overlay":0,"forcedOverlay":false,"hidden":false},{"idx":21,"label":22,"overlay":0,"forcedOverlay":false,"hidden":false},{"idx":22,"label":23,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- Inspired by Windows and Gnome Keyboard Settings\n- Sortable by drag and drop\n - Top element is active layout\n- How to use:\n - Use the add layout button the go to another screen\n - (Optional) Use the search bar to filter layouts\n - Select the language and press the add button\n - (Optional) Use the delete button to remove a layout with the 3 dots icon\n - Currently not useful as the only feature in there\n- Features:\n - Add layouts\n - Easy to find a layout\n - Highlight of top 4 layouts\n- Obstacles: // todo explain more\n - Main problems:\n - Bad documentation and no examples\n - Very rigid to changes"},{"idx":23,"label":24,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- custom signals it would need access to the implementation of the widget\n - else you would send a signal in reponse to a signal\n- actions are function because that can be assigned to widgets and called via string\n - advantages: reusable code, can be called from anywhere where widget is available\n- if i have to bind to an existing signal and call an action, why not inline?\n - certain information not available in the signal\n - e.g in add keyboard layout no access to user keyboard layout list"},{"idx":24,"label":25,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- Solution: Grab focus of another widget so no selection is triggered\n- Rows with no variant need no action\n- Rows with variant have a on click event to override keyboard layout list"},{"idx":25,"label":26,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- this problem is will happen to all plugins that need to access system schemas\n- schema is a db file that contains the settings of the system"},{"idx":26,"label":27,"overlay":0,"forcedOverlay":false,"hidden":false},{"idx":27,"label":28,"overlay":0,"forcedOverlay":false,"hidden":false},{"idx":28,"label":29,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- gnome -> fixed scaling\n- all others -> arbitrary scaling\n- x11 to wayland differences ? -> therefore no x11!\n- dynamic hiding and showing of interface parts -> hyprland no primary monitor\n- convert information to be user friendly\n - user doesn't understand what a monitor MODE is\n - user wants to choose refreshrate not a resolution,refreshrate,scaling combo\n - abstract these into singular items which can be chosen independently"},{"idx":29,"label":30,"overlay":0,"forcedOverlay":false,"hidden":false,"note":""},{"idx":30,"label":31,"overlay":0,"forcedOverlay":false,"hidden":false,"note":""},{"idx":31,"label":32,"overlay":0,"forcedOverlay":false,"hidden":false,"note":""},{"idx":32,"label":33,"overlay":0,"forcedOverlay":false,"hidden":false,"note":""},{"idx":33,"label":34,"overlay":0,"forcedOverlay":false,"hidden":false,"note":""},{"idx":34,"label":35,"overlay":0,"forcedOverlay":false,"hidden":false},{"idx":35,"label":36,"overlay":0,"forcedOverlay":false,"hidden":false,"note":"- start without plugins\n - show audio\n - add plugin\n - show with plugin\n - show deamon without interface (dspy)"},{"idx":36,"label":37,"overlay":0,"forcedOverlay":false,"hidden":false}]} | ||
{"pdfpcFormat":2,"duration":35,"lastMinutes":25,"defaultTransition":"push:0.20000000000000001:180:v:o","disableMarkdown":false,"noteFontSize":20,"pages":[{"idx":1,"label":"2","overlay":0,"note":"# Fabio\n- context\n- plugin system\n# Felix\n- plugin ideas\n- User interface\n- showcase"},{"idx":3,"label":"4","overlay":0,"note":"# default gnome look\n- modular\n - can be replaced unlike in windows\n - different environments kde, budgie, hyprland, sway\n- not all apps cross compatible\n - especially with wayland"},{"idx":4,"label":"5","overlay":0,"note":"- specific implementation needed\n- not all environments support everything\n- differing paradigms\n- not all environments offer settings at all"},{"idx":5,"label":"6","overlay":0,"note":"- show picture of ReSet -> explain functionality\n- works on as many environments as possible\n- All features share one user interface design"},{"idx":6,"label":"7","overlay":0,"note":"# features\n- Explain why these features are chosen\n - Everything a typical user might want to use\n - Base features include features that are independent of environments\n- Explain why the plugin system\n - wayland and x11 differences\n - environment differences\n - user preferences to omit features\n - new hardware -> new configuration"},{"idx":7,"label":"8","overlay":0,"note":"- gtk -> reliable, established -> 20 years\n - iced possible alternative -> not ready when SA started\n - no change for BA due to time constraints\n- libadwaita -> extension of gtk -> subjective choice\n- rust -> fast, memory efficient, good developer experience, still safe\n -> optimal to speed up with dbus -> aka mask dbus overhead"},{"idx":8,"label":"9","overlay":0,"note":"- testing not possible because BUS connection\n - reliance on real world hardware\n- features set intentionally limited due to plugin system\n- accessibility limited to default gtk\n - work in progress"},{"idx":9,"label":"10","overlay":0,"note":"# topic\n- goal:\n - plugin system for reset\n- methods:\n - analysis of existing solutions\n - Implementation\n - exemplary plugins to validate system\n - user tests to validate experience\n - testing framework across both to prove validity and viability"},{"idx":11,"label":"12","overlay":0,"note":"- shared libraries\n - compiled binaries which are loaded at runtime\n- interpreted languages\n - simplification by using an \"easier\" language"},{"idx":12,"label":"13","overlay":0,"note":"- dynamic libraries\n - less memory -> load once, access from anywhere\n - performance -> rust is still rust, no interpretation\n - compatibility -> if rust supports the tookit, then libraries will as well\n - interoperability -> C-ABI requires programming overhead\n - user experience -> installation not always simple\n- interpreted languages\n - user experience -> simple installation -> see neovim\n - simple extendability -> neovim easy to expand with lua, instead of C\n - requires good API\n - ABI -> no ABI as language interpreted\n - stability defined by interpreter\n - interpreter per process -> 2 interpreters for ReSet\n - performance overhead -> interpretation\n - implementation overhead -> creating an interpreter is time consuming and complex\n - limited compatibility -> using GTK within interpreted language with existing gtk thread requires synchronization"},{"idx":13,"label":"14","overlay":0,"note":"- multi process\n- user can choose how to interact\n- plugins\n - only frontend\n - only backend\n - or both"},{"idx":14,"label":"15","overlay":0,"note":"- explain each function\n- explain why crossroads was an issue"},{"idx":15,"label":"16","overlay":0,"note":"- compile time difference\n - debug includes log\n - release does not\n- also used for testing system\n- 0 cost abstraction"},{"idx":16,"label":"17","overlay":0,"note":"- mock\n - fake bluetooth\n - fake network\n - sound not possible\n- plugins\n - custom result prints\n - all tests independent -> different thread\n- macro"},{"idx":17,"label":"18","overlay":0,"note":"- one thread per plugin\n- speed up loading"},{"idx":18,"label":"19","overlay":0,"note":"- issues\n - arbitrary code execution\n - malicious plugin copied into folder\n - review necessary -> takes time, infeasible\n- mitigations\n - enforce copyleft to make it \"illegal\" to create proprietary plugins\n - implemented\n - not enforceable\n - by default all proprietary plugins are \"evil\"\n - permission system\n - user needs to accept plugin on first load\n - plugin hash stored within user wallet\n - kwallet, gnome keyring etc\n - not implemented\n - signing system\n - only good if user checks signature\n - only protects against malicious derivations\n - malicious creations without impersonation are still possible"},{"idx":20,"label":"21","overlay":0,"note":"- Inspired by Windows and Gnome Keyboard Settings\n- Gnome:\n - Drag and drop to change order\n - Add button below list\n - Other functions in triple dots icon right\n- KDE:\n - 2 buttons to change order\n - Add button above list\n - Other functions next to add button"},{"idx":21,"label":"22","overlay":0,"note":"- Sortable by drag and drop\n - Top element is active layout\n - Reason: Much easier to drag compared to spam button\n\n- Features:\n - Add layouts\n - Easy to find a layout\n - Highlight of top 4 layouts\n- Obstacles: // todo explain more\n - Main problems:\n - Bad documentation and no examples\n - Very rigid to changes"},{"idx":22,"label":"23","overlay":0,"note":"- How to use:\n - Use the add layout button the go to another screen\n - (Optional) Use the search bar to filter layouts\n - Select the language and press the add button\n - (Optional) Use the delete button to remove a layout with the 3 dots icon\n - Currently not useful as the only feature in there"},{"idx":23,"label":"24","overlay":0,"note":"- limitation of xkb (not enough space for more in xkbstate struct)\n- custom signals it would need access to the implementation of the widget\n - else you would send a signal in reponse to a signal\n - not possible because it would require changes in the gtk library\n- actions are function because that can be assigned to widgets\n - can be called from anywhere of the widget or children via string\n - with information not available from where it is called\n - advantages: reusable code, can be called from anywhere where widget is available\n- if i have to bind to an existing signal and call an action, why not inline?\n - certain information not available in the signal\n - e.g in add keyboard layout no access to user keyboard layout list\n- Solution: Using custom actions to change CSS"},{"idx":24,"label":"25","overlay":0,"note":"- Solution: Grab focus of another widget so no selection is triggered\n- Rows with no variant need no action\n- Rows with variant have a on click event to override keyboard layout list"},{"idx":25,"label":"26","overlay":0,"note":"- this problem is will happen to all plugins that need to access system schemas\n- schema is a db file that contains the settings of the system"},{"idx":27,"label":"28","overlay":0,"note":"### gnome\n- per monitor display in separate popup\n- dragging possible -> no gaps\n- numbered monitors\n- offers various additional features on top page\n - night light\n - join/mirror\n- fixed scaling\n\n### kde\n- per monitor settings on top page\n- shows currently selected monitor by highlighting\n- dragging possible -> no gaps\n- arbitrary scaling"},{"idx":28,"label":"29","overlay":0,"note":"- gnome -> fixed scaling\n- all others -> arbitrary scaling\n- x11 to wayland differences ? -> therefore no x11!\n- dynamic hiding and showing of interface parts -> hyprland no primary monitor\n- convert information to be user friendly\n - user doesn't understand what a monitor MODE is\n - user wants to choose refreshrate not a resolution,refreshrate,scaling combo\n - abstract these into singular items which can be chosen independently"},{"idx":29,"label":"30","overlay":0,"note":"### overlaps\n- resizing (resolution) might cause overlaps\n - bigger issue with more monitors\n - complex detection and solution\n- transform or scaling can also cause overlaps"},{"idx":30,"label":"31","overlay":0,"note":"- detected overlaps are handled if\n - monitor is not in y axis position 0 -> level\n - monitor is not the furthest monitor to the right\n- only one monitor is moved out of the way"},{"idx":31,"label":"32","overlay":0,"note":"- monitor snap to the closest monitor\n- not possible on overlap due to edge cases\n- similar approach to kde\n - useful for hyprland with possible monitor gaps"},{"idx":32,"label":"33","overlay":0,"note":"- loops over modes\n- independent refreshrate/scaling from resolution\n- no duplicate entries"},{"idx":33,"label":"34","overlay":0,"note":"- selected monitor highlighted\n - blue -> color blindness\n- per monitor settings below\n- libadwaita rows\n- dynamic entries for scaling, primary monitor, vrr"},{"idx":34,"label":"35","overlay":0,"note":"### ubuntu 24.04 package\n - reset\n - both plugins\n - auto installed -> configuration required\n ### Nix\n - homemanager module\n - ReSet and plugins\n - auto installation and configuration\n ### Arch\n - reset\n - both plugins\n - auto installed -> configuration required\n### Flatpak\n - ReSet\n - plugins must be installed manually -> binary\n - manual configuration\n - suboptimal"},{"idx":36,"label":"37","overlay":0,"note":"- 12 participants\n - most of them are very experienced with computers or linux\n - most of them study computer science\n - might skew data a bit\n - advantage\n - people who know what they talk about\n - disadvantage\n - might not be representative"},{"idx":37,"label":"38","overlay":0,"note":"- Very intuitive (similar to gnome settings)\n - works well with different themes\n - improvements:\n - drag and drop not effortless\n - translations"},{"idx":38,"label":"39","overlay":0,"note":"- simple and clean design\n - reminiscent of gnome settings (both use gtk widgets)\n - easy to navigate\n - improvements:\n - add more spacing between widgets (cramped)\n - more customization options"},{"idx":39,"label":"40","overlay":0,"note":"- start without plugins\n - show audio\n - add plugin\n - show with plugin\n - show daemon without interface (dspy)\n - show monitor plugin\n - show various configurations\n - show keyboard plugin\n - show new input language"}]} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.