# Introduction

TweeseCake is a light-weight, multi-purpose, robust software suite, for Windows and macOS. It can either be controlled entirely without a window (Windows only), or from a handy, easy-to-use UI! Some highlights include:

- Supports Mastodon, Telegram, Radio, Github, RSS Feeds, and many more.
- Allows you to navigate your file system without ever bringing up a window, or in a very fast, no fuss window.
- Customizable global keyboard shortcuts.
- Very light on system resources.
- Customizable soundpacks.
- And a lot more!

# Notes

The invisible interface is only available on Windows, and it will probably remain that way (Apple doesn’t let us bind many shortcuts).

In addition, replace control with command and alt with option in keyboard shortcuts on Mac.

It’s also worth noting that to get to a list of all possible commands from within the UI, press alt+m. On a mac, press option+m. This is session specific, so it will only show you what you need to know.

# Getting started

Upon first launch, you will be asked for your TweeseCake username and password. If you do not have an account already, go to TweeseCake.app to create one.

Once that’s done, you’ll need to find your config session if using the window, or press Alt+Windows+Shift+Right arrow to get to the config session. After that, to create a new session/account, use control shift N if using the window, or Alt+Win+Shift+N if not. This will bring up the session type chooser. Simply choose what type of session you want from the list, and press OK.

Below are instructions for setting up each session type.

## Telegram

- You will be asked for your phone number, this includes your country code, and then for an authorization code that is sent directly to your Telegram account. For example, an example US phone number would look like this: +19998765433. Enter it, and you’re good to go.
- After you enter your phone number, you will be sent a log-in code via Telegram itself if you already have an account, otherwise SMS. Enter this code into the input field that comes up.
- If you have a 2FA password set, you will be asked for this next.

After you do these steps, you’re all set and Telegram will load in your chats! If you are unable to log into telegram, please try downloading the Microsoft Redistributable package and install it.

## File Explorer

A new session will simply be created, no input required.

## Radio

A new session will also just be created with no input required.

## Mastodon

First, you’ll be asked for the mastodon instance you wish to log in with. If you don’t know what this means, just press enter for the default (currently tweesecake.social).
The Mastodon login page will then be opened in your browser. Once logged into Mastodon, copy the code that Mastodon shows into the authorization code window, and press enter.

### Mastodon disclaimer

The Mastodon session is incomplete; the integration may present a number of issues, or may not work at all. This is always being improved with each update. If you need something that isn’t currently implemented, we suggest the Semaphore client. Alternatively, get in touch. Our mastodon username is @app@tweesecake.social

## Github

To log into Github, you need a personal access token. To get this token, Go to Github’s tokens page and generate a new token. Save this token in case you need to log in again.
Note: When creating your token, Make sure the private repositories check box is checked, if you’d like TweeseCake to be able to read your private repositories.

## Feeds

A new session will just be created, at which point you can just add feeds to it.

## Home Assistant

