Jump to content
Toggle sidebar
JookWiki
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Navigation
Main page
Recent changes
Random page
All pages
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information
Editing
System-wide speakup
(section)
Page
Discussion
English
Read
Edit
Edit source
View history
More
Read
Edit
Edit source
View history
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Ideas == There are some ideas I've considered to solve this problem. === Loaning PulseAudio to root === The main case here would be to allow root to use a user's PulseAudio install. This would have mean that multiple people can privately use a computer, with the exception of one user being able to read root's screen. I'm not too sure what this buys compared to using sudo or something to act as root. In practice I'm not sure how easy this would be to implement. You would need to replace the logind hardware management for sound with something else that allows finer grained management of hardware. === Sharing Speakup between multiple users === Things would be a lot easier if we could run one espeakup instance per user. This is tricky because the Speakup kernel modules don't have concepts of users or sessions. There's a wide list of engineering problems to solve with this: * Saving and restoring per-user Speakup settings * Saving and restoring the softsynth state between users * Proxying /dev/softsynth so users can't read other's data * Restricting access to the fakekey input device * Handling graceful handovers from ALSA to PulseAudio * Handling forceful handovers from PulseAudio to ALSA * Shim PulseAudio so it waits for hardware access before running * Flow control to indicate when the proxy is ready to send * Flow control to indicate when espeakup is ready to talk * Buffering data when espeakup isn't ready * Discarding buffered data when speakup signals espeakup to shut up * Handling messages sent back from espeakup to speakup and flow control for that There's a lot to untangle here since we're touching multiple levels of abstraction. === Sharing espeakup output between multiple users === A more practical solution might be to run a root espeakup instance and proxy its PCM output to users. This would cut down the engineering problems to: * Assigning /sys/accessibility/speakup to the current seat * Proxying PCM data to stub programs users run * Handling graceful handovers from ALSA to PulseAudio * Shim PulseAudio so it waits for hardware access before running * Flow control to indicate when a proxy is ready to send * Buffering data when a stub isn't playing audio * Discarding buffered data when espeakup wants to shut up This gives most the benefits of sharing speakup but without saving or restoring state. [[Category:Research]]
Summary:
Please note that all contributions to JookWiki are considered to be released under the Creative Commons Zero (Public Domain) (see
JookWiki:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
To edit this page, please answer the question that appears below (
more info
):
Who owns this wiki?
Cancel
Editing help
(opens in new window)