Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/APKBUILD.template
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
pkgname=camera
pkgver=@@VERSION@@
pkgrel=0
pkgdesc="Camera application for the COSMIC Desktop Environment"
pkgdesc="Modern camera app for Linux desktops and phones"
url="https://github.com/cosmic-utils/camera"
arch="all"
license="GPL-3.0-only"
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name = "camera"
version = "0.3.4"
edition = "2024"
license = "GPL-3.0-only"
description = "Camera application for the COSMIC™ desktop"
description = "Modern camera app for Linux desktops and phones"
repository = "https://github.com/cosmic-utils/camera"
authors = ["Frederic Laing <frederic.laing.development@gmail.com>"]

Expand Down
17 changes: 16 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,27 @@
[![Release](https://github.com/cosmic-utils/camera/actions/workflows/release.yml/badge.svg)](https://github.com/cosmic-utils/camera/actions/workflows/release.yml)
[![Translation status](https://hosted.weblate.org/widget/cosmic-utils/camera/svg-badge.svg)](https://hosted.weblate.org/engage/cosmic-utils/)

A camera application for the [COSMIC](https://github.com/pop-os/cosmic-epoch) desktop environment.
A modern camera application for Linux, built for desktops and phones alike.

![Camera Preview](preview/preview-001.png)

[View more screenshots](preview/README.md)

## Features

- **Photo, video and timelapse** modes, with a self timer, composition guides and aspect ratios
- **Manual controls** for exposure, ISO, shutter, focus, white balance and colour, plus pan and tilt on motorised cameras
- **GPU accelerated** preview, filters and debayering via wgpu, with hardware video encoding (VA-API, NVENC, QSV, AMF, V4L2) and software fallback
- **14 creative filters** applied live to the preview, photos, recordings and the virtual camera
- **QR code scanner** that opens links and connects to WiFi through NetworkManager
- **Virtual camera** over PipeWire, so other apps see your filtered feed in video calls
- **JPEG, PNG and DNG** output, including true sensor raw where libcamera exposes a raw stream
- **Multi-camera and multi-microphone** switching with hotplug support
- **Built for Linux phones too**: touch controls, portrait layouts, volume key shutter, hardware flash and haptics
- **Rebindable keyboard shortcuts**, plus an insights panel and bug report generator for diagnostics

Built with [libcosmic](https://github.com/pop-os/libcosmic). It runs on any Wayland or X11 desktop, following the system light/dark preference through the XDG portal, and integrates natively with COSMIC where available.

## Status

This is a personal project by [Frederic Laing](https://github.com/FreddyFunk). It is not affiliated with or endorsed by System76. The application may be contributed to System76 or the COSMIC project in the future if there is interest.
Expand Down
3 changes: 0 additions & 3 deletions i18n/cs/camera.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -305,15 +305,12 @@ filter-pencil = Skica
ptz-pan = Otočení
ptz-tilt = Náklon

desktop-comment = Aplikace kamery pro prostředí COSMIC™
desktop-keywords = kamera;fotoaparát;webkamera;fotografie;video;
metainfo-summary = Pořizujte fotografie a videa
metainfo-description-intro = Aplikace kamery od třetí strany pro prostředí COSMIC™. Ať už potřebujete rychle pořídit fotografii, nahrát video nebo naskenovat QR kód, aplikace nabízí čisté a intuitivní rozhraní, které vám rozhodně nebude překážet.
metainfo-description-usage = Otevřete aplikaci a začněte zachycovat okamžiky. Přidejte zábavné filtry ke svým fotografiím, skenujte QR kódy pro otevření odkazů nebo připojení k Wi-Fi, případně použijte režim virtuální kamery, abyste při videohovorech vypadali skvěle s aplikovaným oblíbeným filtrem.
metainfo-description-features-title = Klíčové funkce:
metainfo-feature-capture = Pořizování fotografií a videí: vysoká kvalita a hardwarová akcelerace
metainfo-feature-qr = Skener QR kódů: otevírání odkazů, připojení k Wi-Fi a další
metainfo-feature-filters = 15 kreativních filtrů: Mono, Sepia, Vivid, Noir, Pencil Sketch a další
metainfo-feature-virtual-camera = Virtuální kamera: používejte filtrovaný obraz kamery při videohovorech a v dalších aplikacích
metainfo-feature-multi-camera = Podpora více kamer: snadné přepínání mezi kamerami a mikrofony
metainfo-caption-photo-tools = Režim fotografie s nabídkou nástrojů
Expand Down
17 changes: 12 additions & 5 deletions i18n/en/camera.ftl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
### Camera, a COSMIC desktop camera application.
### Camera, a camera application for Linux desktops and phones.
###
### Notes for translators:
### Screen space is tight in this app. Most strings sit in overlays drawn on top
Expand Down Expand Up @@ -718,10 +718,9 @@ keybindings-record-save = Save
## are generated into resources/*.desktop and resources/*.metainfo.xml by
## scripts/gen-metadata.py, so those two files are never edited by hand. They
## are the only strings here that are not shown inside the application itself.
## The trademark sign in COSMIC™ must be kept.

# One line tooltip shown in the launcher.
desktop-comment = Third-party camera app for the COSMIC™ desktop
desktop-comment = Take photos, record video, and scan QR codes
# Search terms for the launcher, separated by semicolons and ending with one.
# Translate the terms, and feel free to add extra words people in your language
# would search for. Keeping the English words as well is useful, since many
Expand All @@ -735,22 +734,30 @@ desktop-keywords = camera;webcam;photo;video;
# about 60 characters, as listings truncate it.
metainfo-summary = Capture photos and videos
# First paragraph of the long description.
metainfo-description-intro = { camera } is a third-party camera application for the COSMIC™ desktop environment. Whether you need to snap a quick photo, record a video, or scan a QR code, { camera } provides a clean and intuitive interface that stays out of your way.
metainfo-description-intro = { camera } is a modern camera application for Linux, built for desktops and phones alike. Whether you need to snap a quick photo, record a video, or scan a QR code, { camera } provides a clean and intuitive interface that stays out of your way.
# Second paragraph of the long description.
metainfo-description-usage = Just open the app and start capturing moments. Add fun filters to your photos, scan QR codes to open links or connect to WiFi, or use virtual camera mode to look great in video calls with your favorite filter applied.
# Heading introducing the feature list below. Ends with a colon.
metainfo-description-features-title = Key features:
# Feature list item.
metainfo-feature-capture = Photo and video capture: high quality and hardware accelerated
# Feature list item. Names the three capture modes, which are also translated
# in the mode carousel above, so keep the wording the same.
metainfo-feature-modes = Photo, video and timelapse modes, with a self timer and composition guides
# Feature list item.
metainfo-feature-controls = Manual controls: exposure, ISO, shutter, focus and white balance
# Feature list item. QR and WiFi are product names and stay as they are.
metainfo-feature-qr = QR code scanner: open links, connect to WiFi, and more
# Feature list item. The filter names are the same ones used in the app, so
# translate them the same way there.
metainfo-feature-filters = 15 creative filters: Mono, Sepia, Vivid, Noir, Pencil Sketch, and more
metainfo-feature-filters = 14 creative filters: Mono, Sepia, Vivid, Noir, Pencil Sketch, and more
# Feature list item.
metainfo-feature-virtual-camera = Virtual camera: use your filtered camera feed in video calls and other apps
# Feature list item.
metainfo-feature-multi-camera = Multi-camera support: easily switch between cameras and microphones
# Feature list item. Describes the Linux phone support: touch input, portrait
# layouts, and using the volume keys as a shutter button.
metainfo-feature-phone = Built for Linux phones too: touch controls, portrait layouts and volume key shutter

## Screenshot captions in the software centre listing.

Expand Down
3 changes: 0 additions & 3 deletions i18n/uk/camera.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -278,15 +278,12 @@ keybindings-record-replace = Замінити
keybindings-record-cancel = Скасувати
keybindings-record-save = Зберегти

desktop-comment = Застосунок камери для середовища COSMIC™
desktop-keywords = камера;kamera;camera;вебкамера;знімок;фото;видиво;відео;запис;космік;photo;video;
metainfo-summary = Знімайте фото та відео
metainfo-description-intro = { camera } — це сторонній застосунок камери для середовища COSMIC™. Потрібно швидко зробити знімок, записати відео чи відсканувати QR-код? { camera } пропонує чистий, інтуїтивний інтерфейс, який не плутатиме вас.
metainfo-description-usage = Просто відкрийте застосунок і починайте творити. Застосовуйте креативні фільтри до знімків, миттєво скануйте QR-коди для переходу за посиланнями чи підключення до Wi-Fi, або скористайтеся режимом віртуальної камери, щоб виглядати бездоганно у відеодзвінках з улюбленим фільтром.
metainfo-description-features-title = Основні можливості:
metainfo-feature-capture = Знімки та відеозйомка: висока якість і апаратне прискорення
metainfo-feature-qr = Сканер QR-кодів: відкривайте посилання, підключайтеся до Wi-Fi та багато іншого
metainfo-feature-filters = 15 креативних фільтрів: Моно, Сепія, Насичений, Нуар, Нарис олівцем та інші
metainfo-feature-virtual-camera = Віртуальна камера: використовуйте відфільтроване зображення у відеодзвінках та інших застосунках
metainfo-feature-multi-camera = Підтримка кількох камер: легко перемикайтеся між камерами та мікрофонами
metainfo-caption-filters = Вибір фільтрів
Expand Down
3 changes: 0 additions & 3 deletions i18n/zh-CN/camera.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -229,15 +229,12 @@ settings-timelapse-interval-description = 连续照片拍摄之间的时间间
insights-capture = 捕捉
insights-capture-burst = 连拍捕捉

desktop-comment = COSMIC™ 桌面的第三方相机应用
desktop-keywords = 相机;摄像头;照片;视频;
metainfo-summary = 拍摄照片和视频
metainfo-description-intro = { camera }是 COSMIC™ 桌面环境的第三方相机应用程序。 无论您需要快速拍照、录制视频还是扫描二维码, { camera }都提供简洁直观的界面,不会妨碍您的操作。
metainfo-description-usage = 只需打开应用程序即可开始捕捉精彩瞬间。 为照片添加有趣的滤镜,扫描二维码打开链接或连接 WiFi, 或使用虚拟相机模式在视频通话中应用您喜爱的滤镜,展现最佳状态。
metainfo-description-features-title = 主要功能:
metainfo-feature-capture = 照片和视频捕捉:高质量且支持硬件加速
metainfo-feature-qr = 二维码扫描器:打开链接、连接 WiFi 等
metainfo-feature-filters = 15 种创意滤镜:单色、复古棕褐、鲜艳、黑白、铅笔素描等
metainfo-feature-virtual-camera = 虚拟相机:在视频通话和其他应用中使用带滤镜的摄像头画面
metainfo-feature-multi-camera = 多摄像头支持:轻松切换摄像头和麦克风
metainfo-caption-filters = 滤镜选择器
Expand Down
5 changes: 1 addition & 4 deletions resources/io.github.cosmic_utils.camera.desktop
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,7 @@ GenericName[fr]=Caméra
GenericName[sv]=Kamera
GenericName[uk]=Камера
GenericName[zh_CN]=相机
Comment=Third-party camera app for the COSMIC™ desktop
Comment[cs]=Aplikace kamery pro prostředí COSMIC™
Comment[uk]=Застосунок камери для середовища COSMIC™
Comment[zh_CN]=COSMIC™ 桌面的第三方相机应用
Comment=Take photos, record video, and scan QR codes
Icon=io.github.cosmic_utils.camera
Exec=camera
Terminal=false
Expand Down
13 changes: 5 additions & 8 deletions resources/io.github.cosmic_utils.camera.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,7 @@
<summary xml:lang="uk">Знімайте фото та відео</summary>
<summary xml:lang="zh-CN">拍摄照片和视频</summary>
<description>
<p>Camera is a third-party camera application for the COSMIC™ desktop environment. Whether you need to snap a quick photo, record a video, or scan a QR code, Camera provides a clean and intuitive interface that stays out of your way.</p>
<p xml:lang="cs">Aplikace kamery od třetí strany pro prostředí COSMIC™. Ať už potřebujete rychle pořídit fotografii, nahrát video nebo naskenovat QR kód, aplikace nabízí čisté a intuitivní rozhraní, které vám rozhodně nebude překážet.</p>
<p xml:lang="uk">Камера — це сторонній застосунок камери для середовища COSMIC™. Потрібно швидко зробити знімок, записати відео чи відсканувати QR-код? Камера пропонує чистий, інтуїтивний інтерфейс, який не плутатиме вас.</p>
<p xml:lang="zh-CN">相机是 COSMIC™ 桌面环境的第三方相机应用程序。 无论您需要快速拍照、录制视频还是扫描二维码, 相机都提供简洁直观的界面,不会妨碍您的操作。</p>
<p>Camera is a modern camera application for Linux, built for desktops and phones alike. Whether you need to snap a quick photo, record a video, or scan a QR code, Camera provides a clean and intuitive interface that stays out of your way.</p>
<p>Just open the app and start capturing moments. Add fun filters to your photos, scan QR codes to open links or connect to WiFi, or use virtual camera mode to look great in video calls with your favorite filter applied.</p>
<p xml:lang="cs">Otevřete aplikaci a začněte zachycovat okamžiky. Přidejte zábavné filtry ke svým fotografiím, skenujte QR kódy pro otevření odkazů nebo připojení k Wi-Fi, případně použijte režim virtuální kamery, abyste při videohovorech vypadali skvěle s aplikovaným oblíbeným filtrem.</p>
<p xml:lang="uk">Просто відкрийте застосунок і починайте творити. Застосовуйте креативні фільтри до знімків, миттєво скануйте QR-коди для переходу за посиланнями чи підключення до Wi-Fi, або скористайтеся режимом віртуальної камери, щоб виглядати бездоганно у відеодзвінках з улюбленим фільтром.</p>
Expand All @@ -34,14 +31,13 @@
<li xml:lang="cs">Pořizování fotografií a videí: vysoká kvalita a hardwarová akcelerace</li>
<li xml:lang="uk">Знімки та відеозйомка: висока якість і апаратне прискорення</li>
<li xml:lang="zh-CN">照片和视频捕捉:高质量且支持硬件加速</li>
<li>Photo, video and timelapse modes, with a self timer and composition guides</li>
<li>Manual controls: exposure, ISO, shutter, focus and white balance</li>
<li>QR code scanner: open links, connect to WiFi, and more</li>
<li xml:lang="cs">Skener QR kódů: otevírání odkazů, připojení k Wi-Fi a další</li>
<li xml:lang="uk">Сканер QR-кодів: відкривайте посилання, підключайтеся до Wi-Fi та багато іншого</li>
<li xml:lang="zh-CN">二维码扫描器:打开链接、连接 WiFi 等</li>
<li>15 creative filters: Mono, Sepia, Vivid, Noir, Pencil Sketch, and more</li>
<li xml:lang="cs">15 kreativních filtrů: Mono, Sepia, Vivid, Noir, Pencil Sketch a další</li>
<li xml:lang="uk">15 креативних фільтрів: Моно, Сепія, Насичений, Нуар, Нарис олівцем та інші</li>
<li xml:lang="zh-CN">15 种创意滤镜:单色、复古棕褐、鲜艳、黑白、铅笔素描等</li>
<li>14 creative filters: Mono, Sepia, Vivid, Noir, Pencil Sketch, and more</li>
<li>Virtual camera: use your filtered camera feed in video calls and other apps</li>
<li xml:lang="cs">Virtuální kamera: používejte filtrovaný obraz kamery při videohovorech a v dalších aplikacích</li>
<li xml:lang="uk">Віртуальна камера: використовуйте відфільтроване зображення у відеодзвінках та інших застосунках</li>
Expand All @@ -50,6 +46,7 @@
<li xml:lang="cs">Podpora více kamer: snadné přepínání mezi kamerami a mikrofony</li>
<li xml:lang="uk">Підтримка кількох камер: легко перемикайтеся між камерами та мікрофонами</li>
<li xml:lang="zh-CN">多摄像头支持:轻松切换摄像头和麦克风</li>
<li>Built for Linux phones too: touch controls, portrait layouts and volume key shutter</li>
</ul>
</description>
<launchable type="desktop-id">io.github.cosmic_utils.camera.desktop</launchable>
Expand Down
13 changes: 11 additions & 2 deletions scripts/gen-metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,13 @@
],
"li": [
"metainfo-feature-capture",
"metainfo-feature-modes",
"metainfo-feature-controls",
"metainfo-feature-qr",
"metainfo-feature-filters",
"metainfo-feature-virtual-camera",
"metainfo-feature-multi-camera",
"metainfo-feature-phone",
],
}
METAINFO_SCREENSHOTS = {
Expand Down Expand Up @@ -121,16 +124,22 @@ def langs_for(translations: dict[str, dict[str, str]], key: str) -> list[str]:


def render_desktop(translations: dict[str, dict[str, str]], text: str) -> str:
"""Rewrite the localised Key[lang]= lines of a desktop entry."""
"""Rewrite the mapped values of a desktop entry, English line included.

The metainfo renderer rewrites its English elements too, so doing the same
here keeps both files fully generated. Anything unmapped (Icon, Exec, and
the rest) is copied through untouched.
"""
# Desktop entries use POSIX locale names, so zh-CN becomes zh_CN.
lines = [ln for ln in text.splitlines() if not re.match(r"^\w+\[[^\]]+\]=", ln)]
out: list[str] = []
for line in lines:
out.append(line)
match = re.match(r"^(\w+)=", line)
if not match or match.group(1) not in DESKTOP_KEYS:
out.append(line)
continue
key = DESKTOP_KEYS[match.group(1)]
out.append(f"{match.group(1)}={translations[key][SOURCE_LANG]}")
for lang in langs_for(translations, key):
out.append(f"{match.group(1)}[{lang.replace('-', '_')}]={translations[key][lang]}")
return "\n".join(out) + "\n"
Expand Down
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only

//! Camera - A camera application for the COSMIC desktop environment
//! Camera - Modern camera app for Linux desktops and phones
//!
//! This library provides the core functionality for the Camera application,
//! including camera capture, video recording, and photo processing.
Expand Down
2 changes: 1 addition & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ mod cli;

#[derive(Parser)]
#[command(name = "camera")]
#[command(about = "Camera application for the COSMIC desktop")]
#[command(about = "Modern camera app for Linux desktops and phones")]
#[command(version)]
#[command(subcommand_required = false)]
struct Cli {
Expand Down
Loading