To log into your home assistant instance, you will need a URL (E.G: http://homeassistant.local:8123) or an IP address on your local network. You will also need a Long-Lived access token, which can be obtained from your profile page:

# Session specific documentation

## Telegram

This session allows you to interact with Telegram. While it doesn’t contain all of Telegrams functionality (e.g. calling), it contains quite a good bit. The default buffers are as follows:

- Chats: Displays a list of all your chats. You can open one with the interact key, and you can also open a contacts buffer with the Alt+Windows+C shortcut (by default).

### Interaction

- Interact
  - Conversation buffer
    - Open URL
    - Play audio
    - Open file
  - Users/Chats buffer
    - open conversation.
- Secondary
  - Conversation buffer
    - open conversation
    - open folder (if media message)
  - Users buffer
    - refresh list
  - Chats buffer
    - mark as read.

### UI Keys

- Control+N: Send a new message to the focused chat from your chats buffer, or to the current chat buffer.
- Control+E: Edit the focused message.
- Control+V: Send a voice message to the focused chat or chat buffer.
- Control+R: Reply to the focused chat in the buffer.
- Control+Shift+R: Send a voice message as a reply to the focused chat.
- Control+shift+F: Send a file to the focused chat.
- Control+Shift+C: Open your contacts list.
- Control+Slash: Search Telegram.
- Control+L: Join a telegram chat via a link.
- Control+Semicolon: Speak info on the selected user.
- Control+shift+semicolon: Speak the original message a message is in reply to.
- Alt+V: View the current message in a text dialog.
- Delete: Delete the current message from Telegram, if possible.
- Control+shift+M: View the members of a group or subscribers of a channel.
- Control+J: Join the current channel or group chat.
- Control+Shift+J: Leave the current channel or group chat.
- Control+M: Mute the current chat. Must be done from chats buffer.
- Control+Left Bracket: Slow down the currently playing voice message.
- Control+Right Bracket: Speed up the currently playing Voice Message.
- Control+B: Block user
- Control+Shift+B: Unblock user.
- Alt+P: Pin currently focused message.
- Control+Shift+V: View pinned message.

## File explorer

This session allows you to explore your file system without needing a window. The default buffers are as follows:

- Drives: Displays all the drives you currently have connected (including your main harddrive).
- Shortcuts: This buffer contains items you’ve bookmarked for easy access. It’s empty by default.
- Bookmarks: This buffer allows you to store bookmarks to links (e.g. tt:// links).

### Interaction

- Interact: Navigate.
- Secondary: Open folder in new buffer.

### UI Keys

- Control+N: Open a buffer to a manually typed path
- Backspace: Go back a directory in the current buffer
- Control+Semicolon: Speak info on the current item.
- Control+X, C, and V: Cut, Copy and Paste using the File Explorer Clipboard.
- Control+Shift+C: Copy a file to the Windows Explorer clipboard.
- Delete: Delete the focused file, folder or shortcut.
- Control+Shift+A: Add a shortcut to the focused folder or file.
- Control+E: Open the currently focused file in Notepad.
- Control+O: Open the current file in Windows Explorer.
- Control+F: Find a file in the current folder.
- Alt+C: Copy the currently focused file or folder’s path to your clipboard.
- Control+Shift+O: Attempt to open the current file in TweeseCake, if possible.
- Control+B: Add URL bookmark to bookmarks buffer.

## Radio

The radio session allows you to listen to internet radio. The default buffers by default are:

- Favorite stations: Shows stations you’ve favorited.

### Interaction

- Interact: Play radio.
- Secondary: Add to favorites.

### UI keys

- Control+Slash: Search for a station using the radio-browser.info service.
- Control+N: Add a custom URL to your favorites.
- Delete: Delete a favorite.
- Control+R: Play a random station from your favorites.
- control+semicolon: Speak the URL of the focused station.
- Control+shift+semicolon: Copy a playback URL of the currently playing station to your clipboard.
- Control+H: Show song playback history.

## Github

The Github session allows you to view your repositories, as well as the files in that repository. It also allows you to view issues of repositories, make new ones, and comment on existing ones. Finally, it allows you to search github for repositories.

### Interaction

- Interact: Repository buffer - open file view in latest commit on the default branch. Commits buffer - open statuses. Issues buffer - open issue events.
- Secondary: Repository buffer - open commits. Issues buffer - open issue on the web.

### UI keys

- Backspace: Go back a directory in a contents buffer.
- Control+I: Open an issues buffer for the focused repository.
- Control+N: New Issue or comment on issue depending on the focused buffer.
- Control+Slash: Search Github for a repository.
- Control+C: Copy the focused repository’s github URL.
- alt+w: Watch/unwatch a repo.
- control+s: Star/unstar a repo
- Control+R: open a releases buffer for a repo.

## Feeds

The feeds session allows you to listen to podcasts and view RSS feeds all from one session! We’ve made it as easy to use as possible.

### Interaction

- Interact
  - Feeds buffer
    - open feed
  - Feed buffer
    - open content
    - play podcast.
- Secondary:
  - Feed buffer
    - open URL.

### UI Keys

- Control+N: Add a new feed.
- Delete: Remove a feed.

## Home Assistant

The Home Assistant session allows you to view the state and interact with your smart home from within the TweeseCake application.

- Logbook: Shows the events from the logbook on your Home Assistant instance.
- Light, switch, sensor, ETC: These are your state buffers. They allow you to interact with your smart home devices.

### Interaction

- Interact: Toggle, execute update, activate scene, open number value dialog and open temperature dialog.
- Secondary: Volume and brightness.

### UI Keys

- Control+[: Execute the previous action for an entity. E.G: previous track on a media player.
- Control+]: Execute the next action for an entity. E.G: next track on a media player.
- Control+S: Select a mode or source for an entity. E.G: Change source input on a TV (media player).
- Control+Page Up: Increase the value for an entity. E.G: brightness, volume, ETC.
- Control+Page Down: Decrease the value for an entity. E.G: brightness, volume, ETC.
- Control+Shift+S: Remove a domain from the ignored buffer domain list. To ignore a domain, dismiss the buffer.
- Alt+L: Create a new list for favorite entities.
- Alt+A: Add the selected entity to a favorites list.
- Alt+Shift+A: Remove the selected entity from a favorites list.

## Config

You will already have a session by default called “TweeseCake: Config”. This is your configuration / options session. It doesn’t require any kind of setup; it’s just there by default. The default buffer is general, and there is a second buffer called buffers. They currently contain the following options:

### General

- Keymap: Interacting with this option will allow you to change your keymap. Do note that the changes won’t take effect until you press OK.
- 24-hour time: Toggles weather or not 24-hour time is used when relative times is off.
- Relative times: Toggles if you’ll hear something like, a minute ago, not, 16:56:27 for timestamps.
- Open URL if there is only one: This option allows TweeseCake to bypass the select URL dialog and automatically open a URL if interacting with a post or message that contains a URL and only one URL is present.
- Enter to submit multiline text dialogs: This option, if enabled, allows you to press enter to accept multi line text dialogs (Such as the new tweet dialog or the telegram new chat dialog.
- Word wrap in text fields: Toggles if long lines in text fields will split onto multiple lines.
- Send longer items directly to the screen reader when navigating in the GUI: This option will send longer items that would normally be truncated in the GUI directly to the screen reader after a small delay of focusing them.
- Ask for comfermation when exiting: This option toggles if you’re asked if you want to exit when pressing the exit hotkey.
- Version: This option tells you your current version, as well as if there’s a new one.

### Buffers

- Auto-focus new buffers: This option let’s you toggle if buffers are focused once they’re opened. For example, if opening a Mastodon conversation will auto-focus it.
- Buffer Template: Allows you to set what speaks when you move between buffers with windows alt left or right arrow.
- Reverse Timelines: Allows you to reverse the buffers to show the oldest items on the top vs the bottom.

### Sound

- Output Device: Allows you to change TweeseCake’s output device.
- Input Device: Allows you to change TweeseCake’s input device, for recording voice messages in Telegram.
- Volume announcements (option ignored in silent sessions): This option toggles if you hear percentage of volume when adjusting it with the volume up and down keys in addition to the sound.
- Seek time for playing media in seconds: This adjusts how far the seek forward and back hotkeys jump by.

### UI Keys

- Control+C: Open the changelog in a buffer.

### Interaction

- Interact: Change option.

## Mastodon

The Mastodon session type allows you to interact with Mastodon. It doesn’t support absolutely everything you can do on mastodon for the moment, but it can do quite a bit!

### Interaction

- Interact:
  - Open URL (if any).
  - On follower request notifications, interact with the follower request in order to confirm or deny it.
- Secondary: Play audio on post buffers.

### UI keys

- Control+N: Compose a new post.
- Control+E: Edit the focused post.
- Control+r: Reply to the focused post.
- Control+shift+R: Boost (Reblog) the focused post.
- Control+F: Favorite the focused post.
- Control+Shift+F: Unfavorite the focused post.
- Alt+B: Bookmark the selected post.
- Alt+Shift+B: Unbookmark the selected post.
- Control+C: Copy the current post to your clipboard.
- Control+Shift+Semicolon: Speak the referencing post (The post the current post is a reply to, or the original post if it is a boost/reblog)
- Alt+V: View the post along with other info about it in a dialog.
- Control+Shift+V: View information about the currently focused post in a buffer.
- Alt+W: Open the focused post on the web.
- Delete: Delete the focused post.
- Control+G: Get post thread or conversation.
- Alt+PageUp: Load previous posts in the focused timeline, if possible.
- Control+Semicolon: Get details on the user or users in the focused post.
- Control+L: Follow the currently focused user.
- Control+shift+l: Unfollow the currently focused user.
- Control+D: Send a direct post to a user.
- Control+Shift+H: Hide boosts for the focused user.
- Control+H: Unhide boosts for the focused user.
- Control+U: Open a user’s timeline.
- Control+Shift+U: Open a user’s full profile.
- Control+b: Block a user
- Control+shift+b: Unblock a user
- Alt+N: Set a user’s custom nickname.
- Control+shift+p: Restore your buffer position manually.
- Control+alt+k: Open your favorites.
- Control+Alt+B: Open your bookmarks
- Control+Left Bracket: List your followers
- Control+Right Bracket: List your friends
- Control+Shift+Left Bracket: List another user’s followers
- Control+Shift+Right Bracket: List another user’s friends
- Control+Backslash: List mastodon follow suggestions.
- Control+Shift+Backslash: View the profile directory for your instance.
- Control+I: View information on your Mastodon instance.
- Alt+P: View federated timeline
- Alt+L: View local timeline
- Control+Slash: Search mastodon for posts, users or hashtags
- Control+T: View trending hashtags.

## Misc UI keys

- Control+Shift+N: New Session.
- Control+Shift+Delete: Remove session.
- Control+P: Open a configuration buffer for the selected session.
- Control+W: Hide the Window.
- Control+Page Up: Move up by the configured jump amount of items in the buffer.
- Control+Page Down: Move down by the configured jump amount of items in the buffer.
- Control+Up: Sound volume up
- Control+Down: Sound volume down
- Control+Shift+Up: Media Volume Up
- Control+Shift+Down: Media Volume Down
- Control+Left: Buffer left (Shortcut)
- Control+Right: Buffer Right (Shortcut)
- Control+Apostrophe: Dismiss buffer.
- Control+A: Toggle mute on a buffer.
- Control+Shift+Left: Session Left (Shortcut)
- Control+Shift+Right: Session Right (Shortcut)
- Enter: Interact with focused item
- Shift+Enter: Secondary interact with focused item
- Control+Numbers: Focus a specific buffer numerically.
- Control+Shift+Numbers: Focus a specific session numerically.

# Invisible Keyboard shortcuts

Invisible Keyboard shortcuts are always being added and updated based on your keymap or currently focused session. To get a current list of keyboard shortcuts relevant to the session you’re currently focused in, press windows alt shift H from anywhere.

# Creating custom keymaps

To create a custom keymap, create a new text file in the keymaps folder, and rename it to the name of your keymap. After that, change the extension from .txt to .keymap. If you get a warning about files possibly becoming unusable, press yes.

Your file should contain this at the top of it.

    [info]
    name = Name of your keymap
    desc = Description of what your keymap does.
    author = Your name

    [keymap]
    Keys go here.

Do note that you don’t have to fill in all the keys, just the ones you want to change. Any keys left out will be assigned to the default.

## Note

Currently, keymaps only work for global keys.

At the time of this writing, there’s no way to remap the UI keys.

# Soundpacks

To create a soundpack, create a folder with the type of session you want to support, followed by a dash (-), followed by the name of your pack (e.g. mastodon-mypack). Do note that names are not case-sensative.

The currently available session types are:

- telegram
- fileExplorer
- Github
- Mastodon

Your packs need to contain the following files:

## Telegram

- new_channel_message.wav: Sound for receiving a channel message.
- new_group_message.wav: Sound played when you get a messsage from a group.
- new_message.wav: Sound for receiving a new private message.
- sent.wav: This sound plays when you send a message, no matter if it’s to a group, a private conversation, or a channel.

## fileExplorer

- navigate.wav: Sound played when you navigate into or out of a folder.

## Github.

- navigate.wav: Sound played if you navigate into and out of repositories.

## Mastodon.

- error.wav: This sound plays if an error is encountered.
- favorite.wav: Sound played if you favorite a toot.
- favorites.wav: Sound played for your favorites updating.
- max.wav: played if you hit the character limit.
- new_dm.wav: Played if you receive a new DM
- new_mention.wav: played if you receive a mention.
- new_notification.wav: Played when you receive a new notification.
- new_search.wav: Played when you open a new search
- new_toot.wav: played when you receive a toot.
- open_timeline.wav: played when you open a timeline.
- search_updated.wav: Played when you receive new search results in a search buffer.
- send_boost.wav: This sound plays if you boost a toot.
- send_dm.wav: Played when you send a direct mention.
- send_reply.wav: plays when you reply to someone
- send_toot.wav: This sound plays if you send a toot.
- unfavorite.wav: If you unfavorite a toot, this sound will play.
- user.wav: Sound played for a user timeline updating.

# Default Sounds.

Inside the sounds folder, you will find a folder named default. This contains sounds that you don’t have to fill in, but you can on a per-soundpack basis. If you don’t fill them in, the sounds in here will play. It contains the following sounds:

- boundary.wav: This is a globally available sound. It plays when you hit the edge of a buffer or ajust the volume.
- close_timeline.wav: Sound played when you close a buffer.
- error.wav: Sound played when TC encounters an error.
- follow.wav: This sound only applies to Mastodon. It plays when you follow or unfollow a user.
- media.wav: This sound plays when you scroll over playable media.
- mention.wav: This sound applies to Telegram, Mastodon. It plays when you scroll over a mention or a reply to you.
- unfollow.wav: This sound applies to Mastodon only. It plays when you unfollow a user.

# Portable mode.

To run TweeseCake in portable mode, create a folder called “userdata” in the same folder (without the quotes). Alternatively, you can copy your appdata TweeseCake folder, and rename it to userdata.

# Getting support.

Need help? Have a question? Want to report a bug? You can contact us and do just that, in one of the following ways:

- Twitter: @TWCakeApp (No longer active)
- Mastodon: @app@tweesecake.social
- Telegram: Support Group