Compare commits
36 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
32d27f88e2 |
||
|
|
d197b89723 |
||
|
|
6faab374ee |
||
|
|
6a81162a2b |
||
|
|
2b854c5085 |
||
|
|
86f0264757 |
||
|
|
62c55d56b5 |
||
|
|
ddf31e44d7 | ||
|
|
d414e06ed4 |
||
|
|
e9d3cf37bb |
||
|
|
e980f01b61 |
||
|
|
5b41228334 |
||
|
|
02e8e661e4 |
||
|
|
146cd500db |
||
|
|
a1185ef887 |
||
|
|
2382f71767 |
||
|
|
314e5108b7 |
||
|
|
6948ef6f3c |
||
|
|
0f9e12422b |
||
|
|
0d152ac355 | ||
|
|
cd158ff63d | ||
|
|
463bfb8291 |
||
|
|
80bded49a4 |
||
|
|
2ae27356aa |
||
|
|
967a54323c |
||
|
|
bcff48b7ae |
||
|
|
2beafa9c25 |
||
|
|
a3ccaebd56 |
||
|
|
d2212f6672 |
||
|
|
accad0c34b |
||
|
|
8e37d24784 |
||
|
|
66f553d999 |
||
|
|
239dd22eea |
||
|
|
0e4e76fee0 |
||
|
|
942a3881dd | ||
|
|
c5d0b5cbb1 |
35 changed files with 1051 additions and 254 deletions
24
Makefile
24
Makefile
|
|
@ -5,16 +5,19 @@ SYSCONFDIR ?= /etc
|
|||
BINDIR ?= $(PREFIX)/bin
|
||||
DATADIR ?= $(PREFIX)/share
|
||||
LIBEXECDIR ?= $(PREFIX)/libexec
|
||||
BACKGROUND ?= $(DATADIR)/backgrounds/default.png
|
||||
|
||||
.PHONY: build clean install check requires
|
||||
.DEFAULT: build
|
||||
|
||||
GENERATED := $(patsubst %.in,%,$(wildcard sway/*.in sway/*/*.in ))
|
||||
VARIABLES := PREFIX SYSCONFDIR DATADIR LIBEXECDIR
|
||||
TEMPLATES := sway/*.in sway/*/*.in swaylock/*.in sddm/03-sway-fedora/theme.conf.in
|
||||
GENERATED := $(patsubst %.in,%,$(wildcard $(TEMPLATES)))
|
||||
VARIABLES := PREFIX SYSCONFDIR DATADIR LIBEXECDIR BACKGROUND
|
||||
|
||||
sway/%: sway/%.in
|
||||
sed "$(foreach var,$(VARIABLES),s^@$(var)@^$($(var))^i;)" $^ > $@
|
||||
sed '$(foreach var,$(VARIABLES),s^$$$(var)\b^$($(var))^i;)' $^ > $@
|
||||
%: %.in
|
||||
sed -e "$(foreach var,$(VARIABLES),s^@$(var)@^$($(var))^i;)" \
|
||||
-e '$(foreach var,$(VARIABLES),s^$$$(var)\b^$($(var))^i;)' \
|
||||
$^ > $@
|
||||
|
||||
build: $(GENERATED)
|
||||
|
||||
|
|
@ -22,10 +25,14 @@ clean:
|
|||
rm -f $(GENERATED)
|
||||
rm -rf test/
|
||||
|
||||
install-initialsetup:
|
||||
install -D -m 0755 -pv -t $(DESTDIR)$(LIBEXECDIR)/initial-setup initial-setup/run-gui-backend
|
||||
|
||||
install-sddm:
|
||||
install -D -m 0755 -pv -t $(DESTDIR)$(LIBEXECDIR) sddm/sddm-compositor-sway
|
||||
install -D -m 0644 -pv -t $(DESTDIR)$(SYSCONFDIR)/sway sddm/sddm-greeter.config
|
||||
install -D -m 0644 -pv -t $(DESTDIR)$(PREFIX)/lib/sddm/sddm.conf.d sddm/wayland-sway.conf
|
||||
install -D -m 0644 -pv -t $(DESTDIR)$(DATADIR)/sddm/themes/03-sway-fedora sddm/03-sway-fedora/*
|
||||
|
||||
install-sway: build
|
||||
install -D -m 0644 -pv -t $(DESTDIR)$(SYSCONFDIR)/sway sway/config
|
||||
|
|
@ -34,12 +41,17 @@ install-sway: build
|
|||
install -D -m 0644 -pv -t $(DESTDIR)$(DATADIR)/wayland-sessions sway/sway.desktop
|
||||
install -D -m 0644 -pv -t $(DESTDIR)$(DATADIR)/sway/config.d sway/config.d/*.conf
|
||||
install -D -m 0644 -pv -t $(DESTDIR)$(DATADIR)/sway/config.live.d sway/config.live.d/*.conf
|
||||
install -D -m 0644 -pv -t $(DESTDIR)$(DATADIR)/sway/live sway/live/*
|
||||
install -D -m 0755 -pv -t $(DESTDIR)$(LIBEXECDIR)/sway scripts/sway/*
|
||||
|
||||
install-swaylock:
|
||||
install -D -m 0644 -pv -t $(DESTDIR)$(SYSCONFDIR)/swaylock swaylock/config
|
||||
|
||||
.PHONY: install-sddm install-sway install-swaylock
|
||||
.PHONY: install-initialsetup install-sddm install-sway install-swaylock
|
||||
|
||||
ifeq ($(WITH_INITIALSETUP),yes)
|
||||
install: install-initialsetup
|
||||
endif
|
||||
|
||||
ifeq ($(WITH_SDDM),yes)
|
||||
install: install-sddm
|
||||
|
|
|
|||
|
|
@ -1,159 +0,0 @@
|
|||
= Configuration guide
|
||||
Fedora Sway SIG <sway@lists.fedoraproject.org>
|
||||
:source-highlighter: rouge
|
||||
:sway-package: https://packages.fedoraproject.org/pkgs/sway/
|
||||
:config-package: https://packages.fedoraproject.org/pkgs/sway-config-fedora/
|
||||
:toc:
|
||||
|
||||
An overview of the custom Sway configuration shipped in Fedora.
|
||||
|
||||
== Configuration profiles
|
||||
|
||||
The Sway package in Fedora defers most of the dependencies and the config file
|
||||
ownership to the `+sway-config-*+` subpackages.
|
||||
This allows us to ship different configuration profiles with different sets of
|
||||
runtime dependencies.
|
||||
This also allows anyone to create a package with their preferred system-wide
|
||||
configuration defaults and use it instead of the default Fedora profiles.
|
||||
|
||||
The following profiles are currently defined in the {sway-package}[`sway`]
|
||||
source package:
|
||||
|
||||
* **sway-config-minimal** - minimal configuration with any optional
|
||||
dependencies omitted.
|
||||
Suitable for headless servers, containers and buildroot usage.
|
||||
Also suitable for building a very minimal installation from scratch.
|
||||
|
||||
* **sway-config-upstream** - the upstream configuration.
|
||||
The only permitted modifications to the config file are adjustments for
|
||||
dependencies currently unavailable in Fedora.
|
||||
|
||||
The profiles defined in the {config-package}[`sway-config-fedora`] source
|
||||
package:
|
||||
|
||||
* **sway-config-fedora** - customized configuration for Fedora Sway Spin.
|
||||
|
||||
The config packages are mutually exclusive, and one of these will always be
|
||||
installed.
|
||||
The one selected by default is **sway-config-upstream** and the one that will
|
||||
be installed with Sway Spin/Sway Desktop Environment group is
|
||||
**sway-config-fedora**.
|
||||
|
||||
At any moment, you can switch the installed configuration with one of the
|
||||
following commands:
|
||||
|
||||
[source,shell]
|
||||
----
|
||||
dnf swap sway-config sway-config-upstream
|
||||
dnf swap sway-config sway-config-minimal
|
||||
dnf swap sway-config sway-config-fedora
|
||||
----
|
||||
|
||||
The command will replace the default `+/etc/sway/config+` file and apply the new
|
||||
set of dependencies.
|
||||
Packages unused by the new profile will be autoremoved.
|
||||
|
||||
NOTE: The command will be different for OSTree-based installations, such as Sericea.
|
||||
|
||||
== Fedora configuration
|
||||
|
||||
**sway-config-fedora** contains the default configuration for Fedora Sway Spin.
|
||||
It is built on top of the default Sway config with a few quality of life
|
||||
improvements and opinionated changes.
|
||||
|
||||
Most of the additions are implemented as a standalone configuration snippets
|
||||
stored at `+/usr/share/sway/config.d/+` and automatically loaded from the main
|
||||
configuration file.
|
||||
|
||||
=== Sections
|
||||
|
||||
The configuration snippets we provide are grouped into the following sections:
|
||||
|
||||
50-59 (`+50-rules-*.conf+`)::
|
||||
Window rules (`+for_window+`, `+assign+` and related configuration).
|
||||
|
||||
60-69 (`+60-bindings-*.conf+`, `+65-mode-*.conf+`)::
|
||||
Key bindings and binding modes
|
||||
|
||||
90-94 (`+90-*.conf+`)::
|
||||
System applications: bars, idle daemons and other components.
|
||||
|
||||
95-99 (`+95-*.conf+`)::
|
||||
Autostart applications
|
||||
|
||||
=== Overrides and load precedence
|
||||
|
||||
Fedora configuration uses the implementation details of the Sway config loading
|
||||
(https://man7.org/linux/man-pages/man3/wordexp.3p.html[`wordexp(3p)`]) to
|
||||
implement a configuration overrides mechanism for the snippets.
|
||||
|
||||
The priority increases from the packaged configuration to a system-wide
|
||||
configuration and an user configuration directories:
|
||||
|
||||
* `+/usr/share/sway/config.d/*.conf+`
|
||||
* `+/etc/sway/config.d/*.conf+`
|
||||
* `+${XDG_CONFIG_HOME:-$HOME/.config}/sway/config.d/*.conf+`
|
||||
(defaults to `+~/.config/sway/config.d/*.conf+`)
|
||||
|
||||
The includes are also sorted by a file name across all the directories.
|
||||
|
||||
By creating a file with the same name in `+/etc/sway/config.d+` you'll force
|
||||
Sway to ignore the corresponding snippet from `+/usr+` and load the one from
|
||||
`+/etc+`.
|
||||
Similarly, the configuration snippet from a home directory wins over the earlier
|
||||
locations.
|
||||
|
||||
To put it even more simple: imagine the distribution configuration file
|
||||
`+/usr/share/sway/config.d/90-bar.conf+` that sets waybar as a status bar.
|
||||
If you want to prevent waybar from starting, you could create an empty file
|
||||
in your home directory:
|
||||
|
||||
[source,shell]
|
||||
----
|
||||
mkdir -p ~/.config/sway/config.d
|
||||
touch ~/.config/sway/config.d/90-bar.conf
|
||||
----
|
||||
|
||||
If you want to set another bar, you just need to add some contents to the file.
|
||||
For example, copy the default bar section from the upstream Sway config:
|
||||
|
||||
[source,shell]
|
||||
----
|
||||
mkdir -p ~/.config/sway/config.d
|
||||
cat >~/.config/sway/config.d/90-bar.conf <<EOF
|
||||
# Read `man 5 sway-bar` for more information about this section.
|
||||
bar {
|
||||
position top
|
||||
|
||||
# When the status_command prints a new line to stdout, swaybar updates.
|
||||
# The default just shows the current date and time.
|
||||
status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
|
||||
|
||||
colors {
|
||||
statusline #ffffff
|
||||
background #323232
|
||||
inactive_workspace #32323200 #32323200 #5c5c5c
|
||||
}
|
||||
}
|
||||
EOF
|
||||
----
|
||||
|
||||
=== Debugging the configuration
|
||||
|
||||
Sometimes it's useful to know how the configuration loaded by Sway actually looks.
|
||||
There are two ways to debug that:
|
||||
|
||||
* Run sway config validation:
|
||||
[source,shell]
|
||||
----
|
||||
sway --debug --validate [--config /path/to/config]
|
||||
----
|
||||
|
||||
* Check intermediate files generated by the layered include script
|
||||
|
||||
[source,shell]
|
||||
----
|
||||
less $XDG_RUNTIME_DIR/sway/layered-include-*.conf
|
||||
----
|
||||
|
||||
TIP: The command referenced may display more than one file. Use `+:n+`/`+:p+` to switch between files in `+less+`
|
||||
62
initial-setup/run-gui-backend
Executable file
62
initial-setup/run-gui-backend
Executable file
|
|
@ -0,0 +1,62 @@
|
|||
#!/bin/sh
|
||||
|
||||
## Runs the GUI program from $@ in Sway
|
||||
|
||||
CONFIG_FILE=$(mktemp --suffix="-wl-sway-firstboot-config")
|
||||
RUN_SCRIPT=$(mktemp --suffix="-wl-sway-firstboot-run")
|
||||
EXIT_CODE_SAVE=$(mktemp --suffix="-wl-sway-firstboot-exit")
|
||||
|
||||
cat > ${CONFIG_FILE} << EOF
|
||||
# Sway configuration for Anaconda initial setup.
|
||||
xwayland force
|
||||
swaybg_command -
|
||||
|
||||
bindsym Mod4+shift+e exec swaynag \
|
||||
-t warning \
|
||||
-m 'What do you want to do?' \
|
||||
-b 'Poweroff' 'systemctl poweroff' \
|
||||
-b 'Reboot' 'systemctl reboot'
|
||||
|
||||
# Disable displays on idle
|
||||
exec command -v swayidle >/dev/null && swayidle -w \
|
||||
timeout 300 'swaymsg "output * power off"' \
|
||||
resume 'swaymsg "output * power on"'
|
||||
|
||||
# Apply system keyboard configuration
|
||||
exec /usr/libexec/sway-systemd/locale1-xkb-config
|
||||
|
||||
# Show initial-setup-gui as fullscreen
|
||||
for_window [class="[Ii]nitial-setup-graphical"] fullscreen enable
|
||||
exec ${RUN_SCRIPT}
|
||||
EOF
|
||||
|
||||
cat > ${RUN_SCRIPT} << EOF
|
||||
#!/bin/sh
|
||||
$@
|
||||
echo $? > ${EXIT_CODE_SAVE}
|
||||
sway exit
|
||||
EOF
|
||||
|
||||
chmod +x ${RUN_SCRIPT}
|
||||
|
||||
|
||||
# Set some compatibility variables if we're in a VM
|
||||
case $(systemd-detect-virt --vm) in
|
||||
"none"|"")
|
||||
;;
|
||||
"kvm")
|
||||
# WLR_NO_HARDWARE_CURSORS=1 is not needed with legacy DRM interface
|
||||
export WLR_RENDERER=pixman
|
||||
export WLR_DRM_NO_ATOMIC=1
|
||||
;;
|
||||
*)
|
||||
# https://github.com/swaywm/sway/issues/6581
|
||||
export WLR_NO_HARDWARE_CURSORS=1
|
||||
;;
|
||||
esac
|
||||
|
||||
sway --config=${CONFIG_FILE}
|
||||
exit_code=$(< ${EXIT_CODE_SAVE})
|
||||
|
||||
rm ${CONFIG_FILE} ${RUN_SCRIPT} ${EXIT_CODE_SAVE}
|
||||
exit $exit_code
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
if ! command -v notify-send >/dev/null || ! command -v pactl > /dev/null; then
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
# pactl output depends on the current locale
|
||||
export LANG=C.UTF-8 LC_ALL=C.UTF-8
|
||||
|
||||
SINK=${1:-@DEFAULT_SINK@}
|
||||
VOLUME=$(pactl get-sink-volume "$SINK")
|
||||
# get first percent value
|
||||
VOLUME=${VOLUME%%%*}
|
||||
VOLUME=${VOLUME##* }
|
||||
|
||||
TEXT="Volume: ${VOLUME}%"
|
||||
case $(pactl get-sink-mute "$SINK") in
|
||||
*yes)
|
||||
TEXT="Volume: muted"
|
||||
VOLUME=0
|
||||
;;
|
||||
esac
|
||||
|
||||
notify-send \
|
||||
--app-name sway \
|
||||
--expire-time 800 \
|
||||
--hint string:x-canonical-private-synchronous:volume \
|
||||
--hint "int:value:$VOLUME" \
|
||||
--transient \
|
||||
"${TEXT}"
|
||||
89
scripts/sway/volume-helper
Executable file
89
scripts/sway/volume-helper
Executable file
|
|
@ -0,0 +1,89 @@
|
|||
#!/bin/sh
|
||||
|
||||
if ! command -v pactl >/dev/null; then
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
# pactl output depends on the current locale
|
||||
export LANG=C.UTF-8 LC_ALL=C.UTF-8
|
||||
|
||||
DEFAULT_STEP=5
|
||||
LIMIT=${LIMIT:-100}
|
||||
SINK="@DEFAULT_SINK@"
|
||||
|
||||
clamp() {
|
||||
if [ "$1" -lt 0 ]; then
|
||||
echo "0"
|
||||
elif [ "$1" -gt "$LIMIT" ]; then
|
||||
echo "$LIMIT"
|
||||
else
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
get_sink_volume() { # sink
|
||||
ret=$(pactl get-sink-volume "$1")
|
||||
# get first percent value
|
||||
ret=${ret%%%*}
|
||||
ret=${ret##* }
|
||||
echo "$ret"
|
||||
unset ret
|
||||
}
|
||||
|
||||
CHANGE=0
|
||||
VOLUME=-1
|
||||
|
||||
while true; do
|
||||
case $1 in
|
||||
--sink)
|
||||
SINK=${2:-$SINK}
|
||||
shift;;
|
||||
-l|--limit)
|
||||
LIMIT=$((${2:-$LIMIT}))
|
||||
shift;;
|
||||
--set-volume)
|
||||
VOLUME=$(($2))
|
||||
shift;;
|
||||
-i|--increase)
|
||||
CHANGE=$((${2:-$DEFAULT_STEP}))
|
||||
shift;;
|
||||
-d|--decrease)
|
||||
CHANGE=$((-${2:-$DEFAULT_STEP}))
|
||||
shift;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "$CHANGE" -ne 0 ]; then
|
||||
VOLUME=$(get_sink_volume "$SINK")
|
||||
VOLUME=$(( VOLUME + CHANGE ))
|
||||
pactl set-sink-volume "$SINK" "$(clamp "$VOLUME")%"
|
||||
elif [ "$VOLUME" -ge 0 ]; then
|
||||
pactl set-sink-volume "$SINK" "$(clamp "$VOLUME")%"
|
||||
fi
|
||||
|
||||
# Display desktop notification
|
||||
|
||||
if ! command -v notify-send >/dev/null; then
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
VOLUME=$(get_sink_volume "$SINK")
|
||||
TEXT="Volume: ${VOLUME}%"
|
||||
case $(pactl get-sink-mute "$SINK") in
|
||||
*yes)
|
||||
TEXT="Volume: muted"
|
||||
VOLUME=0
|
||||
;;
|
||||
esac
|
||||
|
||||
notify-send \
|
||||
--app-name sway \
|
||||
--expire-time 800 \
|
||||
--hint string:x-canonical-private-synchronous:volume \
|
||||
--hint "int:value:$VOLUME" \
|
||||
--transient \
|
||||
"${TEXT}"
|
||||
BIN
sddm/03-sway-fedora/03-sway-fedora.jpg
Normal file
BIN
sddm/03-sway-fedora/03-sway-fedora.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 431 KiB |
337
sddm/03-sway-fedora/LICENSE
Normal file
337
sddm/03-sway-fedora/LICENSE
Normal file
|
|
@ -0,0 +1,337 @@
|
|||
Creative Commons Legal Code
|
||||
|
||||
Attribution-ShareAlike 3.0 Unported
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL
|
||||
SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT
|
||||
RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS"
|
||||
BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION
|
||||
PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
|
||||
|
||||
License
|
||||
|
||||
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
|
||||
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
|
||||
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
|
||||
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||
|
||||
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE
|
||||
BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE
|
||||
CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE
|
||||
IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
|
||||
|
||||
1. Definitions
|
||||
|
||||
a. "Adaptation" means a work based upon the Work, or upon the Work and other
|
||||
pre-existing works, such as a translation, adaptation, derivative work,
|
||||
arrangement of music or other alterations of a literary or artistic work,
|
||||
or phonogram or performance and includes cinematographic adaptations or any
|
||||
other form in which the Work may be recast, transformed, or adapted
|
||||
including in any form recognizably derived from the original, except that a
|
||||
work that constitutes a Collection will not be considered an Adaptation for
|
||||
the purpose of this License. For the avoidance of doubt, where the Work is
|
||||
a musical work, performance or phonogram, the synchronization of the Work
|
||||
in timed-relation with a moving image ("synching") will be considered an
|
||||
Adaptation for the purpose of this License.
|
||||
b. "Collection" means a collection of literary or artistic works, such as
|
||||
encyclopedias and anthologies, or performances, phonograms or broadcasts,
|
||||
or other works or subject matter other than works listed in Section 1(f)
|
||||
below, which, by reason of the selection and arrangement of their contents,
|
||||
constitute intellectual creations, in which the Work is included in its
|
||||
entirety in unmodified form along with one or more other contributions,
|
||||
each constituting separate and independent works in themselves, which
|
||||
together are assembled into a collective whole. A work that constitutes a
|
||||
Collection will not be considered an Adaptation (as defined below) for the
|
||||
purposes of this License.
|
||||
c. "Creative Commons Compatible License" means a license that is listed at
|
||||
http://creativecommons.org/compatiblelicenses that has been approved by
|
||||
Creative Commons as being essentially equivalent to this License,
|
||||
including, at a minimum, because that license: (i) contains terms that have
|
||||
the same purpose, meaning and effect as the License Elements of this
|
||||
License; and, (ii) explicitly permits the relicensing of adaptations of
|
||||
works made available under that license under this License or a Creative
|
||||
Commons jurisdiction license with the same License Elements as this
|
||||
License.
|
||||
d. "Distribute" means to make available to the public the original and copies
|
||||
of the Work or Adaptation, as appropriate, through sale or other transfer
|
||||
of ownership.
|
||||
e. "License Elements" means the following high-level license attributes as
|
||||
selected by Licensor and indicated in the title of this License:
|
||||
Attribution, ShareAlike.
|
||||
f. "Licensor" means the individual, individuals, entity or entities that offer
|
||||
(s) the Work under the terms of this License.
|
||||
g. "Original Author" means, in the case of a literary or artistic work, the
|
||||
individual, individuals, entity or entities who created the Work or if no
|
||||
individual or entity can be identified, the publisher; and in addition (i)
|
||||
in the case of a performance the actors, singers, musicians, dancers, and
|
||||
other persons who act, sing, deliver, declaim, play in, interpret or
|
||||
otherwise perform literary or artistic works or expressions of folklore;
|
||||
(ii) in the case of a phonogram the producer being the person or legal
|
||||
entity who first fixes the sounds of a performance or other sounds; and,
|
||||
(iii) in the case of broadcasts, the organization that transmits the
|
||||
broadcast.
|
||||
h. "Work" means the literary and/or artistic work offered under the terms of
|
||||
this License including without limitation any production in the literary,
|
||||
scientific and artistic domain, whatever may be the mode or form of its
|
||||
expression including digital form, such as a book, pamphlet and other
|
||||
writing; a lecture, address, sermon or other work of the same nature; a
|
||||
dramatic or dramatico-musical work; a choreographic work or entertainment
|
||||
in dumb show; a musical composition with or without words; a
|
||||
cinematographic work to which are assimilated works expressed by a process
|
||||
analogous to cinematography; a work of drawing, painting, architecture,
|
||||
sculpture, engraving or lithography; a photographic work to which are
|
||||
assimilated works expressed by a process analogous to photography; a work
|
||||
of applied art; an illustration, map, plan, sketch or three-dimensional
|
||||
work relative to geography, topography, architecture or science; a
|
||||
performance; a broadcast; a phonogram; a compilation of data to the extent
|
||||
it is protected as a copyrightable work; or a work performed by a variety
|
||||
or circus performer to the extent it is not otherwise considered a literary
|
||||
or artistic work.
|
||||
i. "You" means an individual or entity exercising rights under this License
|
||||
who has not previously violated the terms of this License with respect to
|
||||
the Work, or who has received express permission from the Licensor to
|
||||
exercise rights under this License despite a previous violation.
|
||||
j. "Publicly Perform" means to perform public recitations of the Work and to
|
||||
communicate to the public those public recitations, by any means or
|
||||
process, including by wire or wireless means or public digital
|
||||
performances; to make available to the public Works in such a way that
|
||||
members of the public may access these Works from a place and at a place
|
||||
individually chosen by them; to perform the Work to the public by any means
|
||||
or process and the communication to the public of the performances of the
|
||||
Work, including by public digital performance; to broadcast and rebroadcast
|
||||
the Work by any means including signs, sounds or images.
|
||||
k. "Reproduce" means to make copies of the Work by any means including without
|
||||
limitation by sound or visual recordings and the right of fixation and
|
||||
reproducing fixations of the Work, including storage of a protected
|
||||
performance or phonogram in digital form or other electronic medium.
|
||||
|
||||
2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit,
|
||||
or restrict any uses free from copyright or rights arising from limitations or
|
||||
exceptions that are provided for in connection with the copyright protection
|
||||
under copyright law or other applicable laws.
|
||||
|
||||
3. License Grant. Subject to the terms and conditions of this License, Licensor
|
||||
hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the
|
||||
duration of the applicable copyright) license to exercise the rights in the
|
||||
Work as stated below:
|
||||
|
||||
a. to Reproduce the Work, to incorporate the Work into one or more
|
||||
Collections, and to Reproduce the Work as incorporated in the Collections;
|
||||
b. to create and Reproduce Adaptations provided that any such Adaptation,
|
||||
including any translation in any medium, takes reasonable steps to clearly
|
||||
label, demarcate or otherwise identify that changes were made to the
|
||||
original Work. For example, a translation could be marked "The original
|
||||
work was translated from English to Spanish," or a modification could
|
||||
indicate "The original work has been modified.";
|
||||
c. to Distribute and Publicly Perform the Work including as incorporated in
|
||||
Collections; and,
|
||||
d. to Distribute and Publicly Perform Adaptations.
|
||||
e. For the avoidance of doubt:
|
||||
|
||||
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
|
||||
which the right to collect royalties through any statutory or
|
||||
compulsory licensing scheme cannot be waived, the Licensor reserves the
|
||||
exclusive right to collect such royalties for any exercise by You of
|
||||
the rights granted under this License;
|
||||
ii. Waivable Compulsory License Schemes. In those jurisdictions in which
|
||||
the right to collect royalties through any statutory or compulsory
|
||||
licensing scheme can be waived, the Licensor waives the exclusive right
|
||||
to collect such royalties for any exercise by You of the rights granted
|
||||
under this License; and,
|
||||
iii. Voluntary License Schemes. The Licensor waives the right to collect
|
||||
royalties, whether individually or, in the event that the Licensor is a
|
||||
member of a collecting society that administers voluntary licensing
|
||||
schemes, via that society, from any exercise by You of the rights
|
||||
granted under this License.
|
||||
|
||||
The above rights may be exercised in all media and formats whether now known or
|
||||
hereafter devised. The above rights include the right to make such
|
||||
modifications as are technically necessary to exercise the rights in other
|
||||
media and formats. Subject to Section 8(f), all rights not expressly granted by
|
||||
Licensor are hereby reserved.
|
||||
|
||||
4. Restrictions. The license granted in Section 3 above is expressly made
|
||||
subject to and limited by the following restrictions:
|
||||
|
||||
a. You may Distribute or Publicly Perform the Work only under the terms of
|
||||
this License. You must include a copy of, or the Uniform Resource
|
||||
Identifier (URI) for, this License with every copy of the Work You
|
||||
Distribute or Publicly Perform. You may not offer or impose any terms on
|
||||
the Work that restrict the terms of this License or the ability of the
|
||||
recipient of the Work to exercise the rights granted to that recipient
|
||||
under the terms of the License. You may not sublicense the Work. You must
|
||||
keep intact all notices that refer to this License and to the disclaimer of
|
||||
warranties with every copy of the Work You Distribute or Publicly Perform.
|
||||
When You Distribute or Publicly Perform the Work, You may not impose any
|
||||
effective technological measures on the Work that restrict the ability of a
|
||||
recipient of the Work from You to exercise the rights granted to that
|
||||
recipient under the terms of the License. This Section 4(a) applies to the
|
||||
Work as incorporated in a Collection, but this does not require the
|
||||
Collection apart from the Work itself to be made subject to the terms of
|
||||
this License. If You create a Collection, upon notice from any Licensor You
|
||||
must, to the extent practicable, remove from the Collection any credit as
|
||||
required by Section 4(c), as requested. If You create an Adaptation, upon
|
||||
notice from any Licensor You must, to the extent practicable, remove from
|
||||
the Adaptation any credit as required by Section 4(c), as requested.
|
||||
b. You may Distribute or Publicly Perform an Adaptation only under the terms
|
||||
of: (i) this License; (ii) a later version of this License with the same
|
||||
License Elements as this License; (iii) a Creative Commons jurisdiction
|
||||
license (either this or a later license version) that contains the same
|
||||
License Elements as this License (e.g., Attribution-ShareAlike 3.0 US));
|
||||
(iv) a Creative Commons Compatible License. If you license the Adaptation
|
||||
under one of the licenses mentioned in (iv), you must comply with the terms
|
||||
of that license. If you license the Adaptation under the terms of any of
|
||||
the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"),
|
||||
you must comply with the terms of the Applicable License generally and the
|
||||
following provisions: (I) You must include a copy of, or the URI for, the
|
||||
Applicable License with every copy of each Adaptation You Distribute or
|
||||
Publicly Perform; (II) You may not offer or impose any terms on the
|
||||
Adaptation that restrict the terms of the Applicable License or the ability
|
||||
of the recipient of the Adaptation to exercise the rights granted to that
|
||||
recipient under the terms of the Applicable License; (III) You must keep
|
||||
intact all notices that refer to the Applicable License and to the
|
||||
disclaimer of warranties with every copy of the Work as included in the
|
||||
Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or
|
||||
Publicly Perform the Adaptation, You may not impose any effective
|
||||
technological measures on the Adaptation that restrict the ability of a
|
||||
recipient of the Adaptation from You to exercise the rights granted to that
|
||||
recipient under the terms of the Applicable License. This Section 4(b)
|
||||
applies to the Adaptation as incorporated in a Collection, but this does
|
||||
not require the Collection apart from the Adaptation itself to be made
|
||||
subject to the terms of the Applicable License.
|
||||
c. If You Distribute, or Publicly Perform the Work or any Adaptations or
|
||||
Collections, You must, unless a request has been made pursuant to Section 4
|
||||
(a), keep intact all copyright notices for the Work and provide, reasonable
|
||||
to the medium or means You are utilizing: (i) the name of the Original
|
||||
Author (or pseudonym, if applicable) if supplied, and/or if the Original
|
||||
Author and/or Licensor designate another party or parties (e.g., a sponsor
|
||||
institute, publishing entity, journal) for attribution ("Attribution
|
||||
Parties") in Licensor's copyright notice, terms of service or by other
|
||||
reasonable means, the name of such party or parties; (ii) the title of the
|
||||
Work if supplied; (iii) to the extent reasonably practicable, the URI, if
|
||||
any, that Licensor specifies to be associated with the Work, unless such
|
||||
URI does not refer to the copyright notice or licensing information for the
|
||||
Work; and (iv) , consistent with Ssection 3(b), in the case of an
|
||||
Adaptation, a credit identifying the use of the Work in the Adaptation
|
||||
(e.g., "French translation of the Work by Original Author," or "Screenplay
|
||||
based on original Work by Original Author"). The credit required by this
|
||||
Section 4(c) may be implemented in any reasonable manner; provided,
|
||||
however, that in the case of a Adaptation or Collection, at a minimum such
|
||||
credit will appear, if a credit for all contributing authors of the
|
||||
Adaptation or Collection appears, then as part of these credits and in a
|
||||
manner at least as prominent as the credits for the other contributing
|
||||
authors. For the avoidance of doubt, You may only use the credit required
|
||||
by this Section for the purpose of attribution in the manner set out above
|
||||
and, by exercising Your rights under this License, You may not implicitly
|
||||
or explicitly assert or imply any connection with, sponsorship or
|
||||
endorsement by the Original Author, Licensor and/or Attribution Parties, as
|
||||
appropriate, of You or Your use of the Work, without the separate, express
|
||||
prior written permission of the Original Author, Licensor and/or
|
||||
Attribution Parties.
|
||||
d. Except as otherwise agreed in writing by the Licensor or as may be
|
||||
otherwise permitted by applicable law, if You Reproduce, Distribute or
|
||||
Publicly Perform the Work either by itself or as part of any Adaptations or
|
||||
Collections, You must not distort, mutilate, modify or take other
|
||||
derogatory action in relation to the Work which would be prejudicial to the
|
||||
Original Author's honor or reputation. Licensor agrees that in those
|
||||
jurisdictions (e.g. Japan), in which any exercise of the right granted in
|
||||
Section 3(b) of this License (the right to make Adaptations) would be
|
||||
deemed to be a distortion, mutilation, modification or other derogatory
|
||||
action prejudicial to the Original Author's honor and reputation, the
|
||||
Licensor will waive or not assert, as appropriate, this Section, to the
|
||||
fullest extent permitted by the applicable national law, to enable You to
|
||||
reasonably exercise Your right under Section 3(b) of this License (right to
|
||||
make Adaptations) but not otherwise.
|
||||
|
||||
5. Representations, Warranties and Disclaimer
|
||||
|
||||
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
|
||||
THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
|
||||
CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING,
|
||||
WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE.
|
||||
SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH
|
||||
EXCLUSION MAY NOT APPLY TO YOU.
|
||||
|
||||
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN
|
||||
NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS
|
||||
LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
7. Termination
|
||||
|
||||
a. This License and the rights granted hereunder will terminate automatically
|
||||
upon any breach by You of the terms of this License. Individuals or
|
||||
entities who have received Adaptations or Collections from You under this
|
||||
License, however, will not have their licenses terminated provided such
|
||||
individuals or entities remain in full compliance with those licenses.
|
||||
Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
|
||||
b. Subject to the above terms and conditions, the license granted here is
|
||||
perpetual (for the duration of the applicable copyright in the Work).
|
||||
Notwithstanding the above, Licensor reserves the right to release the Work
|
||||
under different license terms or to stop distributing the Work at any time;
|
||||
provided, however that any such election will not serve to withdraw this
|
||||
License (or any other license that has been, or is required to be, granted
|
||||
under the terms of this License), and this License will continue in full
|
||||
force and effect unless terminated as stated above.
|
||||
|
||||
8. Miscellaneous
|
||||
|
||||
a. Each time You Distribute or Publicly Perform the Work or a Collection, the
|
||||
Licensor offers to the recipient a license to the Work on the same terms
|
||||
and conditions as the license granted to You under this License.
|
||||
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers
|
||||
to the recipient a license to the original Work on the same terms and
|
||||
conditions as the license granted to You under this License.
|
||||
c. If any provision of this License is invalid or unenforceable under
|
||||
applicable law, it shall not affect the validity or enforceability of the
|
||||
remainder of the terms of this License, and without further action by the
|
||||
parties to this agreement, such provision shall be reformed to the minimum
|
||||
extent necessary to make such provision valid and enforceable.
|
||||
d. No term or provision of this License shall be deemed waived and no breach
|
||||
consented to unless such waiver or consent shall be in writing and signed
|
||||
by the party to be charged with such waiver or consent.
|
||||
e. This License constitutes the entire agreement between the parties with
|
||||
respect to the Work licensed here. There are no understandings, agreements
|
||||
or representations with respect to the Work not specified here. Licensor
|
||||
shall not be bound by any additional provisions that may appear in any
|
||||
communication from You. This License may not be modified without the mutual
|
||||
written agreement of the Licensor and You.
|
||||
f. The rights granted under, and the subject matter referenced, in this
|
||||
License were drafted utilizing the terminology of the Berne Convention for
|
||||
the Protection of Literary and Artistic Works (as amended on September 28,
|
||||
1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the
|
||||
WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright
|
||||
Convention (as revised on July 24, 1971). These rights and subject matter
|
||||
take effect in the relevant jurisdiction in which the License terms are
|
||||
sought to be enforced according to the corresponding provisions of the
|
||||
implementation of those treaty provisions in the applicable national law.
|
||||
If the standard suite of rights granted under applicable copyright law
|
||||
includes additional rights not granted under this License, such additional
|
||||
rights are deemed to be included in the License; this License is not
|
||||
intended to restrict the license of any rights under applicable law.
|
||||
|
||||
Creative Commons Notice
|
||||
|
||||
Creative Commons is not a party to this License, and makes no warranty
|
||||
whatsoever in connection with the Work. Creative Commons will not be liable
|
||||
to You or any party on any legal theory for any damages whatsoever,
|
||||
including without limitation any general, special, incidental or
|
||||
consequential damages arising in connection to this license.
|
||||
Notwithstanding the foregoing two (2) sentences, if Creative Commons has
|
||||
expressly identified itself as the Licensor hereunder, it shall have all
|
||||
rights and obligations of Licensor.
|
||||
|
||||
Except for the limited purpose of indicating to the public that the Work is
|
||||
licensed under the CCPL, Creative Commons does not authorize the use by
|
||||
either party of the trademark "Creative Commons" or any related trademark
|
||||
or logo of Creative Commons without the prior written consent of Creative
|
||||
Commons. Any permitted use will be in compliance with Creative Commons'
|
||||
then-current trademark usage guidelines, as may be published on its website
|
||||
or otherwise made available upon request from time to time. For the
|
||||
avoidance of doubt, this trademark restriction does not form part of the
|
||||
License.
|
||||
|
||||
Creative Commons may be contacted at https://creativecommons.org/.
|
||||
284
sddm/03-sway-fedora/Main.qml
Normal file
284
sddm/03-sway-fedora/Main.qml
Normal file
|
|
@ -0,0 +1,284 @@
|
|||
/***************************************************************************
|
||||
* Copyright (c) 2013 Abdurrahman AVCI <abdurrahmanavci@gmail.com>
|
||||
* Copyright (c) 2024 Aleksei Bavshin <alebastr@fedoraproject.org>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without restriction,
|
||||
* including without limitation the rights to use, copy, modify, merge,
|
||||
* publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
* and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||
* OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
import QtQuick 2.0
|
||||
import SddmComponents 2.0
|
||||
|
||||
Rectangle {
|
||||
id: container
|
||||
width: 640
|
||||
height: 480
|
||||
|
||||
LayoutMirroring.enabled: Qt.locale().textDirection == Qt.RightToLeft
|
||||
LayoutMirroring.childrenInherit: true
|
||||
|
||||
property int sessionIndex: session.index
|
||||
|
||||
TextConstants { id: textConstants }
|
||||
|
||||
Connections {
|
||||
target: sddm
|
||||
|
||||
function onLoginSucceeded() {
|
||||
errorMessage.color = "steelblue"
|
||||
errorMessage.text = textConstants.loginSucceeded
|
||||
}
|
||||
function onLoginFailed() {
|
||||
password.text = ""
|
||||
errorMessage.color = "red"
|
||||
errorMessage.text = textConstants.loginFailed
|
||||
}
|
||||
function onInformationMessage(message) {
|
||||
errorMessage.color = "red"
|
||||
errorMessage.text = message
|
||||
}
|
||||
}
|
||||
|
||||
Background {
|
||||
anchors.fill: parent
|
||||
source: Qt.resolvedUrl(config.background)
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
onStatusChanged: {
|
||||
var defaultBackground = Qt.resolvedUrl(config.defaultBackground)
|
||||
if (status == Image.Error && source != defaultBackground) {
|
||||
source = defaultBackground
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: "transparent"
|
||||
//visible: primaryScreen
|
||||
|
||||
Clock {
|
||||
id: clock
|
||||
anchors.margins: 5
|
||||
anchors.top: parent.top; anchors.right: parent.right
|
||||
|
||||
color: "white"
|
||||
timeFont.family: "Oxygen"
|
||||
}
|
||||
|
||||
Image {
|
||||
id: rectangle
|
||||
anchors.centerIn: parent
|
||||
width: Math.max(320, mainColumn.implicitWidth + 50)
|
||||
height: Math.max(320, mainColumn.implicitHeight + 50)
|
||||
|
||||
source: Qt.resolvedUrl("rectangle.png")
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
anchors.centerIn: parent
|
||||
spacing: 12
|
||||
Text {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
color: "black"
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
height: text.implicitHeight
|
||||
width: parent.width
|
||||
text: textConstants.welcomeText.arg(sddm.hostName)
|
||||
wrapMode: Text.WordWrap
|
||||
font.pixelSize: 24
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: 4
|
||||
Text {
|
||||
id: lblName
|
||||
width: parent.width
|
||||
text: textConstants.userName
|
||||
font.bold: true
|
||||
font.pixelSize: 12
|
||||
}
|
||||
|
||||
TextBox {
|
||||
id: name
|
||||
width: parent.width; height: 30
|
||||
text: userModel.lastUser
|
||||
font.pixelSize: 14
|
||||
|
||||
KeyNavigation.backtab: rebootButton; KeyNavigation.tab: password
|
||||
|
||||
Keys.onPressed: function (event) {
|
||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
|
||||
sddm.login(name.text, password.text, sessionIndex)
|
||||
event.accepted = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing : 4
|
||||
Text {
|
||||
id: lblPassword
|
||||
width: parent.width
|
||||
text: textConstants.password
|
||||
font.bold: true
|
||||
font.pixelSize: 12
|
||||
}
|
||||
|
||||
PasswordBox {
|
||||
id: password
|
||||
width: parent.width; height: 30
|
||||
font.pixelSize: 14
|
||||
|
||||
KeyNavigation.backtab: name; KeyNavigation.tab: session
|
||||
|
||||
Keys.onPressed: function (event) {
|
||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
|
||||
sddm.login(name.text, password.text, sessionIndex)
|
||||
event.accepted = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
spacing: 4
|
||||
width: parent.width / 2
|
||||
z: 100
|
||||
|
||||
Column {
|
||||
z: 100
|
||||
width: parent.width * (layoutBox.visible ? 1.3 : 2)
|
||||
spacing : 4
|
||||
anchors.bottom: parent.bottom
|
||||
|
||||
Text {
|
||||
id: lblSession
|
||||
width: parent.width
|
||||
text: textConstants.session
|
||||
wrapMode: TextEdit.WordWrap
|
||||
font.bold: true
|
||||
font.pixelSize: 12
|
||||
}
|
||||
|
||||
ComboBox {
|
||||
id: session
|
||||
width: parent.width; height: 30
|
||||
font.pixelSize: 14
|
||||
|
||||
arrowIcon: Qt.resolvedUrl("angle-down.png")
|
||||
|
||||
model: sessionModel
|
||||
index: sessionModel.lastIndex
|
||||
|
||||
KeyNavigation.backtab: password; KeyNavigation.tab: layoutBox
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
z: 101
|
||||
width: parent.width * 0.7
|
||||
spacing : 4
|
||||
anchors.bottom: parent.bottom
|
||||
|
||||
visible: keyboard.enabled && keyboard.layouts.length > 0
|
||||
|
||||
Text {
|
||||
id: lblLayout
|
||||
width: parent.width
|
||||
text: textConstants.layout
|
||||
wrapMode: TextEdit.WordWrap
|
||||
font.bold: true
|
||||
font.pixelSize: 12
|
||||
}
|
||||
|
||||
LayoutBox {
|
||||
id: layoutBox
|
||||
width: parent.width; height: 30
|
||||
font.pixelSize: 14
|
||||
|
||||
arrowIcon: Qt.resolvedUrl("angle-down.png")
|
||||
|
||||
KeyNavigation.backtab: session; KeyNavigation.tab: loginButton
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
Text {
|
||||
id: errorMessage
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: textConstants.prompt
|
||||
font.pixelSize: 10
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
spacing: 4
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
property int btnWidth: Math.max(loginButton.implicitWidth,
|
||||
shutdownButton.implicitWidth,
|
||||
rebootButton.implicitWidth, 80) + 8
|
||||
Button {
|
||||
id: loginButton
|
||||
text: textConstants.login
|
||||
width: parent.btnWidth
|
||||
|
||||
onClicked: sddm.login(name.text, password.text, sessionIndex)
|
||||
|
||||
KeyNavigation.backtab: layoutBox; KeyNavigation.tab: shutdownButton
|
||||
}
|
||||
|
||||
Button {
|
||||
id: shutdownButton
|
||||
text: textConstants.shutdown
|
||||
width: parent.btnWidth
|
||||
|
||||
onClicked: sddm.powerOff()
|
||||
|
||||
KeyNavigation.backtab: loginButton; KeyNavigation.tab: rebootButton
|
||||
}
|
||||
|
||||
Button {
|
||||
id: rebootButton
|
||||
text: textConstants.reboot
|
||||
width: parent.btnWidth
|
||||
|
||||
onClicked: sddm.reboot()
|
||||
|
||||
KeyNavigation.backtab: shutdownButton; KeyNavigation.tab: name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
if (name.text == "")
|
||||
name.focus = true
|
||||
else
|
||||
password.focus = true
|
||||
}
|
||||
}
|
||||
7
sddm/03-sway-fedora/README
Normal file
7
sddm/03-sway-fedora/README
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
Based on the Maldives SDDM theme by Abdurrahman AVCI and other SDDM contributors.
|
||||
|
||||
chevron icons are extracted from Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome.
|
||||
|
||||
rectangle.png is from KDM ariya theme.
|
||||
|
||||
QML files contain license headers.
|
||||
BIN
sddm/03-sway-fedora/angle-down.png
Normal file
BIN
sddm/03-sway-fedora/angle-down.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 196 B |
17
sddm/03-sway-fedora/metadata.desktop
Normal file
17
sddm/03-sway-fedora/metadata.desktop
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
[SddmGreeterTheme]
|
||||
Name=Sway-Fedora
|
||||
Description=Fedora Sway Theme
|
||||
Author=Fedora Sway SIG
|
||||
Copyright=(c) 2024, Fedora Sway SIG
|
||||
License=CC-BY-SA-3.0 AND MIT
|
||||
Type=sddm-theme
|
||||
Version=0.1
|
||||
Website=https://gitlab.com/fedora/sigs/sway/sway-config-fedora
|
||||
Screenshot=03-sway-fedora.jpg
|
||||
MainScript=Main.qml
|
||||
ConfigFile=theme.conf
|
||||
TranslationsDirectory=translations
|
||||
Email=sway@lists.fedoraproject.org
|
||||
Theme-Id=03-sway-fedora
|
||||
Theme-API=2.0
|
||||
QtVersion=6
|
||||
BIN
sddm/03-sway-fedora/rectangle.png
Normal file
BIN
sddm/03-sway-fedora/rectangle.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
2
sddm/03-sway-fedora/theme.conf.in
Normal file
2
sddm/03-sway-fedora/theme.conf.in
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
[General]
|
||||
background=@BACKGROUND@
|
||||
|
|
@ -12,9 +12,18 @@ if [ -x /usr/bin/start-sway ]; then
|
|||
fi
|
||||
|
||||
# Set some compatibility variables in case if sway-config-fedora is not present
|
||||
if systemd-detect-virt --quiet --vm; then
|
||||
export WLR_NO_HARDWARE_CURSORS=1
|
||||
export WLR_RENDERER=pixman
|
||||
fi
|
||||
case $(systemd-detect-virt --vm) in
|
||||
"none"|"")
|
||||
;;
|
||||
"kvm")
|
||||
# WLR_NO_HARDWARE_CURSORS=1 is not needed with legacy DRM interface
|
||||
export WLR_RENDERER=pixman
|
||||
export WLR_DRM_NO_ATOMIC=1
|
||||
;;
|
||||
*)
|
||||
# https://github.com/swaywm/sway/issues/6581
|
||||
export WLR_NO_HARDWARE_CURSORS=1
|
||||
;;
|
||||
esac
|
||||
|
||||
exec /usr/bin/sway "$@"
|
||||
|
|
|
|||
|
|
@ -10,8 +10,11 @@ bindsym Mod4+shift+e exec swaynag \
|
|||
|
||||
# Disable displays on idle
|
||||
exec command -v swayidle >/dev/null && swayidle -w \
|
||||
timeout 300 'swaymsg "output * dpms off"' \
|
||||
resume 'swaymsg "output * dpms on"'
|
||||
timeout 300 'swaymsg "output * power off"' \
|
||||
resume 'swaymsg "output * power on"'
|
||||
|
||||
# Apply system keyboard configuration
|
||||
exec /usr/libexec/sway-systemd/locale1-xkb-config
|
||||
|
||||
# Show sddm-greeter as fullscreen
|
||||
for_window [app_id="sddm-greeter"] fullscreen
|
||||
for_window [app_id="sddm-greeter"] fullscreen enable
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=xdg-shell
|
|||
InputMethod=
|
||||
|
||||
[Theme]
|
||||
Current=02-lxqt-fedora
|
||||
Current=03-sway-fedora
|
||||
|
||||
[Wayland]
|
||||
CompositorCommand=/usr/libexec/sddm-compositor-sway
|
||||
|
|
|
|||
|
|
@ -1,12 +1,15 @@
|
|||
# vim: ft=spec
|
||||
%bcond_without sddm
|
||||
%global sway_ver 1.7
|
||||
%bcond initialsetup %[0%{?fedora} >= 40 || 0%{?rhel} >= 10]
|
||||
%bcond sddm 1
|
||||
%global sway_ver 1.8
|
||||
%global bg_format %[ 0%{?fedora} >= 42 ? "jxl" : "png" ]
|
||||
|
||||
Name: {{{ git_name }}}
|
||||
Version: {{{ git_version }}}
|
||||
Release: {{{ git_release }}}%{?dist}
|
||||
Summary: Fedora Sway Spin configuration for Sway
|
||||
|
||||
SourceLicense: MIT AND CC-BY-SA-3.0
|
||||
License: MIT
|
||||
URL: https://gitlab.com/fedora/sigs/sway/{{{ git_name }}}
|
||||
Source0: {{{ git_pack path=$(git rev-parse --show-toplevel) }}}
|
||||
|
|
@ -27,7 +30,7 @@ Requires: polkit
|
|||
Requires: xorg-x11-server-Xwayland
|
||||
|
||||
# Install configs and scripts for better integration with systemd user session
|
||||
Recommends: sway-systemd
|
||||
Recommends: sway-systemd >= 0.3.0
|
||||
# Minimal installation doesn't include Qt Wayland backend
|
||||
Recommends: (qt5-qtwayland if qt5-qtbase-gui)
|
||||
Recommends: (qt6-qtwayland if qt6-qtbase-gui)
|
||||
|
|
@ -36,11 +39,15 @@ Recommends: (qt6-qtwayland if qt6-qtbase-gui)
|
|||
Recommends: foot
|
||||
Recommends: libnotify
|
||||
Recommends: rofi-wayland
|
||||
Recommends: xdg-user-dirs
|
||||
Requires: /usr/bin/pgrep
|
||||
Requires: /usr/bin/pkill
|
||||
Requires: brightnessctl >= 0.5.1-11
|
||||
Requires: desktop-backgrounds-compat
|
||||
Requires: grimshot
|
||||
Requires: light
|
||||
%if "%{bg_format}" == "jxl"
|
||||
Requires: jxl-pixbuf-loader
|
||||
%endif
|
||||
Requires: lxqt-policykit
|
||||
Requires: playerctl
|
||||
Requires: pulseaudio-utils
|
||||
|
|
@ -52,15 +59,36 @@ Requires: waybar
|
|||
%description
|
||||
%{summary}.
|
||||
|
||||
%if %{with initialsetup}
|
||||
%package -n initial-setup-gui-wayland-sway
|
||||
Summary: Sway Wayland Initial Setup GUI configuration
|
||||
Provides: firstboot(gui-backend)
|
||||
Conflicts: firstboot(gui-backend)
|
||||
|
||||
Requires: xorg-x11-server-Xwayland
|
||||
Requires: initial-setup-gui >= 0.3.99
|
||||
Requires: sway >= %{sway_ver}
|
||||
Supplements: (initial-setup-gui and sway)
|
||||
|
||||
%description -n initial-setup-gui-wayland-sway
|
||||
This package contains configuration and dependencies for
|
||||
Anaconda Initial Setup to use Sway for the display server.
|
||||
%endif
|
||||
|
||||
%if %{with sddm}
|
||||
%package -n sddm-wayland-sway
|
||||
Summary: Sway Wayland SDDM greeter configuration
|
||||
License: MIT AND CC-BY-SA-3.0
|
||||
|
||||
Provides: sddm-greeter-displayserver
|
||||
Conflicts: sddm-greeter-displayserver
|
||||
|
||||
Requires: lxqt-themes-fedora
|
||||
Requires: sddm >= 0.19.0^git20221123.3e48649
|
||||
Requires: sway
|
||||
Requires: desktop-backgrounds-compat
|
||||
%if "%{bg_format}" == "jxl"
|
||||
Requires: kf6-kimageformats
|
||||
%endif
|
||||
Requires: sddm >= 0.20.0
|
||||
Requires: sway >= %{sway_ver}
|
||||
|
||||
%description -n sddm-wayland-sway
|
||||
This package contains configuration and dependencies for SDDM
|
||||
|
|
@ -73,11 +101,16 @@ to use Sway for the greeter display server.
|
|||
|
||||
|
||||
%build
|
||||
%make_build
|
||||
%make_build \
|
||||
PREFIX='%{_prefix}' \
|
||||
BACKGROUND='%{_datadir}/backgrounds/default.%{bg_format}'
|
||||
|
||||
|
||||
%install
|
||||
%make_install PREFIX='%{_prefix}' WITH_SDDM='%[%{with sddm}?"yes":"no"]'
|
||||
%make_install \
|
||||
PREFIX='%{_prefix}' \
|
||||
WITH_INITIALSETUP='%[%{with initialsetup}?"yes":"no"]' \
|
||||
WITH_SDDM='%[%{with sddm}?"yes":"no"]'
|
||||
|
||||
|
||||
%files
|
||||
|
|
@ -89,15 +122,24 @@ to use Sway for the greeter display server.
|
|||
%{_bindir}/start-sway
|
||||
%{_datadir}/sway/config.d
|
||||
%{_datadir}/sway/config.live.d
|
||||
%{_datadir}/sway/live
|
||||
%{_datadir}/wayland-sessions/sway.desktop
|
||||
%{_libexecdir}/sway
|
||||
|
||||
%if %{with initialsetup}
|
||||
%files -n initial-setup-gui-wayland-sway
|
||||
%license LICENSE
|
||||
%{_libexecdir}/initial-setup/run-gui-backend
|
||||
%endif
|
||||
|
||||
%if %{with sddm}
|
||||
%files -n sddm-wayland-sway
|
||||
%license LICENSE
|
||||
%license %{_datadir}/sddm/themes/03-sway-fedora/LICENSE
|
||||
%config(noreplace) %{_sysconfdir}/sway/sddm-greeter.config
|
||||
%{_prefix}/lib/sddm/sddm.conf.d/wayland-sway.conf
|
||||
%{_datadir}/sddm/themes/03-sway-fedora/
|
||||
%{_libexecdir}/sddm-compositor-sway
|
||||
%{_prefix}/lib/sddm/sddm.conf.d/wayland-sway.conf
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
|
|
|
|||
12
sway/config.d/50-rules-pavucontrol.conf
Normal file
12
sway/config.d/50-rules-pavucontrol.conf
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# Display PulseAudio volume control application (both GTK and Qt varieties)
|
||||
# as a floating window.
|
||||
|
||||
for_window [app_id="pavucontrol"] {
|
||||
floating enable
|
||||
move position center
|
||||
}
|
||||
|
||||
for_window [app_id="pavucontrol-qt"] {
|
||||
floating enable
|
||||
move position center
|
||||
}
|
||||
|
|
@ -1,18 +1,18 @@
|
|||
# Key bindings for brightness control using `light`.
|
||||
# Key bindings for brightness control using `brightnessctl`.
|
||||
# Displays a notification with the current value if /usr/bin/notify-send is available
|
||||
#
|
||||
# Brightness increase/decrease step can be customized by setting the `$brightness_step`
|
||||
# variable to a numeric value before including the file.
|
||||
#
|
||||
# Requires: light
|
||||
# Requires: brightnessctl >= 0.5.1-11
|
||||
# Recommends: libnotify
|
||||
|
||||
set $brightness_notification_cmd command -v notify-send >/dev/null && \
|
||||
VALUE=$(light) && VALUE=${VALUE%%.*} && \
|
||||
VALUE=$(brightnessctl --percentage get) && \
|
||||
notify-send -e -h string:x-canonical-private-synchronous:brightness \
|
||||
-h "int:value:$VALUE" -t 800 "Brightness: ${VALUE}%"
|
||||
|
||||
bindsym XF86MonBrightnessDown exec \
|
||||
'STEP="$brightness_step" && light -U ${STEP:-5} && $brightness_notification_cmd'
|
||||
'STEP="$brightness_step" && brightnessctl -q set ${STEP:-5}%- && $brightness_notification_cmd'
|
||||
bindsym XF86MonBrightnessUp exec \
|
||||
'STEP="$brightness_step" && light -A ${STEP:-5} && $brightness_notification_cmd'
|
||||
'STEP="$brightness_step" && brightnessctl -q set +${STEP:-5}% && $brightness_notification_cmd'
|
||||
|
|
|
|||
|
|
@ -3,6 +3,11 @@
|
|||
# The image files will be written to XDG_SCREENSHOTS_DIR if this is set
|
||||
# or defined in user-dirs.dir, or to a fallback location XDG_PICTURES_DIR.
|
||||
#
|
||||
# Copy the file to ~/.config/sway/config.d/60-bindings-screenshot.conf (or to
|
||||
# your $XDG_CONFIG_HOME location if set differently) to be able to overwrite
|
||||
# existing shortcuts.
|
||||
# Check 'man grimshot' for additional commands that you may find useful.
|
||||
#
|
||||
# Requires: grimshot
|
||||
|
||||
bindsym {
|
||||
|
|
@ -12,6 +17,4 @@ bindsym {
|
|||
Alt+Print exec grimshot save active
|
||||
# Select and capture a custom rectangular area
|
||||
Ctrl+Print exec grimshot save area
|
||||
# Select and capture a single window
|
||||
$mod+Print exec grimshot save window
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,18 +3,19 @@
|
|||
#
|
||||
# Volume increase/decrease step can be customized by setting the `$volume_step`
|
||||
# variable to a numeric value before including the file.
|
||||
# Maximum volume boost level can be set with the `$volume_limit` variable.
|
||||
#
|
||||
# Requires: pulseaudio-utils
|
||||
# Recommends: libnotify
|
||||
|
||||
set $volume_notification_cmd /usr/libexec/sway/notify-volume
|
||||
set $volume_helper_cmd /usr/libexec/sway/volume-helper
|
||||
|
||||
# Allow volume controls even if the screen is locked
|
||||
bindsym --locked {
|
||||
XF86AudioRaiseVolume exec \
|
||||
'STEP="$volume_step" && pactl set-sink-volume @DEFAULT_SINK@ +${STEP:-5}% && $volume_notification_cmd'
|
||||
$volume_helper_cmd --limit "$volume_limit" --increase "$volume_step"
|
||||
XF86AudioLowerVolume exec \
|
||||
'STEP="$volume_step" && pactl set-sink-volume @DEFAULT_SINK@ -${STEP:-5}% && $volume_notification_cmd'
|
||||
XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle && $volume_notification_cmd
|
||||
$volume_helper_cmd --limit "$volume_limit" --decrease "$volume_step"
|
||||
XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle && $volume_helper_cmd
|
||||
XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
# Status Bar: waybar
|
||||
#
|
||||
# Read `man 5 sway-bar` for more information about this section.
|
||||
# Read `man 5 waybar` for more information about the waybar instance style and layout configuration
|
||||
#
|
||||
# Requires: waybar
|
||||
|
||||
bar {
|
||||
position top
|
||||
swaybar_command waybar
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@
|
|||
exec LT="$lock_timeout" ST="$screen_timeout" LT=${LT:-300} ST=${ST:-60} && \
|
||||
swayidle -w \
|
||||
timeout $LT 'swaylock -f' \
|
||||
timeout $((LT + ST)) 'swaymsg "output * dpms off"' \
|
||||
resume 'swaymsg "output * dpms on"' \
|
||||
timeout $ST 'pgrep -xu "$USER" swaylock >/dev/null && swaymsg "output * dpms off"' \
|
||||
resume 'pgrep -xu "$USER" swaylock >/dev/null && swaymsg "output * dpms on"' \
|
||||
timeout $((LT + ST)) 'swaymsg "output * power off"' \
|
||||
resume 'swaymsg "output * power on"' \
|
||||
timeout $ST 'pgrep -xu "$USER" swaylock >/dev/null && swaymsg "output * power off"' \
|
||||
resume 'pgrep -xu "$USER" swaylock >/dev/null && swaymsg "output * power on"' \
|
||||
before-sleep 'swaylock -f' \
|
||||
lock 'swaylock -f' \
|
||||
unlock 'pkill -xu "$USER" -SIGUSR1 swaylock'
|
||||
|
|
|
|||
14
sway/config.d/95-xdg-desktop-autostart.conf
Normal file
14
sway/config.d/95-xdg-desktop-autostart.conf
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# Wait until a StatusNotifierItem tray implementation is available and
|
||||
# process XDG autostart entries.
|
||||
#
|
||||
# This horror has to exist because
|
||||
#
|
||||
# - SNI spec mandates that if `IsStatusNotifierHostRegistered` is not set,
|
||||
# the client should fall back to the Freedesktop System Tray specification
|
||||
# (XEmbed).
|
||||
# - There are actual implementations that take this seriously and implement
|
||||
# a fallback *even if* StatusNotifierWatcher is already DBus-activated.
|
||||
# - https://github.com/systemd/systemd/issues/3750
|
||||
#
|
||||
exec /usr/libexec/sway-systemd/wait-sni-ready && \
|
||||
systemctl --user start sway-xdg-autostart.target
|
||||
9
sway/config.d/95-xdg-user-dirs.conf
Normal file
9
sway/config.d/95-xdg-user-dirs.conf
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Create or update XDG user dir configuration
|
||||
#
|
||||
# See also:
|
||||
# - /etc/xdg/autostart/xdg-user-dirs.desktop
|
||||
# - https://github.com/systemd/systemd/issues/18791
|
||||
#
|
||||
# Recommends: xdg-user-dirs
|
||||
|
||||
exec /usr/bin/xdg-user-dirs-update
|
||||
|
|
@ -21,21 +21,17 @@ set $term foot
|
|||
# on the original workspace that the command was run on.
|
||||
# Recommends: rofi-wayland
|
||||
set $rofi_cmd rofi \
|
||||
-run-command 'swaymsg exec -- {cmd}' \
|
||||
-run-shell-command 'swaymsg exec -- {terminal} -e {cmd}' \
|
||||
-terminal '$term'
|
||||
# Shows a list of the executables from PATH
|
||||
set $menu $rofi_cmd -show run
|
||||
# Shows a list of the applications with desktop files installed
|
||||
set $app_menu $rofi_cmd -show drun
|
||||
# Both of the above in a single list
|
||||
# set $menu $rofi_cmd -show combi -combi-modes run#drun
|
||||
# Shows a combined list of the applications with desktop files and
|
||||
# executables from PATH.
|
||||
# TODO: add window with the next release of rofi-wayland
|
||||
set $menu $rofi_cmd -show combi -combi-modes drun#run -modes combi
|
||||
|
||||
### Output configuration
|
||||
#
|
||||
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
|
||||
# Requires: desktop-backgrounds-compat, swaybg
|
||||
output * bg /usr/share/backgrounds/default.png fill
|
||||
# Requires: desktop-backgrounds-compat, swaybg, jxl-pixbuf-loader
|
||||
output * bg @BACKGROUND@ fill
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
|
|
@ -82,7 +78,6 @@ output * bg /usr/share/backgrounds/default.png fill
|
|||
|
||||
# Start your launcher
|
||||
bindsym $mod+d exec $menu
|
||||
bindsym $mod+Shift+d exec $app_menu
|
||||
|
||||
# Drag floating windows by holding down $mod and left mouse button.
|
||||
# Resize them with right mouse button + $mod.
|
||||
|
|
|
|||
|
|
@ -11,5 +11,5 @@
|
|||
|
||||
exec LT="$lock_timeout" ST="$screen_timeout" LT=${LT:-300} ST=${ST:-60} && \
|
||||
swayidle -w \
|
||||
timeout $((LT + ST)) 'swaymsg "output * dpms off"' \
|
||||
resume 'swaymsg "output * dpms on"' \
|
||||
timeout $((LT + ST)) 'swaymsg "output * power off"' \
|
||||
resume 'swaymsg "output * power on"'
|
||||
|
|
|
|||
11
sway/config.live.d/99-bg-installation-instructions.conf
Normal file
11
sway/config.live.d/99-bg-installation-instructions.conf
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Show installation instructions on the background
|
||||
#
|
||||
# Use nwg-wrapper to get installation instructions on the Live media background.
|
||||
# The intention is to help first time user to start the Sway system
|
||||
# installation easily.
|
||||
#
|
||||
# Requires: nwg-wrapper
|
||||
|
||||
set $live_scripts_path /usr/share/sway/live/
|
||||
|
||||
exec nwg-wrapper -t $live_scripts_path/live-install-instructions.pango -c $live_scripts_path/live-install-style.css -p left -ml 50 -mt 50 -a start
|
||||
9
sway/config.live.d/99-system-keyboard-config.conf
Normal file
9
sway/config.live.d/99-system-keyboard-config.conf
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Apply system-wide XKB configuration stored in systemd-localed.
|
||||
#
|
||||
# The configuration can be viewed with `localectl` and modified
|
||||
# with `localectl set-x11-keymap`.
|
||||
#
|
||||
# In the live installer environment, Anaconda relies on the localed
|
||||
# D-Bus API to update the keyboard configuration.
|
||||
|
||||
exec /usr/libexec/sway-systemd/locale1-xkb-config
|
||||
7
sway/config.live.d/99-xhost-allow-liveinst.conf
Normal file
7
sway/config.live.d/99-xhost-allow-liveinst.conf
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Allow local root to connect to Xwayland.
|
||||
# Anaconda runs elevated and will fail to start without that.
|
||||
|
||||
#
|
||||
# Requires: xhost
|
||||
|
||||
exec xhost si:localuser:root
|
||||
5
sway/live/live-install-instructions.pango
Normal file
5
sway/live/live-install-instructions.pango
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<span size="x-large"><b>Installation instructions:</b></span>
|
||||
|
||||
- Press `Win+d`
|
||||
- Type `liveinst` and press enter to start installer
|
||||
- Use Anaconda installer to install the system
|
||||
18
sway/live/live-install-style.css
Normal file
18
sway/live/live-install-style.css
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
window {
|
||||
background-color: rgba (0, 0, 0, 0.0);
|
||||
}
|
||||
|
||||
#box-outer {
|
||||
/* Define attributes of the box surrounding icons here */
|
||||
background-color: rgba (255, 255, 255, 0.0)
|
||||
}
|
||||
|
||||
#box-inner {
|
||||
background-color: rgba (0, 0, 0, 0.8);
|
||||
color: rgba (60, 110, 180, 1.0);
|
||||
border-radius: 5px;
|
||||
border-style: dotted;
|
||||
border-width: 1px;
|
||||
border-color: rgba (255, 255, 255, 0.7);
|
||||
padding: 10px
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
## Internal variables
|
||||
readonly _SWAY_COMMAND="/usr/bin/sway"
|
||||
SWAY_EXTRA_ARGS=""
|
||||
|
||||
## General exports
|
||||
|
|
@ -10,16 +11,45 @@ export XDG_SESSION_TYPE=wayland
|
|||
|
||||
## Hardware compatibility
|
||||
# We can't be sure that the virtual GPU is compatible with Sway.
|
||||
if systemd-detect-virt --quiet --vm; then
|
||||
# https://github.com/swaywm/sway/issues/6581
|
||||
export WLR_NO_HARDWARE_CURSORS=1
|
||||
# Fallback to the pixman renderer as it has a higher chance to work
|
||||
# and will be faster than llvmpipe anyways.
|
||||
# See https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/2871
|
||||
export WLR_RENDERER=pixman
|
||||
fi
|
||||
# We should be attempting to detect an EGL driver instead, but that appears
|
||||
# to be a bit more complicated.
|
||||
case $(systemd-detect-virt --vm) in
|
||||
"none"|"")
|
||||
;;
|
||||
"kvm")
|
||||
# There's two drivers we can get here, depending on the 3D acceleration
|
||||
# flag state: either virtio_gpu/virgl or kms_swrast/llvmpipe.
|
||||
#
|
||||
# The former one causes graphical glitches in OpenGL apps when using
|
||||
# 'pixman' renderer. The latter will crash 'gles2' renderer outright.
|
||||
# Neither of those support 'vulkan'.
|
||||
#
|
||||
# The choice is obvious, at least until we learn to detect the driver
|
||||
# instead of abusing the virtualization technology identifier.
|
||||
#
|
||||
# See also: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/2871
|
||||
export WLR_RENDERER=pixman
|
||||
# 'pixman' on virtio_gpu with recent kernels is glitchy. Appears that
|
||||
# it only affects atomic KMS, and legacy interface works.
|
||||
export WLR_DRM_NO_ATOMIC=1
|
||||
# WLR_NO_HARDWARE_CURSORS=1 is not needed with legacy DRM interface
|
||||
;;
|
||||
*)
|
||||
# https://github.com/swaywm/sway/issues/6581
|
||||
export WLR_NO_HARDWARE_CURSORS=1
|
||||
;;
|
||||
esac
|
||||
|
||||
## Load system environment customizations
|
||||
## Apply `environment.d(5)` customizations
|
||||
# This can be used to share the custom environment configs with systemd --user.
|
||||
# Importing `systemd --user show-environment` here may have unexpected
|
||||
# consequences, such as getting a leftover `WAYLAND_DISPLAY` or `DISPLAY`
|
||||
# and breaking Sway startup. Thus, the direct call to a systemd generator.
|
||||
set -o allexport
|
||||
eval "$(/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator)"
|
||||
set +o allexport
|
||||
|
||||
## Load Sway-specific system environment customizations
|
||||
if [ -f /etc/sway/environment ]; then
|
||||
set -o allexport
|
||||
# shellcheck source=/dev/null
|
||||
|
|
@ -27,7 +57,7 @@ if [ -f /etc/sway/environment ]; then
|
|||
set +o allexport
|
||||
fi
|
||||
|
||||
## Load user environment customizations
|
||||
## Load Sway-specific user environment customizations
|
||||
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/sway/environment" ]; then
|
||||
set -o allexport
|
||||
# shellcheck source=/dev/null
|
||||
|
|
@ -40,6 +70,13 @@ fi
|
|||
_SWAY_EXTRA_ARGS="$SWAY_EXTRA_ARGS"
|
||||
unset SWAY_EXTRA_ARGS
|
||||
|
||||
## Log all exported WLR_ variables
|
||||
if _WLR_VARS=$(env | grep '^WLR_'); then
|
||||
printf 'environment variables for wlroots: %s' "$_WLR_VARS" |
|
||||
tr '\n' ' ' |
|
||||
systemd-cat -p notice -t "${_SWAY_COMMAND##*/}"
|
||||
fi
|
||||
|
||||
# Start sway with extra arguments and send output to the journal
|
||||
# shellcheck disable=SC2086 # quoted expansion of EXTRA_ARGS can produce empty field
|
||||
exec systemd-cat -- /usr/bin/sway $_SWAY_EXTRA_ARGS "$@"
|
||||
exec systemd-cat -- $_SWAY_COMMAND $_SWAY_EXTRA_ARGS "$@"
|
||||
|
|
|
|||
|
|
@ -3,5 +3,5 @@
|
|||
#
|
||||
# Image path supports environment variables and shell expansions,
|
||||
# e.g. image=$HOME/Pictures/default.png
|
||||
image=/usr/share/backgrounds/default.png
|
||||
image=@BACKGROUND@
|
||||
scaling=fill
|
||||
|
|
@ -12,6 +12,7 @@
|
|||
// "sway/workspaces": {
|
||||
// "disable-scroll": true,
|
||||
// "all-outputs": true,
|
||||
// "warp-on-scroll": false,
|
||||
// "format": "{name}: {icon}",
|
||||
// "format-icons": {
|
||||
// "1": "",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue