Hey there! I’ve been watching this project for years and I’m very happy to see the progress that has been done! Kudos to this amazing community!
I’ve been long dissatisfied with the status of mobile devices (phones and tablets) and I really wanted something that I can really own and control myself. Purism is making great headway into the phone area with their Librem phone (and I might try their product at some point) but what about tablets? It just occured to me today that most Linux distributions are not lightweight enough to run nicely on a tablet (well, you can pick a minimalistic distribution like Alpine but that’s not very usable on a tablet). More fully-featured distributions (like Debian or Ubuntu) are simply too big for the tablet hardware. So I naturally thought of Haiku. I’ve seen some people inquiring about the same thing around 2011/2012 but Haiku has come a long way since then.
Hardware compatibility and touch interaction are obviously two big dragons to be tamed. Can one of the developers who is more familiar with issue comment on this subject? Do we have some hope of ever getting the beautiful Haiku on a tablet? We don’t have to support all the hardware out there, but maybe just a few most common configurations.
The goal of the Haiku project itself is to provide an operating system for desktop/laptop computers. While a lot of the same technology could be used for a tablet or even phone thing, it’s something that is currently not on the Haiku roadmap. I’d love to see someone do that, but as a somewhat separate project with a different name, even if it could share the code and probably some of the infrastructure and community.
The reason for this is I think it’s not possible to do both desktop systems and tablets correctly. Trying to design an UI that works for both results in difficult compromises and an unsatisfying end-result. Several other OS have tried that. So we would go somehow like iOS vs macOS, with maybe a bit more compatibility between the two versions. But, we also have a lot to do on the computer side, to not dig into that just yet. We are a small team and we need to set our priorities.
I don’t think that special GUI for tablet is required, desktop GUI is fine. Smartphone-like GUI make tablet like big smartphone and pretty useless. Windows 8+ is quite usable on tablet PC. I used Haiku on Acer W500 tablet some time ago, I created screen keyboard and multi-touch patches for it (https://github.com/X547/HaikuUtils/tree/master/ScreenKeyboard, https://dev.haiku-os.org/attachment/ticket/8370/keyboard.jpeg). Some parts of this keyboard is written with itself on tablet. Unfortunately touch sensor is broken and that tablet is not usable as tablet anymore, connecting mouse is required. It is pretty old now so I currently use Fujitsu arrows Tab WQ2/C1 (Computers compatible with Haiku (v3), https://www.fujitsu-webmart.com/image/ui2002/ui2002_im03_1.png, https://ascii.jp/elem/000/004/003/4003638/). In addition to touchscreen it have pen that allows mouse hover, precise positioning and handwritten note taking so paper notes are not needed anymore. Touchscreen and pen are not currently working on Haiku because Haiku have no i2c HID support yet. I plan to make touchscreen and pen working on this tablet: Using new driver API.
You can’t rely on tooltips, right click, and you have to make everything a bit larger if it’s meant to be used with fingers (with a pen it’s yet again another mix). And there are probably many other problems like this.
Yes, it can work, but it makes you annoyed that you misclicked a small button or checkbox, that important function is hidden behind long-click because there is no right click, etc. It’s probably better than using a smartphone based GUI (because the constraints there are also quite different), but tablets deserve their own thing. I guess the iPad Pro is on to achieving something in that area?
Well, in any case, if you’re happy with the current situation, yes, running the Desktop-oriented Haiku on a tablet is possible (on some of them). It’s not the main goal of the project, so it may not work perfectly, but it can be usable (and that could be better than what Linux achieves there in some cases).
Tooltip can be displayed by pressing on empty space and releasing on item with tooltip, tested on buttons in Firefox on Windows 10. Right click is done with long pressing, it also work in Tracker. When using pen, almost anything that can be done with mouse is possible. Small items like 16x16 icons is not a big problem with touchscreen if trained. I am annoyed that some menus become bigger when opened by touchscreen in Windows 10, usual size is accessible for me without any problems.
I use tablet PC every day more than 5 years including programming, web browsing, gaming, note taking and painting, GPS map navigation etc. Tablet can be connected to external display if needed. This post is also made from tablet PC.
I tried iPad Pro and I don’t know what to do with it except web browsing, but tablet PC + Windows 10 + Firefox feels better. Tablet PC is much more useful because it can run PC software and have proper multitasking.
It is possible to install the Haiku Desktop on a tablet (@X512 did that). Can we compile a list of tablets which Haiku can run on?
Customizing the GUI for tablets. I think it’s doable, I didn’t look at Haiku’s architecture in detail to see how hard it would be but I think it should be possible to create a thin layer on top that manages the touch input and resolution.
If there’s enough interest in this project maybe we can create a small team to go explore it. I’m a professional developer with 25+ yrs of programming experience and I would volunteer wholeheartily for this project.
It should be possible to install haiku on any BIOS or EFI based x86 tablet PC including Microsoft Surface, Fujitsu Arrows Tab, Lenovo ThinkPad Tablet. On some tablets touchscreen and pen is not working because it use i2c HID that is not implemented yet, but Korli work on it, see Using new driver API - #21 by X512.
Haiku use desktop-oriented interface, but it is possible to add multi-touch support and touchscreen gestures like scrolling and menus views with scrollbars and zooming with 2 fingers.
Just be careful with modern computers.
Some are using RAID on their internal storage, avoiding installation of Haiku.
For example I have a Surface Pro (2017) and it is only possible to install Haiku on a USB flash drive.
Another thing is the display resolution. Haiku does not support hi-res displays natively.
It is probably MMC disk, not RAID that is not supported yet. There it WIP MMC driver for Haiku. I have MMC disk on my tablet and I run Haiku from USB 3 disk.
It is possible to change font size as workaround. Some software like web browsers and Blender support setting GUI scaling.
We absolutely do; we’ve chosen to take the “font size” approach as opposed to the “pixel doubling” approach, as it’s less invasive and previously well-behaved applications get HiDPI support for free. So as long as you can get your video driver to output the right resolution, just select the appropriate font size and most things in the system should scale to match.
I think scrollbars are the only thing left that don’t yet; I actually ordered a HiDPI display recently so I may look into it if nobody else does first.
This is not a good idea, because it need manual setting and multiple displays with different DPI can be connected. This approach is also not working for StyledEdit.
The same is true of other HiDPI systems, yes? They just have different “pixel density” factors per display. So we will just have different font sizes per display.
StyledEdit should scale the font sizes used in documents according to the system font size, just like other applications do already; nobody’s taken the time to do that yet.
By the default system font size; then all StyledEdit documents are scaled according to that, and the saved representation always matches the default font size.
However for StyledEdit, the font size is hardcoded in saved files, and is normally in the same unit. Should we scale it by 12/currentSize on save and load?
I mean font size used to get scale ratio scale = be_plain_font->GetSize()/baseFontSize. Should baseFontSize be hardcoded (12 for example), or it should be configurable? Note that default font size in BeOS is 10 and some programs depend on it.
I did install Haiku on a tablet. Mine is an Asus T102H, with keyboard a la Surface. (Wouldn’t recommend asus stuff though). It has 4 GB RAM and 128 HD with an Atom processor.
On this device, Haiku installs without issues (second half 2019), and can use the keyboard and trackpad without problems, works as a laptop.
The only issue is that screen appears rotated in portrait mode and I wasn’t able to get it rotated to landscape mode in order to use the tablet as a laptop.
Didn’t check camera nor fingerprint reader though, as was a bit of a neckbreaker (display in portrait with keyboard attached). Touch didn’t work.
Regarding interface scaling, it’s clear that some Haiku interface design is not ready for touch devices, actually, only would need to scale toolbars, window tabs and menu item spacing. I presume that could be doable in a setting, like alternate between Desktop Mode and Touch Mode.
A different approach would be to have two window configurations, this would depend on the software developer, i.e. a window layout for desktop, and another window layout for touch.
In any case, I presume there should be some HIG definitions in order to keep things a bit ordered.
It’s clear that many modern laptops also offer touch screens, some even with pen support. Hopefully, Haiku will also have that support sooner or later.
What are you expect from “touch mode”? Only size change or something else?
Well, I’ve been thinking a lot about that since I installed/uninstalled Haiku on that tablet so, now that you ask, here I go (should notice that I, yet, don’t have a clue on how Haiku API’s work, I’m fighting my way with Python trying to understand the Layout API to code something for Haiku with the Python API bindings, so what I’m about to say might sound unreal, that would be due to my ignorance, so be ready for it):
The way I see it is like this:
I was thinking about a system wide preference that tells Haiku to be in Desktop Mode, or in Touch Mode.
Desktop Mode is exactly the way we use Haiku now. Touch Mode would, as you say, change the size of GUI elements (can be done already), and change some behavior of windows.
On Screen Keyboard, I was thinking of a Replicant of a small size keyboard (60% or 70%) with some sort of autoshow when touching an input field, that way keys would be a bit bigger, and easier to hit with fingers.
On touch devices, software windows are mostly used full screen so, Haiku could tell the new window to open in full screen size. Stack and Tile, while awesome on desktop, I think that wouldn’t be of so much use on a 10 inch tablet, so I was thinking more of an addon that allows tile windows in half screen, just in case that user wants to have 2 programs on the screen at same time. For what I’ve seen on people using touch devices, none, at least no regular user, uses a tablet/phone with more than one program on the screen, full screen at a time.
Deskbar could have a highlight mode of the focused app, matching the Systemwide Colors, so it would be easier to close the program, as Tabs could be hidden in touch mode.
Vertical deskbar is already a nice approach to touch devices, as you said, already can increase the size of icons and text, which makes it easier to navigate with fingers. So here half way is already travelled.
Also, as Deskbar is already there, and with the “active” window highlighted, we already have a way to change among running programs without the need for gestures.
Should be able to increase the size of the Haiku leaf too, to match the size of the deskbar buttons.
The Deskbar Tray needs some rethingking for Touch Mode. I personally are not very fond of its actual design, as everything is too small to aim even with mouse, imagine with fingers. Not sure what would be the best option here though, just thinking aloud.
If the Deskbar is always visible, might not need too many gestures to move around the system, as can open anything from the deskbar.
The Haiku menu. I would rearrange it, and do some categorization in order to lower the need to scroll the list of apps. Increasing the size of the fonts, and icons too, would ease the hit.
More on the Haiku menu, for touching devices I think that the style of XFCE’s Whisker menu makes more sense, with the right sized icons, of course. But without rewriting a whole Haiku menu, it might just be doable adding at the beginning of each category a “back” button in Touch mode, therefore, only one “menu box” is shown so things on the screen look leaner. Well, that would depend on the size of the touch device, if the touchscreen is big enough, showing the whole menu hierarchy wouldn’t be a problem.
In touch mode, when touching a deskbar button, raises the window owned by that software and hides the active one, thus having only one window full size at any given time. The rest would be hidden. This could conflict with the idea of having at most 2 porgrams sharing the screen half/half. I must say I haven’t thought on how to address this yet.
Regarding software itself, I understand that not all software can be (and need not to be) used in touch mode, so I came up with the idea of having two layouts, therefore, no need to do anything in the API, a “Desktop” and a “Touch” layout, that could be selected in each software preferences, connected to the System wide preferences. Thus, if the OS is set to Touch Mode, each software that has a Touch Mode setting would use the Touch Mode Layout. If the OS is set to Desktop Mode, the software switches to Desktop mode. This implies that devs should create two layout windows.
Regarding the 2 Layouts, the Desktop one, we already know. The Touch one, I thought of a button bar (toolbar) where the first button is always “Menu”, and triggers the Desktop menu, oversized for touch friendly purposes.
I thought of 2 program window layouts because I have no idea on how the API’s work, and if with the actual API can tell the software to draw or not draw what or what not item inside a window, and change it according to a preference/setting. (Yes, this is more work for devs, but as I see it, not all software need to be “touch friendly”). I presume that making two different layouts is not that hard (at least not on simple software with Glade), though I must say that I haven’t experienced this at all yet. I’m waiting to finish a project I’m working on to give it a try. Presumably, once it’s done for one app, can be used as template for others. I must think this over though.
There is a need for a lock device function. Not talking about multiuser here, just a way to block the device, some sort of login screen.
And of course, screen rotation!
Basically, all these are the first thoughts I had on having touch functionality on Haiku. If I keep thinking, plenty more could come out, but for starters, I presume this list can do.
Of course, I have no idea on how to do any of this stuff, as right now I’m fighting with Python and GDScript on my free time, which I also use to think stuff like this list too. Hopefully, someday I can complete the development of a simple Python program for Haiku.