Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • reform/reform-system-image
  • artfwo/reform-system-image
  • bluerise/reform-system-image
  • technomancy/reform-system-image
  • Chartreuse/reform-system-image
  • josch/reform-system-image
  • doctorhoo/reform-system-image
  • rufform/reform-system-image
  • hartkopp/reform-system-image
  • sevan/reform-system-image
  • chaseadam/reform-system-image
  • zeha/reform-system-image
  • hramrach/reform-system-image
  • frickler/reform-system-image
14 results
Show changes
Commits on Source (352)
Showing
with 1057 additions and 64 deletions
# Gitlab CI file to generate the system image .img file.
image: debian:bullseye-slim
image: debian:unstable-slim
variables:
DIST:
description: "distribution to build image for like testing, unstable and experimental"
value: unstable
REFORM_DEBIAN_PACKAGES_BRANCH:
description: "if set, prefer *.deb packages created by the latest pipeline run from this reform-debian-packages branch under the namespace set by REFORM_DEBIAN_PACKAGES_NAMESPACE"
value:
REFORM_DEBIAN_PACKAGES_NAMESPACE:
description: "if REFORM_DEBIAN_PACKAGES_BRANCH is set, determines from which namespace to obtain the gitlab CI pipeline reprepro job from. Default: reform"
value: reform
SYSIMAGES:
description: "Which system images to produce, like reform-system-a311d (if this is empty, all are built)"
value:
build:
script:
- sed -i 's|http://deb.|http://ftp.de.|g' /etc/apt/sources.list
- apt update
- apt-get -y install sudo gzip libext2fs2 pigz
- apt-get -y install bc parted multistrap udisks2 gcc-aarch64-linux-gnu make device-tree-compiler qemu-user-static binfmt-support build-essential bison flex libssl-dev bash git qemu-system-aarch64
- cd reform2-imx8mq
- bash mkimage.sh
- pigz reform-system.img
- pigz reform-rescue-system.img
script: |
set -x
apt update -o Acquire::AllowReleaseInfoChange=true -o quiet::ReleaseInfoChange=true
apt-get --no-install-recommends -y install mmdebstrap ca-certificates e2fsprogs pigz git mount parted apt-utils libarchive-tools python3-apt bmap-tools wget dpkg-dev uuid-runtime
if [ ! -e /proc/sys/fs/binfmt_misc/status ]; then
mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc
fi
apt-get --no-install-recommends -y install arch-test qemu-user-static
arch-test arm64 || cat /usr/lib/binfmt.d/qemu-aarch64.conf > /proc/sys/fs/binfmt_misc/register
arch-test arm64
if [ -n "${REFORM_DEBIAN_PACKAGES_BRANCH:+x}" ]; then
echo "REFORM_DEBIAN_PACKAGES_BRANCH=${REFORM_DEBIAN_PACKAGES_BRANCH}" >&2
echo "downloading..." >&2
/usr/lib/apt/apt-helper download-file \
"https://source.mnt.re/$REFORM_DEBIAN_PACKAGES_NAMESPACE/reform-debian-packages/-/jobs/artifacts/${REFORM_DEBIAN_PACKAGES_BRANCH}/download?file_type=archiv&job=reprepro" \
"archive.zip"
echo "extracting..." >&2
mkdir -p ./repo
bsdtar --verbose --directory repo --strip-components=5 --extract --file archive.zip "*.deb"
fi
./mkimage.sh
after_script: |
if [ "$DIST" != "unstable" ]; then
echo "DIST: $DIST" >&2
fi
if [ -n "$REFORM_DEBIAN_PACKAGES_BRANCH" ]; then
echo "REFORM_DEBIAN_PACKAGES_BRANCH: $REFORM_DEBIAN_PACKAGES_BRANCH" >&2
fi
artifacts:
paths:
- "reform2-imx8mq/linux/arch/arm64/boot/Image"
- "reform2-imx8mq/linux/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dtb"
- "reform2-imx8mq/linux/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2-hdmi.dtb"
- "reform2-imx8mq/u-boot/flash.bin"
- "reform2-imx8mq/u-boot/flash-rescue.bin"
- "reform2-imx8mq/reform-system.img.gz"
- "reform2-imx8mq/reform-rescue-system.img.gz"
- "pocket-reform-system-a311d.img.gz"
- "pocket-reform-system-a311d.img.gz.bmap"
- "pocket-reform-system-imx8mp.img.gz"
- "pocket-reform-system-imx8mp.img.gz.bmap"
- "pocket-reform-system-rk3588.img.gz"
- "pocket-reform-system-rk3588.img.gz.bmap"
- "reform-next-system-rk3588.img.gz"
- "reform-next-system-rk3588.img.gz.bmap"
- "reform-system-a311d.img.gz"
- "reform-system-a311d.img.gz.bmap"
- "reform-system-imx8mp.img.gz"
- "reform-system-imx8mp.img.gz.bmap"
- "reform-system-imx8mq.img.gz"
- "reform-system-imx8mq.img.gz.bmap"
- "reform-system-ls1028a.img.gz"
- "reform-system-ls1028a.img.gz.bmap"
- "reform-system-rk3588.img.gz"
- "reform-system-rk3588.img.gz.bmap"
- "README.flashing"
# Identify the system image for your Reform
You can find out the name of the system image for your platform by running the
following command:
sh -c '. /usr/share/reform-tools/machines/"$(cat /proc/device-tree/model).conf"; echo "$SYSIMAGE.img.gz"'
To find out the correct system image manually, consider this table:
| Machine | System image filename |
|---------------------------------------|------------------------------------|
| MNT Pocket Reform with BPI-CM4 Module | pocket-reform-system-a311d.img.gz |
| MNT Pocket Reform with i.MX8MP Module | pocket-reform-system-imx8mp.img.gz |
| MNT Pocket Reform with RK3588 Module | pocket-reform-system-rk3588.img.gz |
| MNT Reform 2 with BPI-CM4 Module | reform-system-a311d.img.gz |
| MNT Reform 2 with i.MX8MP Module | reform-system-imx8mp.img.gz |
| MNT Reform 2 (HDMI) | reform-system-imx8mq.img.gz |
| MNT Reform 2 with LS1028A Module | reform-system-ls1028a.img.gz |
| MNT Reform 2 with RCORE RK3588 Module | reform-system-rk3588.img.gz |
# Flashing the system image using bmaptool
If the utility called `bmaptool` is available on your system (found in package
`bmaptool` in Debian), then you can run this command to flash the image to your
SD-Card:
sudo bmaptool copy URL /dev/mmcblkX
Replace `URL` by the https link to the image and `/dev/mmcblkX` by the device
name of your SD-Card. The `bmaptool` utility will prevent you from flashing to
a device which has mounted partitions on it as a safety measure.
# Flashing the system image using dd
Follow these steps:
1. download the appropriate `*.img.gz` disk image from the pipeline artifacts
2. decompress the image using `gunzip disk.img.gz` replacing `disk.img.gz` with the name of your system image
3. identify the device name of your SD-Card, for example by running `lsblk` before and after inserting one
4. copy the image to the SD-Card using this command and replacing `disk.img` with the image name and `/dev/sdx` with the device name:
sudo dd if=disk.img of=/dev/sdx bs=8M status=progress
# MNT Reform System Image
This is a collection of scripts used to build an image file that can then be transferred to a SD Card using `dd`.
This is a collection of scripts used to build the MNT Reform System Images, which are based on Debian GNU/Linux. The images can be transferred to an SD card and booted by an MNT Reform computer.
To start the process, use `./mkimage.sh`. To start over, execute `./cleanup.sh` to delete the existing userland and image.
## Downloading and Flashing a System Image
The resulting file is `reform-system.img`.
Most users will want to download a pre-built image from: https://mnt.re/system-image
1. From the link above, download the file whose name matches the Processor Module in your MNT Reform:
- NXP i.MX8MQ Processor: `reform-system-imx8mq.img.gz`
- RCM4 with BPi CM4/A311D Processor: `reform-system-a311d.img.gz`
- NXP LS1028A Processor: `reform-system-ls1028a.img.gz`
2. Unzip the image using `gunzip reform-system-imx8mq.img.gz` (Substitute your actual image file name, also in the following steps)
3. Identify the device name of your SD card. For example, you can check the output of `lsblk` before and after you insert the card and compare which new device appears. Below we use the device `sdx`, but it will probably be a different one on your computer.
4. Copy the image to your SD card using `sudo dd if=reform-system-imx8mq.img of=/dev/sdx bs=8M status=progress`.
## How to Build the Images
Building the images requires considerable disk space and CPU resources, it is generally only required if you want to contribute to the development of the system images.
To create a system image for all platforms, run this:
./mkimage.sh
To only create the image for a specific platform, choose one out of the
following list:
- `pocket-reform-system-a311d`
- `pocket-reform-system-imx8mp`
- `reform-system-a311d`
- `reform-system-imx8mp`
- `reform-system-imx8mq`
- `reform-system-ls1028a`
- `reform-system-rk3588`
And pass it as the positional argument, for example for the MNT Reform 2 with
imx8mq, use:
./mkimage.sh reform-system-imx8mq
The resulting image can then be found as an *.img file in the current
directory.
## License
Copyright 2018-2020 Lukas F. Hartmann / MNT Research GmbH
This project is licensed under the GPLv3 License - see the [LICENSE.md](LICENSE.md) file for details
#!/bin/sh
set -eu
if [ $# -ne 1 ]; then
echo "usage: $1 reform-system.img" >&2
exit 1
fi
IMAGE=$1
cleanup() {
test -n "$KERNELTMP" && rm -f "$KERNELTMP"
test -n "$INITRDTMP" && rm -f "$INITRDTMP"
test -n "$BOOTEXTMP" && rm -f "$BOOTEXTMP"
}
KERNELTMP=$(mktemp)
INITRDTMP=$(mktemp)
# boot partition must be on the same filesystem as the full system image or
# else copy_file_range(2) will not work
BOOTEXTMP=$(mktemp --tmpdir="$(dirname "$IMAGE")")
trap cleanup EXIT INT TERM QUIT
# should be 12582912
BOOTSTART=$(/usr/sbin/parted --machine "$IMAGE" unit B print | grep '^1:' | cut -d: -f 2)
BOOTSTART=${BOOTSTART%B}
# should be 511705088
BOOTSIZE=$(/usr/sbin/parted --machine "$IMAGE" unit B print | grep '^1:' | cut -d: -f 4)
BOOTSIZE=${BOOTSIZE%B}
# even though /boot is 488 MB, this is fast, because it's sparse and only 70 MB
# have to be actually copied
python3 sparsedd.py "$IMAGE" "$BOOTEXTMP" "$BOOTSTART" 0 "$BOOTSIZE"
kernelname=$(/sbin/debugfs "$BOOTEXTMP" -R "ls -p" 2>/dev/null | cut -d / -f 6 | grep vmlinuz-)
/sbin/debugfs "$BOOTEXTMP" -R "cat $kernelname" > "$KERNELTMP"
initrdname=$(/sbin/debugfs "$BOOTEXTMP" -R "ls -p" 2>/dev/null | cut -d / -f 6 | grep initrd.img-)
/sbin/debugfs "$BOOTEXTMP" -R "cat $initrdname" > "$INITRDTMP"
rm "$BOOTEXTMP"
BOOTEXTMP=
# We create a temporary file using a file descriptor because the cleanup trap
# will not be called anymore after having replaced the shell process with qemu
# using exec.
KERNELFD=3
while test -h "/proc/self/fd/$KERNELFD"; do
KERNELFD=$((KERNELFD + 1))
done
INITRDFD=$((KERNELFD + 1))
while test -h "/proc/self/fd/$INITRDFD"; do
INITRDFD=$((INITRDFD + 1))
done
eval exec "$KERNELFD<"'"$KERNELTMP"'
eval exec "$INITRDFD<"'"$INITRDTMP"'
rm -f "$KERNELTMP" "$INITRDTMP"
KERNELTMP=
INITRDTMP=
set --
cpuname=$(lscpu | awk '/Model name:/ {print $3}' | tr '\n' '+')
ncpu=$(lscpu | awk '/Core\(s\) per socket:/ {print $4}' | tr '\n' '+')
if [ "$cpuname" = "Cortex-A53+Cortex-A73+" ] && [ "$ncpu" = "2+4+" ]; then
# crude detection of the big.LITTLE heterogeneous setup of cores on the
# amlogic a311d bananapi
#
# https://lists.nongnu.org/archive/html/qemu-devel/2020-10/msg08494.html
# https://gitlab.com/qemu-project/qemu/-/issues/239
# https://segments.zhan.science/posts/kvm_on_pinehone_pro/#trouble-with-heterogeneous-architecture
set -- taskset --cpu-list 2,3,4,5
fi
# If the image filename contains a comma, then that comma must be escaped by
# prefixing it with another comma or otherwise output filenames are able to
# inject drive options to qemu (and load the wrong file).
IMAGE_ESCAPED="$(printf "%s" "$IMAGE" | sed 's/,/,,/g')"
# Replace the shell process with the qemu process.
# This allows running this script inside wrappers like timeout(1) which send
# signals to their child process.
exec "$@" qemu-system-aarch64 -netdev user,id=net0 -device virtio-net-pci,netdev=net0 \
-device virtio-gpu-pci,edid=on,xres=1024,yres=768 \
-vnc :94,share=force-shared \
-device virtio-rng-pci,rng=rng0 -smp 4 -cpu max \
-machine type=virt,gic-version=max,accel=kvm:tcg -no-user-config \
-name debvm-run -m 1G -nographic \
-drive "media=disk,format=raw,discard=unmap,file=$IMAGE_ESCAPED,if=virtio,cache=unsafe" \
-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-gpu-pci \
-device virtio-keyboard-pci -device virtio-tablet-pci \
-kernel "/proc/self/fd/$KERNELFD" -initrd "/proc/self/fd/$INITRDFD" -append 'root=LABEL=reformsdroot'
// performance tweaks
pref("layers.acceleration.force-enabled", true);
pref("general.smoothScroll", false);
// remove ads
pref("browser.newtabpage.activity-stream.feeds.topsites", false);
pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
pref("browser.topsites.contile.enabled", false);
......@@ -3,7 +3,7 @@
▒ ▒ ▒
██▒ ██▒ ██▒ Welcome to Debian GNU/Linux
████▒ ████▒ ████▒ ██████▒ on MNT Reform
██████▒ ██████▒ ██████▒ ██████▒ System Image v2: 2021-06-08
██████▒ ██████▒ ██████▒ ██████▒ System Image v4: {DATE}
███████████████████████████
███▒███████▒███████▒███████ https://mntre.com/reform
███ ▒█████ ▒█████ ▒█████ https://www.debian.org
......
......@@ -3,7 +3,7 @@
▒ ▒ ▒
██▒ ██▒ ██▒ Welcome to Debian GNU/Linux
████▒ ████▒ ████▒ ██████▒ on MNT Reform
██████▒ ██████▒ ██████▒ ██████▒ System Image v2: 2021-06-08
██████▒ ██████▒ ██████▒ ██████▒ System Image v4: {DATE}
███████████████████████████
███▒███████▒███████▒███████ https://mntre.com/reform
███ ▒█████ ▒█████ ▒█████ https://www.debian.org
......@@ -11,7 +11,6 @@
▒█ ▒█ ▒█ ████████████████████████
This is the Rescue System on eMMC flash (mmcblk0). It is intended
for repairs on your main system on SD card (mmcblk1) or NVMe SSD.
This is the Rescue System. It is intended for repairs on your main system.
# Defaults for MNT Reform
# set GTK2 theme
export GTK2_RC_FILES=/usr/share/themes/Adwaita-Dark/gtk-2.0/gtkrc
# enable harware acceleration in clapper
# https://github.com/Rafostar/clapper/wiki/Hardware-acceleration#mobile-devices-v4l2-codecs
# this is still needed with clapper 0.6.0 and gst 1.24: https://github.com/Rafostar/clapper/issues/464
export GST_CLAPPER_USE_PLAYBIN3=1
# enables wayland for firefox
export MOZ_ENABLE_WAYLAND=1
# fix misbehavior where Java application starts with a blank screen
export _JAVA_AWT_WM_NONREPARENTING=1
[Desktop Entry]
Name[be]=Аплет Blueman
Name[da]=Blueman-panelprogram
Name[de]=Blueman Applet
Name[el]=Εφαρμογή blueman
Name[es]=Miniaplicación Blueman
Name[et]=Blueman rakend
Name[fi]=Blueman-sovelma
Name[fr]=Applet Blueman
Name[he]=יישומון Blueman
Name[hr]=Blueman aplet
Name[hu]=Blueman kisalkalmazás
Name[it]=Blueman Applet
Name[ja]=Bluetooth アプレット
Name[ko]=Blueman 애플릿
Name[mr]=ब्लूमॅन ॲपलेट
Name[ms]=Aplet Blueman
Name[nb]=Blueman-panelprogram
Name[nl]=Blueman-werkbalkhulpje
Name[pl]=Aplet Blueman
Name[pt_BR]=Miniaplicativo Blueman
Name[pt]=Applet Blueman
Name[ru]=Апплет Blueman
Name[sk]=Aplet bluetooth
Name[sl]=Blueman Applet
Name[sv]=Blueman panelprogram
Name[tr]=Blueman Uygulaması
Name[uk]=Аплет Blueman
Name[zh_CN]=Blueman 小程序
Name[oc]=Applet Blueman
Name=Blueman Applet
Comment[ast]=Alministrador Bluetooth Blueman
Comment[be]=Blueman - кіраўнік Bluetooth
Comment[ca]=Gestor de Bluetooth Blueman
Comment[da]=Blueman Bluetooth-håndtering
Comment[de]=Blueman Bluetooth Manager
Comment[el]=Διαχειριστής bluetooth του blueman
Comment[es]=Gestor de conexiones Bluetooth Blueman
Comment[et]=Bluetoothi haldur Blueman
Comment[fi]=Blueman bluetooth-hallinta
Comment[fr]=Gestionnaire Bluetooth Blueman
Comment[he]=Blueman - מנהל בלוטות׳
Comment[hr]=Blueman Bluetooth upravitelj
Comment[hu]=Blueman Bluetooth-kezelő
Comment[it]=Blueman Gestore Bluetooth
Comment[ja]=Blueman Bluetooth マネージャー
Comment[ko]=Blueman 블루투스 관리자
Comment[lt]=Blueman „Bluetooth“ tvarkytuvė
Comment[nb]=Blueman Blåtannsbehandler
Comment[nl]=Blueman Bluetooth-beheer
Comment[pl]=Menedżer Bluetooth Blueman
Comment[pt_BR]=Gerenciador de Bluetooth Blueman
Comment[pt]=Gestor de Bluetooth Blueman
Comment[ru]=Менеджер Bluetooth Blueman
Comment[sk]=Správca Bluetooth Blueman
Comment[sl]=Blueman Bluetooth upravljalnik
Comment[sv]=Blueman Bluetooth hanterare
Comment[tr]=Blueman Bluetooth Yöneticisi
Comment[uk]=Blueman — засіб керування Bluetooth
Comment[zh_CN]=Blueman 蓝牙管理器
Comment[oc]=Gestionari Bluetooth Blueman
Comment=Blueman Bluetooth Manager
Icon=blueman
Exec=blueman-applet
Terminal=false
Type=Application
Categories=
NotShowIn=GNOME;KDE;MATE;
Hidden=true
[Desktop Entry]
Type=Application
Name=LXPolKit
Name[ca]=LXPolKit
Name[cs]=LXPolKit
Name[da]=LXPolKit
Name[el]=LXPolKit
Name[es]=LXPolKit
Name[et]=LXPolKit
Name[eu]=LXPolKit
Name[fi]=LXPolKit
Name[fr]=LXPolKit
Name[gl]=LXPolKit
Name[he]=LXPolKit
Name[id]=LXPolKit
Name[is]=LXPolKit
Name[ja]=LXpolkit
Name[kk]=LXPolKit
Name[ko]=LXPolKit
Name[lt]=LXPolKit
Name[nl]=LXPolKit
Name[pl]=Zestaw polityk LXPolKit
Name[pt]=LXPolKit
Name[pt_BR]=LXPolKit
Name[ru]=LXPolKit
Name[sk]=LXPolKit
Name[sr]=ЛИкс-Пол-Кит
Name[sr@latin]=LIks-Pol-Kit
Name[sv]=LXPolKit
Name[te]=ఎల్ఎక్స్‌పోల్‌కిట్
Name[tr]=LXPolKit
Name[uk]=LXPolKit
Name[zh_CN]=LXPolKit
Comment=Policykit Authentication Agent
Comment[ar]=وكيل الاستيثاق Policykit
Comment[ca]=Agent d'autenticació de Policykit
Comment[cs]=Policykit ověřovací agent
Comment[da]=Policykit-autentikationsagent
Comment[el]=Mεσολαβητής Πιστοποίησης Policykit
Comment[es]=Agente de autenticación de PolicyKit
Comment[et]=Policykit Autentimise Agent
Comment[eu]=Policykit autentifikazio-agentea
Comment[fi]=PolicyKit-tunnistautumisohjelma
Comment[fr]=Agent d'authentification Policykit
Comment[gl]=Axente Policykit de autenticación
Comment[he]=סוכן אימות מול ערכת מדיניות
Comment[id]=Agen Otentikasi PolicyKit
Comment[is]=PolicyKit auðkennisþjónn
Comment[ja]=Policykit 認証エージェント
Comment[kk]=PolicyKit аутентификация агенті
Comment[ko]=Policykit 인증 대리자
Comment[lg]=Puloguramu ekolera PolicyKit eby'okakasa
Comment[lt]=Policykit tapatybės nustatymo agentas
Comment[nl]=Authenticatie-agent Policykit
Comment[pl]=Agent uwierzytelnienia zestawu polityk
Comment[pt]=Agente de autenticação Policykit
Comment[pt_BR]=Agente de autenticação do Policykit
Comment[ru]=Агент аутенфикации Policykit
Comment[sr]=Полисикитов агент за идентификацију
Comment[sr@latin]=Polisikitov agent za identifikaciju
Comment[sv]=Autentiseringsagent för Policykit
Comment[tr]=Policykit Kimlik Doğrulama Aracı
Comment[uk]=Агент авторизації Policykit
Comment[zh_CN]=Policykit 认证代理
Comment[zh_TW]=Policykit 身分核對代理程式
Exec=lxpolkit
TryExec=lxpolkit
Icon=gtk-dialog-authentication
NotShowIn=GNOME;KDE;MATE;
Hidden=true
[Desktop Entry]
Version=1.0
Name=PulseAudio System Tray
GenericName=
Comment=An Applet for PulseAudio
Exec=pasystray
Icon=pasystray
StartupNotify=true
Type=Application
Categories=AudioVideo;Audio;
Keywords=pulseaudio;tray;system tray;applet;volume;
NotShowIn=GNOME;KDE;MATE;
Hidden=true
# See dunst(5) for all configuration options
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = none
### Geometry ###
# dynamic width from 0 to 300
# width = (0, 300)
# constant width of 300
width = 300
# The maximum height of a single notification, excluding the frame.
height = 300
# Position the notification in the top right corner
origin = top-right
# Offset from the origin
offset = 10x50
# Scale factor. It is auto-detected if value is 0.
scale = 0
# Maximum number of notification (0 means no limit)
notification_limit = 20
### Progress bar ###
# Turn on the progess bar. It appears when a progress hint is passed with
# for example dunstify -h int:value:12
progress_bar = true
# Set the progress bar height. This includes the frame, so make sure
# it's at least twice as big as the frame width.
progress_bar_height = 10
# Set the frame width of the progress bar
progress_bar_frame_width = 1
# Set the minimum width for the progress bar
progress_bar_min_width = 150
# Set the maximum width for the progress bar
progress_bar_max_width = 300
# Corner radius for the progress bar. 0 disables rounded corners.
progress_bar_corner_radius = 0
# Corner radius for the icon image.
icon_corner_radius = 0
# Show how many messages are currently hidden (because of
# notification_limit).
indicate_hidden = yes
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.). (X11 only)
transparency = 0
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
# If gap_size is greater than 0, this setting will be ignored.
separator_height = 2
# Padding between text and separator.
padding = 8
# Horizontal padding.
horizontal_padding = 8
# Padding between text and icon.
text_icon_padding = 0
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 3
# Defines color of the frame around the notification window.
frame_color = "#080808"
# Size of gap to display between notifications - requires a compositor.
# If value is greater than 0, separator_height will be ignored and a border
# of size frame_width will be drawn around each notification instead.
# Click events on gaps do not currently propagate to applications below.
gap_size = 0
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Sort messages by urgency.
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
# A client can set the 'transient' hint to bypass this. See the rules
# section for how to disable this if necessary
# idle_threshold = 120
### Text ###
font = Inter 14
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <https://docs.gtk.org/Pango/pango_markup.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed
format = "<b>%s</b>\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Vertical alignment of message text and icon.
# Possible values are "top", "center" and "bottom".
vertical_alignment = center
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Specify where to make an ellipsis in long lines.
# Possible values are "start", "middle" and "end".
ellipsize = middle
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Stack together notifications with the same content
stack_duplicates = true
# Hide the count of stacked notifications with the same content
hide_duplicate_count = false
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Recursive icon lookup. You can set a single theme, instead of having to
# define all lookup paths.
enable_recursive_icon_lookup = true
# Set icon theme (only used for recursive icon lookup)
icon_theme = Papirus
# You can also set multiple icon themes, with the leftmost one being used first.
# icon_theme = "Adwaita, breeze"
# Align icons left/right/top/off
icon_position = left
# Scale small icons up to this size, set to 0 to disable. Helpful
# for e.g. small files or high-dpi screens. In case of conflict,
# max_icon_size takes precedence over this.
min_icon_size = 32
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 128
# Paths to default icons (only neccesary when not using recursive icon lookup)
icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
# dmenu path.
dmenu = /usr/bin/dmenu -p dunst:
# Browser for opening urls in context menu.
browser = /usr/bin/xdg-open
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Dunst
# Define the class of the windows spawned by dunst
class = Dunst
# Define the corner radius of the notification window
# in pixel size. If the radius is 0, you have no rounded
# corners.
# The radius will be automatically lowered if it exceeds half of the
# notification height to avoid clipping text and/or icons.
corner_radius = 0
# Ignore the dbus closeNotification message.
# Useful to enforce the timeout set by dunst configuration. Without this
# parameter, an application may close the notification sent before the
# user defined timeout.
ignore_dbusclose = false
### Wayland ###
# These settings are Wayland-specific. They have no effect when using X11
# Uncomment this if you want to let notications appear under fullscreen
# applications (default: overlay)
# layer = top
# Set this to true to use X11 output on Wayland.
force_xwayland = false
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
### mouse
# Defines list of actions for each mouse event
# Possible values are:
# * none: Don't do anything.
# * do_action: Invoke the action determined by the action_name rule. If there is no
# such action, open the context menu.
# * open_url: If the notification has exactly one url, open it. If there are multiple
# ones, open the context menu.
# * close_current: Close current notification.
# * close_all: Close all notifications.
# * context: Open context menu for the notification.
# * context_all: Open context menu for all notifications.
# These values can be strung together for each mouse event, and
# will be executed in sequence.
mouse_left_click = close_current
mouse_middle_click = do_action, close_current
mouse_right_click = close_all
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#080808"
foreground = "#ffffff"
timeout = 10
# Icon for notifications with low urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_normal]
background = "#080808"
foreground = "#ffffff"
timeout = 10
# Icon for notifications with normal urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_critical]
background = "#ffffff"
foreground = "#000000"
frame_color = "#000000"
timeout = 0
# Icon for notifications with critical urgency, uncomment to enable
#default_icon = /path/to/icon
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
#
# Messages can be matched by
# appname (discouraged, see desktop_entry)
# body
# category
# desktop_entry
# icon
# match_transient
# msg_urgency
# stack_tag
# summary
#
# and you can override the
# background
# foreground
# format
# frame_color
# fullscreen
# new_icon
# set_stack_tag
# set_transient
# set_category
# timeout
# urgency
# icon_position
# skip_display
# history_ignore
# action_name
# word_wrap
# ellipsize
# alignment
# hide_text
#
# Shell-like globbing will get expanded.
#
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
# GLib based applications export their desktop-entry name. In comparison to the appname,
# the desktop-entry won't get localized.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
# Disable the transient hint so that idle_threshold cannot be bypassed from the
# client
#[transient_disable]
# match_transient = yes
# set_transient = no
#
# Make the handling of transient notifications more strict by making them not
# be placed in history.
#[transient_history_ignore]
# match_transient = yes
# history_ignore = yes
# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
# If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
# withdrawn from screen again and will get delayed like a new notification
#[fullscreen_delay_everything]
# fullscreen = delay
#[fullscreen_show_critical]
# msg_urgency = critical
# fullscreen = show
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# skip_display = true
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[skip-display]
# # This notification will not be displayed, but will be included in the history
# summary = "foobar"
# skip_display = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
#[stack-volumes]
# appname = "some_volume_notifiers"
# set_stack_tag = "volume"
#
# vim: ft=cfg
# -*- conf -*-
[main]
font=JetBrains Mono:size=15
term=xterm
dpi-aware=no
# adapted from https://github.com/imcarvalho/neonpurple
# but tweaked background and regular0
[colors]
background=10022e
foreground=e5e5e6
regular0=392B57
regular1=cd0d76
regular2=09EAA5
regular3=FFFA69
regular4=05BEFF
regular5=FF00E0
regular6=9AA5ED
regular7=FFFFFF
bright0=A8FCFF
bright1=FF0EA5
bright2=00FFB7
bright3=FEF787
bright4=18CCFC
bright5=FF00F8
bright6=A6B5FF
bright7=FFFFFF
[Settings]
gtk-theme-name=Adwaita-dark
gtk-icon-theme-name=Papirus-Dark
gtk-font-name=Inter 11
gtk-cursor-theme-name=Adwaita
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull
# Enable hardware video decoding on MNT Reform imx8mq
#hwdec=auto
# Limit video resolution for content downloaded with youtube-dl/yt-dlp
ytdl-format=bestvideo[height<=?1080]+bestaudio/best
[Appearance]
color_scheme_path=/usr/share/qt5ct/colors/airy.conf
custom_palette=false
icon_theme=breeze-dark
standard_dialogs=default
style=Breeze
[Fonts]
fixed=@Variant(\0\0\0@\0\0\0\x18\0I\0o\0s\0\x65\0v\0k\0\x61\0 \0T\0\x65\0r\0m@*\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
general=@Variant(\0\0\0@\0\0\0\n\0I\0n\0t\0\x65\0r@*\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
[Interface]
activate_item_on_single_click=0
buttonbox_layout=2
cursor_flash_time=1200
dialog_buttons_have_icons=1
double_click_interval=400
gui_effects=@Invalid()
keyboard_scheme=3
menus_have_icons=true
show_shortcuts_in_context_menus=true
stylesheets=@Invalid()
toolbutton_style=4
underline_shortcut=2
wheel_scroll_lines=3
......@@ -13,21 +13,17 @@ set $left left
set $down down
set $up up
set $right right
# Your preferred terminal emulator
set $term xfce4-terminal
# Your preferred terminal emulator. You can change it by running:
# sudo update-alternatives --config x-terminal-emulator
set $term x-terminal-emulator
# Your preferred application launcher
# Note: it's recommended that you pass the final command to sway
#set $menu dmenu_path | dmenu | xargs swaymsg exec --
set $menu rofi -show drun -font "Inter Bold 24" -display-drun "" -theme mnt-reform | xargs swaymsg exec --
set $menu pkill -x wofi || wofi --show drun -p Search -a -i -I -W 66% -H 66% -s $HOME/.config/wofi.css
#xwayland disable
### Output configuration
#
# Default wallpaper (more resolutions are available in @datadir@/backgrounds/sway/)
#output * bg "#000000" fill
exec swaybg -c "#000000"
#
# Example configuration:
#
......@@ -35,14 +31,18 @@ exec swaybg -c "#000000"
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
# display config for MNT Pocket Reform
output DSI-1 transform 270
output DSI-1 scale 2
### Idle configuration
#
# Example configuration:
#
# exec swayidle -w \
# timeout 300 'swaylock -f -c 000000' \
# timeout 600 'swaymsg "output * dpms off"' \
# resume 'swaymsg "output * dpms on"' \
# timeout 600 'brightnessctl --save; brightnessctl set 0' \
# resume 'brightnessctl --restore' \
# before-sleep 'swaylock -f -c 000000'
#
# This will lock your screen after 300 seconds of inactivity, then turn off
......@@ -64,13 +64,7 @@ exec swaybg -c "#000000"
# Read `man 5 sway-input` for more information about this section.
#
# change to de if you have a QWERTZ keyboard, for example
input * {
xkb_layout us
xkb_options compose:menu,level3:ralt_switch
}
default_border pixel 10
#default_border pixel 10
hide_edge_borders both
### Key bindings
......@@ -81,11 +75,12 @@ hide_edge_borders both
bindsym $mod+Return exec $term
bindsym $mod+Shift+s exec grim ~/Pictures/$(date +'screenshot-%Y-%m-%d-%H-%M-%S').png
bindsym $mod+Shift+x exec grim -g "$(slurp)" ~/Pictures/$(date +'screenshot-%Y-%m-%d-%H-%M-%S').png
bindsym $mod+Shift+v exec reform-pavucontrol.sh
bindsym $mod+Shift+v exec pavucontrol
bindsym $mod+Shift+l exec swaylock
# Kill focused window
bindsym $mod+Escape kill
bindsym --border button3 kill
# Start your launcher
bindsym $mod+d exec $menu
......@@ -129,8 +124,10 @@ hide_edge_borders both
#bindsym $mod+Shift+Up move up
#bindsym $mod+Shift+Right move right
bindsym $mod+F1 exec brightnessctl s 1-
bindsym $mod+F2 exec brightnessctl s +1
bindsym $mod+F1 exec brightnessctl s 10%-
bindsym $mod+F2 exec brightnessctl s +10%
bindsym XF86MonBrightnessDown exec brightnessctl s 10%-
bindsym XF86MonBrightnessUp exec brightnessctl s +10%
bindsym $mod+F3 exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym $mod+F4 exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym $mod+F5 exec pactl set-sink-mute @DEFAULT_SINK@ toggle
......@@ -224,15 +221,15 @@ mode "resize" {
bindsym $mod+r mode "resize"
# class border backgr. text indicator child_border
client.focused #000000 #ffffff #000000 #000000 #000000
client.focused_inactive #000000 #eeeeee #000000 #000000 #000000
client.unfocused #000000 #222222 #888888 #000000 #000000
client.focused #000000 #080808 #ffffff #000000 #000000
client.focused_inactive #000000 #000000 #eeeeee #000000 #000000
client.unfocused #000000 #000000 #888888 #000000 #000000
client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
font pango: Inter, Icons Bold 14
font pango: Inter, Icons Medium 11
#
# Status Bar:
......@@ -257,30 +254,35 @@ font pango: Inter, Icons Bold 14
#}
for_window [app_id="pavucontrol"] floating enable
for_window [app_id="connman-gtk"] floating enable
for_window [app_id="xfce4-appfinder"] floating enable
include @sysconfdir@/sway/config.d/*
# fix up to 20 second startup time of GTK applications
exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
exec hash dbus-update-activation-environment 2>/dev/null && \
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP=sway
# fix KDE cursor appearing in sway
seat seat0 xcursor_theme Adwaita 24
# waybar
exec /usr/local/bin/waybar
exec waybar
# autostart gnome settings daemon
# start gnome xsettings daemon
exec /usr/libexec/gsd-xsettings
# start a policykit agent
exec lxpolkit
exec gsettings set org.gnome.desktop.interface font-name 'Inter 14'
exec gsettings set org.gnome.desktop.interface monospace-font-name 'Iosevka Term Light 14'
exec gsettings set org.gnome.desktop.interface gtk-theme 'Arc-Dark'
# start network manager applet
exec nm-applet --indicator
# start bluetooth applet
exec blueman-applet
# start volume applet
exec pasystray
# start MNT Reform tray menu
exec /usr/libexec/reform-tools/reform-tray.py
exec gsettings set org.gnome.gedit.preferences.editor scheme 'cobalt'
# start wallpaper script
exec /usr/libexec/reform-tools/reform-wallpaper.py
# autostart a terminal
exec xfce4-terminal -e 'bash -c "reform-desktop-help; bash"'
include config.d/*
# change to de if you have a QWERTZ keyboard, for example
input * {
xkb_layout us
xkb_options compose:menu,lv3:ralt_switch
}
[Unit]
Description=Highly customizable Wayland bar for Sway and Wlroots based compositors.
Documentation=https://github.com/Alexays/Waybar/wiki/
PartOf=graphical-session.target
After=graphical-session.target
Requisite=graphical-session.target
[Service]
# Prevent waybar from starting in KDE
ExecStart=/bin/true
[Install]
WantedBy=graphical-session.target
{
// "layer": "top", // Waybar at top layer
// "position": "bottom", // Waybar position (top|bottom|left|right)
"height": 32, // Waybar height (to be removed for auto height)
"modules-left": ["custom/run", "wlr/taskbar", "sway/workspaces"],
"modules-center": [],
"modules-right": ["tray", "battery", "clock"],
"custom/run": {
"format": "M",
"exec": "printf 'M\nApplications\n'",
"interval": 3600,
"on-click": "pkill -x wofi || wofi --show drun -p Search -a -i -I -W 66% -H 66% -s $HOME/.config/wofi.css"
},
"sway/window": {
},
"wlr/taskbar": {
"format": "{icon}",
"icon-theme": "Papirus",
"icon-size": 22,
"on-click": "minimize-raise",
},
"tray": {
"icon-theme": "Papirus",
"icon-size": 22,
"spacing": 16
},
"clock": {
"tooltip-format": "{:%Y %B}",
"format-alt": "{:%Y-%m-%d}",
"tooltip": false
},
"pulseaudio": {
// "scroll-step": 1,
"format": "Vol {volume}%",
"format-bluetooth": " {volume}%",
"format-bluetooth-muted": " Silent",
"format-muted": "Silent",
"format-source": "Vol {volume}%",
"format-source-muted": "Silent",
"on-click": "pavucontrol"
},
"battery": {
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": ["", "", "", "", ""]
},
}