Main Sections

Haiku Subsections

Haiku – Thoughts

Key Intents

Currently there are a multitude of different keybindings in use throughout the wonderful world of Haiku software of which you have to memorize. For example, some apps use Page Up/Page Down to scroll the viewport without moving the insertion point and some move the insertion point, or some apps use Ctrl+Page Up to go to the top of the current document and others use Ctrl+End, or some apps use the End key to go to the end of a line and some use Alt+Right Arrow.

It would be much nicer if you could configure globally what happens when you press a certain key combination i.e. if you could define the key mapping for a particular intent.

Currently the Haiku API has individual keys mapped to a constant, for example B-PAGE-UP, which are sent to the application for it to respond to. What we also need are constants such as the following, B-START-OF-DOCUMENT, B-END-OF-LINE etc.

This, along with a preference/settings/config window à la SpicyKeys would allow for consistency of key mappings amongst the growing number of Haiku applications.

Resize or Move

In Windows when you drag the edge of a window you resize the window and in OSX you move the window. One way of providing for users coming from both operating systems would be to have a small section of the edge which you can toggle between moving and resizing the window with the rest of the edge performing the other function.

Directory Hierarchy

/boot                           (Only files needed to bootstrap the system,
                                 NOT the boot drive)
    kernel.x86 | kernel.ppc

    /bin (All files are statically linked)
        init
        sh
        echo

        probe-addons
        load-addon
        unload-addon

    /config
        /bootscreen
            bootscreen.uconf
            bootscreen.raw      (Raw boot screen image)

        kernel.uconf
        display.uconf
        keyboard.uconf
        filesystems.uconf

        /addons
            addons.uconf        (Global configuration for add-ons)
            {addon}.uconf       (Configures {addon} in /boot/addons)

    /scripts
        startup.sh
        shutdown.sh
        modules.sh

    /addons                     (Kernel add-ons)

 
/system                         (Haiku system)
    /bin                        (Un*x style shell commands)
    /lib

    /addons
        /kernel
        /tracker
        /deskbar
        ...

    /scripts
        startup.sh              (System startup script)
        login.sh                (Script run on user login)
        logout.sh               (Script run on user logout)
        shutdown.sh             (System shutdown script)

        /servers
            server-server.sh
            network-server.sh
        ...

    /servers                    (Server daemons)
        server-server           (Manages the other servers)
        auth-server
        application-server
        notification-server
        mime-server
        network-server
        media-server
        ...

    /applications
        /control-panels         (GUI’s to control servers)

        /Tracker
        /Deskbar

    /config                     (System Configuration. That means no exe’s,
                                 no libraries, ONLY CONFIG FILES)
        config.conf             (Only fixed filename, defines mapping to
                                 localized names of files)
        disks.conf              (Disks to mount)
        display.conf            (Default resolution, bit depth etc.)
        pointer.conf
        bookmarks.conf
        environment.conf
        l10n.conf

        /servers
            /server
                server.conf

            /network
                server.conf
                devices.conf
                dhcp.conf
                routing.conf

            /security
                server.conf
                users.conf
                groups.conf
                passwords.conf
    
        /desktop
            desktop.conf
            workspaces.conf     (Number of workspaces, names etc.)
            /themes
                themes.conf
                {theme}.conf

        /l10n                   (System localization)
            /en
                numbers.conf
                currency.conf
                datetime.conf
                strings.conf    (Standard strings - Yes, No, Cancel etc.)

                /US
                /GB

    /documentation

    /source
        /haiku
            haiku.conf
            /kernel
            /kits
            /system
 
/applications                   (Applications for all users)
    /bin                        (Un*x style shell commands)
    /lib
    /share

    /config

    /database
        database.conf
        /all
            {application}.spec
        /installed              (Links to {application}.spec in ‘all’ directory)

    {application}.package
        /resources
            /default
            /en
                strings.conf
                /US

        /documentation          (Standard Documentation Set)
            License
            ReadMe
            Install
            Uninstall

        /config                 (Default application configuration)

    /perl
    /python
    /java

 
/users
    /baron

    /{user}
        /desktop
        /config
            desktop.conf
            bookmarks.conf
            environment.conf
            l10n.conf
            scheduler.conf
            /{application} or {application}.conf
            /startup

        /scripts
            login.sh
            logout.sh
            ...

        /applications
            /{application}

        /documents
            index.db

            /people

            /mail
                filters.[u|x]conf
                /inbox
                /spam

 
/data
    /system                     (Similar to linux /proc)
        startup                 (Ordered list of scripts to run at startup)
        shutdown                (As above but for shutdown)
        proc                    (Processors & Virtual Processors i.e. cores)
        vproc

    /etc

    /temp
    /pid
    /lock

    /mail                       (System mail server storage)
        /inbox
        /spam

 
/development
    /config
        system.uconf            (Toolchain definitions)

    /java
        toolchain.uconf

    /gcc or llvm                (System compiler toolchain)
        toolchain.uconf
        {platform}.uconf
        gcc
        ld

    /headers
        /c
            /haiku

 
/disk
    /boot
    /cdrom

/dev
    /ide
    /usb
    /firewire
    /scsi
    /serial
    /parallel
    /disk
    /network

Notes

All config files come in various forms characterised by their extensions

.conf
Flattened BMessage
.xconf
XML
.uconf
Un*x style ‘name = value’ with RFC822 style wrapping.
.wconf
Windows style = Un*x style + ‘[Section]’s

Shell scripts have the extension .sh