⚠ As of January 2023, Cawbird for Twitter is no longer being developed ⚠
This is because Twitter changed the Developer Agreement to prohibit "creating a substitute for Twitter Applications" and revoked our primary API keys around 20th January.
The next generation of Cawbird will be a Mastodon client. Follow Cawbird Toot Point Oh (codename NewCaw) at https://github.com/CodedOre/NewCaw
Cawbird is was a fork of the Corebird Twitter client from Baedert, which became unsupported after Twitter disabled the streaming API.
Cawbird works worked with the new APIs and includes a few fixes and modifications that have historically been patched in to IBBoard's custom Corebird build on his personal Open Build Service account1.
Cawbird packages are built in the Cawbird Open Build Service project. They can be installed from the Cawbird download page.
These packages are currently available for:
i586, x86_64 (amd64), aarch64 (arm64) and armv7l are available on most platforms (where supported by the distro).
The following distros currently have their own official packages:
sudo apk add cawbird
pacman -Syu cawbird
sudo dnf install cawbird
emerge net-im/cawbird
guix install cawbird
nix-shell -p cawbird
for testing, nix-env -iA cawbird
for permanent installationsudo eopkg it cawbird
Twitter uses specific codecs for videos. These are provided by libav
and are not included in the core repositories of many distros. The following additional repositories are known to include the required libraries:
Key | Description |
---|---|
Ctrl + t |
Compose Tweet |
Back |
Go one page back (this can be triggered via the back button on the keyboard, the back thumb button on the mouse or Alt + Left ) |
Forward |
Go one page forward (this can be triggered via the forward button on the keyboard, the forward thumb button on the mouse or Alt + Right ) |
Alt + num |
Go to page num (between 1 and 7 at the moment) |
Ctrl + Shift + s |
Show/Hide topbar |
Ctrl + p |
Show account settings |
Ctrl + k |
Show account list |
Ctrl + Shift + p |
Show application settings |
When a tweet is focused (via keynav):
r
- replytt
- retweetf
- favoriteq
- quotedd
- deleteReturn
- Show tweet detailsk
- Print tweet details to stdout (debug builds)Due to changes in the Twitter API, Cawbird has the following limitations:
All limitations are limitations imposed by Twitter and are not the fault of the Cawbird client. They have affected all third-party client applications.
Cawbird has also been unable to implement the following features because Twitter did not provide a way for third-party applications to get the data:
As of July 2020, Twitter has announced v2 of the API and may support some of these features. We are looking in to this as that parts of the API are made available.
There are no current known issues with running Cawbird.
Previously, the following issues have occurred that were outside of our control:
gstreamer-vaapi
or equivalent resolves the problem.adaptivedemux
code that are fixed in v1.18.1Since February 2020, there has been a Cawbird project on Transifex. Users can sign up on Transifex for free to help translate Cawbird.
Since August 2020, there has been a Cawbird "unstable" package built on the Open Build Service. These packages are intended for users who can't build Cawbird from source but want to test new features.
Do not use the unstable release unless you are testing new features and understand the risks. They are not intended for everyday use. They will be updated intermittently with new features from git master
. They may have bugs. They may not get patched. They may be behind the main release. They may break things and eat your homework.
It is recommended that you backup ~/.config/cawbird
before running Cawbird-Unstable.
All contributions are welcome (artwork, design, code, just ideas, etc.) but if you're planning to actively change something bigger, talk to me first.
Twitter clients need keys and secrets so that Twitter can go through the OAuth process. Cawbird used to ship with a standard set of but has always supported custom keys through schema settings. However, that wasn't convenient for software builds. Cawbird now supports:
a) per-user tokens and secrets (so each user uses a different "app")
b) configuration of the default token and secret at build time
What this means for developers is that you need to supply two build options with the key and the secret before the software will build. To stop them being trivially identifiable, we base64 encode them.
If you wish to build your own "micro-fork" of the application then register at developer.twitter.com and create an application. To base64 encode the keys you can run echo -n "<value>" | base64
.
Reasons you may wish to micro-fork Cawbird:
Alternatively you can continue using the default keys by using the values VmY5dG9yRFcyWk93MzJEZmhVdEk5Y3NMOA==
and MThCRXIxbWRESDQ2Y0podzVtVU13SGUyVGlCRXhPb3BFRHhGYlB6ZkpybG5GdXZaSjI=
respectively.
Cawbird uses the Meson build system rather than the more archaic autoconf/make combination. Building is as simple as:
meson build -Dconsumer_key_base64=<your-base64-key> -Dconsumer_secret_base64=<your-base64-secret>
ninja -C build
If you want to test translations locally then you will also need to:
-Dlocaltextdomain=true
to mesonninja -C build cawbird-gmo
to generate the binary .mo
translationsfor file in po/*.gmo; do mkdir -p "${file/.gmo}/LC_MESSAGES/"; cp $file "${file/.gmo}/LC_MESSAGES/cawbird.mo"; done
to put the .mo
files in the expected placespushd build; ./cawbird; popd
to run Cawbird from the build directory
cd build; LANGUAGE=aa_BB ./cawbird
with the appropriate language codeNote that executing build/cawbird
may result in one of the following errors:
Settings schema 'uk.co.ibboard.cawbird' is not installed
Settings schema 'uk.co.ibboard.cawbird' does not contain a key named 'foo'
To fix this, use the schemas from the build directory:
GSETTINGS_SCHEMA_DIR=build/data/ GSETTINGS_BACKEND='memory' build/cawbird
Cawbird installs its application icon into /usr/share/icons/hicolor/
, so an appropriate call to gtk-update-icon-cache
might be needed.
gtk+-3.0 >= 3.22
glib-2.0 >= 2.44
json-glib-1.0
sqlite3
libsoup-2.4
librest-0.7
liboauth
gettext >= 0.19.7
vala >= 0.28
(makedep)meson
(makedep)gst-plugins-base-1.0
(for playbin, disable by passing -Dvideo=false
to Meson)gst-plugins-bad-1.0 >= 1.6
or gst-plugins-good-1.0
(disable by passing -Dvideo=false
to Meson, default enabled)
element-gtksink
feature, provided by gstreamer1.0-gtk
on Ubuntu-based systems,
gstreamer1-plugins-bad-free-gtk
on older RPM-based systems and gstreamer1-plugins-good-gtk
on
newer RPM-based systemsgst-libav-1.0
(disable by passing -Dvideo=false
to Meson, default enabled)gspell-1 >= 1.2
(for spellchecking, disable by passing -Dspellcheck=false
to Meson, default enabled)Note that the above packages are just rough estimations, the actual package names on your distribution may vary and may require additional repositories (e.g. RPMFusion in Fedora, or Packman in openSUSE)
If you pass -Dvideo=false
to the Meson script, you don't need any gstreamer dependency but won't be able to view any videos.
Cawbird is released under the GPL v3 (or later) - see COPYING for more details.
The video fallback image is a Creative Commons "CC-BY-3.0" licensed work by Iris Li.