Compare commits
56 Commits
@ -1,3 +1,813 @@ |
||||
--- |
||||
gitea: none |
||||
include_toc: true |
||||
--- |
||||
|
||||
# linux-on-desktop |
||||
|
||||
My journey to get Alpine + Wayland + River to work on ThinkPad T14 G3 AMD |
||||
My journey to get Alpine + Wayland + River to work on ThinkPad T14 G3 AMD (21CF004PGE) |
||||
|
||||
## Preparing hardware |
||||
|
||||
Disable secure boot and fn-lock in bios (so that F-keys work as F-keys by default and require Fn for their secondary multimedia functions). |
||||
|
||||
## Installing Alpine |
||||
|
||||
Put alpine standard image on Ventoy USB, load it from Ventoy in GRUB mode. |
||||
|
||||
Follow https://wiki.alpinelinux.org/wiki/Installation |
||||
|
||||
## Postinstall |
||||
|
||||
``` |
||||
doas apk add nano |
||||
``` |
||||
|
||||
In `/etc/apk/repositories`, comment out the version you installed, add edge (main, community, testing), |
||||
since some of the packages we're going to install (river, element-desktop) |
||||
only exist in testing. |
||||
|
||||
Then |
||||
``` |
||||
doas apk update |
||||
doas apk upgrade |
||||
``` |
||||
|
||||
## Usable editor by default (not vi) |
||||
|
||||
``` |
||||
doas apk add micro |
||||
doas apk del nano |
||||
echo "export EDITOR=micro" >>.profile |
||||
echo "permit setenv { EDITOR=\$EDITOR } :wheel" | tee -a /etc/doas.d/doas.conf |
||||
``` |
||||
|
||||
## Login manager (needed for desktop) |
||||
|
||||
``` |
||||
doas apk add elogind polkit-elogind |
||||
doas rc-update add elogind |
||||
doas rc-update add polkit |
||||
doas apk add greetd greetd-agreety |
||||
doas rc-update add greetd |
||||
``` |
||||
|
||||
Reboot. |
||||
|
||||
Make sure that everything works: |
||||
you should be automatically greeted with login prompt on `tty7`; |
||||
log in, and check that e.g. `XDG_RUNTIME_DIR` is set in `env`. |
||||
|
||||
## Installing river |
||||
|
||||
``` |
||||
doas apk add river river-doc |
||||
doas apk add adwaita-icon-theme foot ttf-dejavu |
||||
doas setup-devd udev |
||||
doas apk add mesa-dri-gallium mesa-va-gallium |
||||
install -Dm0755 /usr/share/doc/river/examples/init -t ~/.config/river |
||||
``` |
||||
|
||||
Also: |
||||
``` |
||||
doas apk add xwayland |
||||
``` |
||||
because the latest river in testing is built in a way that requires xwayland |
||||
(see also: https://github.com/riverwm/river/issues/913). |
||||
|
||||
Try to run with |
||||
``` |
||||
river |
||||
``` |
||||
|
||||
or |
||||
``` |
||||
dbus-run-session -- river |
||||
``` |
||||
|
||||
You should see the blue screen of river. Try to open terminal with Win+Shift+Enter. Try to exit with Win+Shift+E. |
||||
|
||||
### Login manager |
||||
|
||||
To get to river after logging in on `tty1`, and get back to `tty1` after exiting river, |
||||
change `/etc/greetd/config.toml` |
||||
|
||||
``` |
||||
command = "agreety --cmd \"dbus-run-session -- river\"" |
||||
``` |
||||
|
||||
and reboot. |
||||
|
||||
### Installing Waybar |
||||
|
||||
``` |
||||
doas apk add waybar font-roboto font-awesome |
||||
``` |
||||
|
||||
and add startup section at the end of river init file (`~/.config/river/init`): |
||||
|
||||
``` |
||||
# startup |
||||
riverctl spawn "waybar" |
||||
``` |
||||
|
||||
### HiDPI |
||||
|
||||
``` |
||||
doas apk add way-displays |
||||
mkdir .config/way-displays |
||||
``` |
||||
|
||||
and create `.config/way-displays/cfg.yaml` with the following: **TODO** |
||||
|
||||
#### HiDPI - cursors |
||||
|
||||
And in order to have decently sized mouse cursors instead of the tiniest ones, add the following line to the top of `.config/river/init`: |
||||
|
||||
``` |
||||
riverctl xcursor-theme Adwaita 24 |
||||
``` |
||||
|
||||
This will only affect river itself, the cursor will stay tiny in waybar and firefox and maybe other applications. To solve this: |
||||
``` |
||||
doas apk add gsettings-desktop-schemas |
||||
gsettings set org.gnome.desktop.interface cursor-theme 'Adwaita' |
||||
``` |
||||
|
||||
#### HiDPI - terminal |
||||
|
||||
In terminal (not in terminal emulator in WM; you can always switch to the new terminal with Ctrl+Alt+F2) |
||||
``` |
||||
doas apk add terminus-font |
||||
setfont /usr/share/console-fonts/ter-132n.psf.gz |
||||
``` |
||||
|
||||
If it looks decent: change consolefont in `/etc/conf.d/consolefont` to `"ter-132n.psf.gz"` and `doas rc-update add consolefont boot` |
||||
|
||||
### Environment |
||||
|
||||
In order to not have to create wrapper scripts for all apps: |
||||
|
||||
Create `/usr/local/bin/inga-river` (and later `chmod +x /usr/local/bin/inga-river`) with the [following content](global/usr/local/bin/inga-river). |
||||
|
||||
and replace `\"dbus-run-session -- river\"` with `inga-river` in `/etc/greetd/config.toml`. |
||||
|
||||
### Keyring |
||||
|
||||
`doas apk add gnome-keyring` |
||||
|
||||
Add following lines to `/usr/local/bin/inga-river` before the call to river: |
||||
|
||||
``` |
||||
eval $(gnome-keyring-daemon) |
||||
export SSH_AUTH_SOCK |
||||
``` |
||||
|
||||
Reboot, login, make sure with `ps aux | grep key` that keyring daemon is running. |
||||
|
||||
### Sudo for GUI apps |
||||
|
||||
`doas apk add polkit-gnome`, and add `riverctl spawn /usr/lib/polkit-gnome/polkit-gnome-authentication-agent` to your river config. |
||||
|
||||
### Launcher |
||||
|
||||
`doas apk add bemenu`, and then add this line into your river config: |
||||
|
||||
``` |
||||
riverctl map normal Super R spawn 'pidof bemenu-run || bemenu-run -i -n' |
||||
``` |
||||
|
||||
### Screenshots |
||||
|
||||
`doas apk add grimshot`, then add this line to river config: |
||||
``` |
||||
riverctl map normal None Print spawn 'grimshot copy area' |
||||
``` |
||||
|
||||
### Clipboard |
||||
|
||||
Works by default, use Ctrl+Shift+C and Ctrl+Shift+V in foot |
||||
|
||||
### Emoji keyboard |
||||
|
||||
`doas apk add rofi-emoji rofi-emoji-wayland wtype font-noto-emoji` and add this line to your river config |
||||
``` |
||||
riverctl map normal Super period spawn 'rofi -modi emoji -show emoji' |
||||
``` |
||||
|
||||
(For some reason it broke after reboot and only copies things to clipboard, even though `wtype` continues to work without any problems) |
||||
|
||||
### Notifications |
||||
|
||||
``` |
||||
doas apk add dunst |
||||
dunst & |
||||
dunstify test |
||||
``` |
||||
You should get a notification with the text "test". |
||||
|
||||
Then add `riverctl spawn "dunst"` to the startup section of your river config. |
||||
|
||||
TODO: [wired-notify](https://github.com/Toqozz/wired-notify) instead of dunst (currently not packaged for alpine) |
||||
|
||||
## Other software |
||||
|
||||
### Firefox |
||||
|
||||
``` |
||||
doas apk add firefox |
||||
firefox |
||||
``` |
||||
go to `about:support` and make sure that Window Protocol is wayland, not xwayland. |
||||
(it should be wayland because MOZ_ENABLE_WAYLAND is set to 1 by inga-river) |
||||
|
||||
For some reason, while sound in general works fine in firefox (after following the steps from Hardware section), |
||||
in WebRTC pages there is crackling much louder than the actual voices, making it unusable for voice/video calls/meetings. |
||||
|
||||
### Chrome |
||||
|
||||
``` |
||||
doas apk add chromium |
||||
``` |
||||
|
||||
It should also be wayland by default, but you can check it by `doas apk add xeyes && xeyes`. |
||||
|
||||
In order for screen sharing to work, go to `chrome://flags/#enable-webrtc-pipewire-capturer` and enable it. |
||||
Note though that every time you screenshare, there will be two promps from xdg-desktop-portal, one for picking a source, and another for actually sharing. |
||||
|
||||
### Yubikey |
||||
|
||||
``` |
||||
doas apk add yubikey-manager |
||||
doas addgroup YOUR_USER plugdev |
||||
``` |
||||
(not sure if the two commands above are necessary) |
||||
|
||||
Then: |
||||
``` |
||||
doas rc-service pcscd start |
||||
doas rc-update add pcscd |
||||
``` |
||||
|
||||
Yubikey should work in Chrome |
||||
|
||||
### Archives |
||||
|
||||
`doas apk add ouch` to avoid having to remember `tar` flags etc, and instead do `ouch decompress archive.tar.gz` (for any archive format). |
||||
|
||||
### Git |
||||
|
||||
``` |
||||
doas apk add git |
||||
git config --global credential.helper --store |
||||
``` |
||||
|
||||
### Telegram |
||||
|
||||
``` |
||||
doas apk add telegram-desktop |
||||
``` |
||||
|
||||
### Element |
||||
|
||||
``` |
||||
doas apk add element-desktop |
||||
``` |
||||
|
||||
## Hardware |
||||
|
||||
### Sleep |
||||
|
||||
**TODO 2024** |
||||
|
||||
With default settings, laptop goes to sleep after some idle period. When it wakes up, the root fs is readonly, meaning that I have to restart the laptop. |
||||
|
||||
Adding `acpiphp.disable=1` and `pcie_aspm=off` to grub config does not solve the issue. |
||||
|
||||
Disabling S0ix in UEFI only made things worse: even though `cat /sys/power/mem_sleep` reported that S3 (deep) is default, |
||||
after system goes to sleep it is impossible to wake it up, it does not react to key or power button presses. |
||||
|
||||
What did solve the issue was: |
||||
* reenable S0ix in BIOS, |
||||
* `doas apk add linux-firmware-amdgpu`, |
||||
* editing `GRUB_CMDLINE_LINUX_DEFAULT` in `/etc/default/grub` to add the following options: |
||||
`acpiphp.disable=1 pcie_aspm=off acpi_osi='Windows 2020' iommu=soft`. |
||||
|
||||
Now after waking up (after being suspended with `doas pm-suspend` from `pm-utils` package) root fs is still readwrite. |
||||
But sometimes network disappears after wakeup. |
||||
|
||||
For suspend on lid close and unsuspend on open, follow https://wiki.alpinelinux.org/wiki/Suspend_on_LID_close : |
||||
``` |
||||
doas mkdir -p /etc/acpi/LID |
||||
doas micro /etc/acpi/LID/00000080 |
||||
``` |
||||
should have the following content |
||||
``` |
||||
#!/bin/sh |
||||
exec pm-suspend |
||||
``` |
||||
and then |
||||
``` |
||||
doas chmod +x /etc/acpi/LID/00000080 |
||||
doas rc-service acpid restart |
||||
``` |
||||
|
||||
### WiFi |
||||
|
||||
`setup-alpine` should have prompted for access point, everything should work. |
||||
|
||||
To avoid having to manually configure wpa_supplicant, |
||||
install network manager, and use it instead of out-of-the-box network service: |
||||
|
||||
``` |
||||
doas apk add networkmanager-wifi networkmanager-tui |
||||
doas rc-update add networkmanager |
||||
doas rc-update del networking boot |
||||
``` |
||||
|
||||
and update NetworkManager config (https://gitlab.alpinelinux.org/alpine/aports/-/issues/10267): |
||||
`/etc/NetworkManager/NetworkManager.conf` should look like that: |
||||
|
||||
``` |
||||
[main] |
||||
dhcp=internal |
||||
[ifupdown] |
||||
managed=true |
||||
``` |
||||
|
||||
After reboot, switching between wireless networks (or between wireless and wired) |
||||
can easily be done with `nmtui` in the shell. |
||||
|
||||
### Backlight |
||||
|
||||
``` |
||||
doas apk add enlighten |
||||
doas rc-service udev restart |
||||
``` |
||||
|
||||
and add the following lines to river config: |
||||
|
||||
``` |
||||
riverctl map $mode None XF86MonBrightnessUp spawn "BACKLIGHT_DEVICE=amdgpu_bl1 enlighten +5%" |
||||
riverctl map $mode None XF86MonBrightnessDown spawn "BACKLIGHT_DEVICE=amdgpu_bl1 enlighten -5%" |
||||
``` |
||||
|
||||
Backlight control with Fn+F5/F6 should work now. |
||||
|
||||
(`amdgpu_bl0` is specific for this laptop; value for others can be obtained from `/sys/class/backlight/`) |
||||
|
||||
### Trackpoint |
||||
|
||||
Disregard this: |
||||
|
||||
> ``` |
||||
>find /sys/devices/platform/i8042/ -name name | xargs grep -Fl TrackPoint |
||||
> ``` |
||||
> to find which serio corresponds to trackpoint, then |
||||
> ``` |
||||
> echo 70 | doas tee /sys/devices/platform/i8042/serio1/sensitivity |
||||
> ``` |
||||
> for reasonably low sensitivity (does not persist; for persistence TODO separate udev rule). |
||||
|
||||
Instead of configuring sensitivity, it's probably better to configure pointer speed in river. |
||||
|
||||
Find your trackpoint with `riverctl list-inputs | grep -i trackpoint`, |
||||
it will look like `2:10:TPPS/2_Elan_TrackPoint`. |
||||
|
||||
Then add the following to your river config: |
||||
``` |
||||
riverctl input 2:10:TPPS/2_Elan_TrackPoint accel-profile adaptive |
||||
riverctl input 2:10:TPPS/2_Elan_TrackPoint pointer-accel -0.5 |
||||
``` |
||||
|
||||
### Sound |
||||
|
||||
Based on https://wiki.alpinelinux.org/wiki/PipeWire |
||||
|
||||
``` |
||||
doas apk add pipewire wireplumber rtkit pipewire-alsa |
||||
#doas addgroup YOURUSER rtkit |
||||
``` |
||||
|
||||
Then |
||||
``` |
||||
/usr/libexec/pipewire-launcher |
||||
``` |
||||
|
||||
Make sure that everything works (with `wpctl status`, `pw-cat -p YOURFILE.flac` |
||||
or just opening YouTube in FF). |
||||
|
||||
Then make pipewire start automatically: in river config, add another startup line: |
||||
``` |
||||
riverctl spawn "/usr/libexec/pipewire-launcher" |
||||
``` |
||||
|
||||
Control volume with `wpctl`. |
||||
And change the handlers for XF86Audio (adding `-repeat` and replacing the spawned command): |
||||
``` |
||||
riverctl map -repeat $mode None XF86AudioRaiseVolume spawn 'wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 1%+' |
||||
riverctl map -repeat $mode None XF86AudioLowerVolume spawn 'wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 1%-' |
||||
riverctl map $mode None XF86AudioMute spawn 'wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle' |
||||
``` |
||||
|
||||
Note that the internal microphone does not work and is not detected by pipewire. |
||||
(This still holds on P14s G4 in 2024.) |
||||
Only external microphones work. |
||||
|
||||
#### Mic mute button |
||||
|
||||
``` |
||||
doas apk add alsa-tools |
||||
``` |
||||
|
||||
Add the following to the river config: |
||||
|
||||
``` |
||||
riverctl map $mode None XF86AudioMicMute spawn 'amixer --card 1 set "Capture" toggle' |
||||
``` |
||||
|
||||
(Editing ACPI hooks no longer needed on P14s G4 in 2024.) |
||||
|
||||
### Webcam |
||||
|
||||
Should work after following the steps for "Audio". |
||||
|
||||
Can be tested in https://webrtc.github.io/samples |
||||
|
||||
## Additional |
||||
|
||||
### Screen sharing |
||||
|
||||
``` |
||||
doas apk add xdg-desktop-portal xdg-desktop-portal-wlr |
||||
``` |
||||
|
||||
Create `/usr/local/bin/inga-xdg-desktop-portal-wlr` with the following: |
||||
|
||||
``` |
||||
#!/bin/sh |
||||
killall /usr/libexec/xdg-desktop-portal |
||||
killall /usr/libexec/xdg-desktop-portal-wlr |
||||
/usr/libexec/xdg-desktop-portal-wlr |
||||
``` |
||||
|
||||
and to your river config |
||||
``` |
||||
riverctl spawn "inga-xdg-desktop-portal-wlr" |
||||
``` |
||||
|
||||
(for some reason `xdg-desktop-portal` gets started automatically and after that newly started xdg-desktop-portal-wlr does not work; |
||||
we need to kill that xdg-desktop-portal first) |
||||
|
||||
Also create `.config/xdg-desktop-portal-wlr/config` with the following: |
||||
|
||||
``` |
||||
[screencast] |
||||
chooser_cmd=bemenu |
||||
chooser_type=dmenu |
||||
``` |
||||
|
||||
### Prevent firefox sharing indicator from taking the entire tile |
||||
|
||||
Add the following lines to river config (before the last `exec` line): |
||||
|
||||
``` |
||||
riverctl float-filter-add title "Firefox — Sharing Indicator" |
||||
riverctl float-filter-add title 'Firefox — Sharing Indicator' |
||||
``` |
||||
|
||||
(TODO: check which kind of quotes works) |
||||
|
||||
## Development (containers) |
||||
|
||||
### Unprivileged LXC (ran without privileges on host), with routing |
||||
|
||||
(based partially on https://linuxcontainers.org/lxc/getting-started and https://wiki.alpinelinux.org/wiki/LXC) |
||||
|
||||
**Note that docker won't work inside this container**, you'll need to create container using privileged LXD, as described in the next section (see https://discuss.linuxcontainers.org/t/lxc-on-alpine-host-sys-fs-cgroup-is-not-mounted-into-unprivileged-alpine-guest/15026/1 for more details on why this doesn't work). |
||||
|
||||
#### Networking (host) |
||||
|
||||
(assuming that your internet-connected interface is eth0, |
||||
and that you want to use 10.157.1.0/24 subnet for the container) |
||||
|
||||
Add the following to `/etc/network/interfaces`: |
||||
``` |
||||
auto br0 |
||||
iface br0 inet static |
||||
bridge-ports dummy0 |
||||
bridge-stp 0 |
||||
address 10.157.1.1 |
||||
netmask 255.255.255.0 |
||||
``` |
||||
|
||||
and do |
||||
|
||||
``` |
||||
doas apk add bridge |
||||
doas modprobe dummy |
||||
echo dummy | doas tee -a /etc/modules |
||||
echo 1 | doas tee -a /proc/sys/net/ipv4/ip_forward |
||||
doas apk add iptables |
||||
doas rc-update add iptables |
||||
doas iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE |
||||
doas iptables --append FORWARD --in-interface br0 -j ACCEPT |
||||
doas /etc/init.d/iptables save |
||||
``` |
||||
|
||||
#### Containers support |
||||
|
||||
``` |
||||
doas apk add lxc lxcfs lxc-download xz gnupg |
||||
echo "$(id -un):10000000:5000000" | doas tee -a /etc/subuid |
||||
echo "$(id -un):10000000:5000000 | doas tee -a /etc/subgid |
||||
echo "$(id -un) veth br0 10" | doas tee -a /etc/lxc/lxc-usernet |
||||
doas rc-update add cgroups lxc lxcfs dbus |
||||
``` |
||||
|
||||
#### Creating container |
||||
|
||||
Create `~/.config/lxc/CONTAINERNAME.conf" with the following content: |
||||
``` |
||||
lxc.net.0.type = veth |
||||
lxc.net.0.flags = up |
||||
lxc.net.0.link = br0 |
||||
lxc.net.0.ipv4.address = 10.157.1.2/24 10.157.1.255 |
||||
lxc.net.0.ipv4.gateway = 10.157.1.1 |
||||
lxc.net.0.veth.pair = veth-if-0 |
||||
# this is not a mistype, 500K should be enough for all your nesting needs, and 5M in /etc/subuid should be enough if you want to create any other containers |
||||
lxc.idmap = u 0 10000000 500000 |
||||
lxc.idmap = g 0 10000000 500000 |
||||
|
||||
lxc.include = /usr/share/lxc/config/nesting.conf |
||||
lxc.apparmor.allow_nesting = 1 |
||||
lxc.seccomp.allow_nesting = 1 |
||||
lxc.mount.auto = proc sys cgroup:rw:force |
||||
``` |
||||
|
||||
Then: |
||||
``` |
||||
lxc-create -n CONTAINERNAME -f .config/lxc/CONTAINERNAME.conf -t download |
||||
# pick OS (alpine/edge/amd64 in my case) |
||||
lxc-start -n CONTAINERNAME # make sure it does not produce any errors |
||||
lxc-attach --clear-env -n CONTAINERNAME |
||||
``` |
||||
|
||||
You'll get into a container root console. |
||||
|
||||
(but still inside this container `apk cgroups start` will produce errors |
||||
and mount everything in /sys/fs/cgroups except for openrc as nobody:nobody, |
||||
and won't mount openrc at all, and nested containers won't work.) |
||||
|
||||
#### Networking (container) |
||||
|
||||
In container root console, check if network is up with `ifconfig`. |
||||
If there are no IPv4 address for eth0, you'll have to configure it manually, |
||||
by editing `/etc/network/interfaces`. |
||||
The easiest way to do it is by |
||||
``` |
||||
doas micro ~/.local/share/lxc/CONTAINERNAME/rootfs/etc/network/interfaces` |
||||
``` |
||||
on the host. |
||||
|
||||
In the end the file should look like |
||||
``` |
||||
auto eth0 |
||||
iface eth0 inet static |
||||
address 10.157.1.2 |
||||
netmask 255.255.255.0 |
||||
gateway 10.157.1.1 |
||||
hostname $(hostname) |
||||
``` |
||||
|
||||
Then `rc-service networking restart`, and check `ifconfig`. |
||||
If everything is right, there should be an ipv4 address in `ifconfig`, |
||||
and `ping 10.157.1.1` inside container and `ping 10.157.1.2` inside host should work. |
||||
|
||||
`ping 8.8.8.8` inside container should work too, thanks for routing. |
||||
|
||||
Now, if `ping google.com` does not work, configure DNS in container: |
||||
|
||||
``` |
||||
echo nameserver 8.8.8.8 >> /etc/resolv.conf |
||||
echo nameserver 8.8.4.4 >> /etc/resolv.conf |
||||
``` |
||||
|
||||
(or add them using micro on the host, as you did for interfaces) |
||||
|
||||
Make sure `ping 8.8.8.8` works. |
||||
APK should work too: `apk add micro neofetch` |
||||
|
||||
#### Creating an user inside container |
||||
|
||||
In container root shell: |
||||
``` |
||||
adduser -g USERNAME USERNAME |
||||
adduser USERNAME wheel |
||||
echo "permit persist :wheel" >> /etc/doas.d/doas.conf |
||||
``` |
||||
|
||||
Now exit root shell (just with `exit`), and try `lxc-console -n CONTAINERNAME`. |
||||
You should be able to log in using the new username and password. |
||||
(To exit lxc console, use Ctrl+A, Q). |
||||
|
||||
### Alternatively: unprivileged LXC using LXD / Incus (ran as privileged service on host) |
||||
|
||||
#### Security notes |
||||
|
||||
Note that with LXD, unprivileged containers run under root, which is not supposed to give them any extra privileges |
||||
(source: https://discuss.linuxcontainers.org/t/privileged-and-unprivileged-containers/12060/2), but this implies that: |
||||
|
||||
Containers can only be managed with LXD using root access. |
||||
Which means either `doas` for every command (including connecting to the container shell), |
||||
or adding your user to the `lxd` group which will have access to LXD daemon, |
||||
**which will effectively give your user passwordless sudo (since access to LXD daemon can trivially be used to gain root privileges), |
||||
so that any process running under your user can trivially gain root privileges on the host** |
||||
(which is for some reason not considered by LXD maintainers to be a problem). |
||||
|
||||
**DO NOT add your user to the `lxd` group, and DO NOT uncomment ` --group lxd` in `/etc/conf.d/lxd`** |
||||
|
||||
Instead the secure way of doing things would probably be to only use lxd as a root, |
||||
and connect to the container using ssh. |
||||
|
||||
#### Containers support |
||||
|
||||
As simple as |
||||
``` |
||||
doas apk add incus incus-client |
||||
doas rc-update add incusd |
||||
doas rc-service start incusd |
||||
doas incus admin init |
||||
``` |
||||
|
||||
Networking with routing should work automatically. |
||||
|
||||
#### SSH support |
||||
|
||||
``` |
||||
doas apk add openssh-client |
||||
ssh-keygen -t ed25519 |
||||
``` |
||||
|
||||
(Also make sure that `echo $SSH_AUTH_SOCK` is not empty; it shouldn't be if gnome-keyring-daemon is configured properly.) |
||||
|
||||
#### Creating container |
||||
|
||||
``` |
||||
doas incus launch images:alpine/edge -c security.nesting=true -c security.privileged=false -c security.idmap.isolated=true -c security.idmap.size=6553600 test-alpine-container |
||||
doas incus exec test-alpine-container -- /bin/ash |
||||
``` |
||||
Networking should work inside of container. |
||||
|
||||
Then, in target container (from root, `lxc-attach`/`lxc exec`) |
||||
|
||||
``` |
||||
apk add openssh doas |
||||
rc-update add sshd |
||||
rc-service sshd start |
||||
|
||||
adduser -g YOUR_USER YOUR_USER |
||||
adduser YOUR_USER wheel |
||||
``` |
||||
|
||||
Check IP of container with `ifconfig`, and then on host, |
||||
``` |
||||
ssh-copy-id CONTAINER_IP |
||||
ssh CONTAINER_IP |
||||
``` |
||||
|
||||
### Webdev |
||||
|
||||
#### Accessing dev sites running inside container |
||||
|
||||
On host, create new FF profile for that purpose only. In its `about:config`, enable `network.proxy.allow_hijacking_localhost` (so that requests to localhost are proxied too). |
||||
|
||||
##### With squid (HTTP/HTTPS only, ran as a service) |
||||
|
||||
In container: `doas apk add squid`, and edit `/etc/squid/squid/conf` accordingly |
||||
(most likely you'll only need to change local network definition to match the subnet shared between the host and the container). |
||||
|
||||
Then: |
||||
``` |
||||
doas rc-update add squid |
||||
doas rc-service squid start |
||||
``` |
||||
|
||||
(Note that squid requires devfs service to be running). |
||||
|
||||
Configure FF profile to use squid proxy running inside of container. |
||||
|
||||
It is not clear how to get websockets working with squid, information on the web is very sparse. |
||||
|
||||
##### With SSH tunnel (supports websockets) |
||||
|
||||
Alternatively, without any need to squid: |
||||
|
||||
* Configure container for tunnelling support (no idea why it is required for tunnelling to work: https://web.archive.org/web/20210125210954/https://blog.felixbrucker.com/2015/10/01/how-to-enable-tuntap-inside-lxc/): |
||||
* On LXC: add `lxc.cgroup.devices.allow = c 10:200 rwm` to your `~/.config/lxc/CONTAINERNAME.conf` file; |
||||
* On LXD: `doas lxc config set CONTAINERNAME raw.lxc="lxc.cgroup.devices.allow = c 10:200 rwm"`; |
||||
* (of course, restart the container after that); |
||||
* Enable `AllowTcpForwarding` and `PermitTunnel` in `/etc/ssh/sshd_config` (and of course restart `sshd`); |
||||
* On host, `ssh CONTAINER_IP -ND TUNNEL_PORT` (TUNNEL_PORT can be anything above 1024 to avoid requiring root privileges); |
||||
* On host, in target FF profile, configure proxy to use SOCKS v5 proxy on CONTAINER_IP:CONTAINER_PORT (leave HTTP / HTTPS proxy empty), and check "Proxy DNS when using Socks v5" checkbox. |
||||
* Note that it will only work as long as ssh tunnelling command on host is running. So you'll need to run it again after reboot etc. Or wrap it in a service for OpenRC. |
||||
|
||||
#### VS Code Remote |
||||
|
||||
Note that VS Code (and all related products) has a protection intended to prevent OSS variants from connecting to proprietary versions of VS code. |
||||
However, apparently, it is implemented in such a way that it prevents even different OSS products from connecting to each other. |
||||
Only "Code OSS" is packaged for Alpine (until https://gitlab.alpinelinux.org/alpine/aports/-/issues/14860 is implemented); |
||||
and only VSCodium has official server-side builds, so you'll need to use custom server-side builds with Code OSS. |
||||
|
||||
Steps to get it running, assuming that you already have keyring and key-based SSH auth (with non-RSA key) configured: |
||||
|
||||
In container (one of the sources: https://github.com/microsoft/vscode-remote-release/issues/6347): |
||||
``` |
||||
doas apk add gcompat libstdc++ curl bash git |
||||
``` |
||||
and enable `AllowTcpForwarding` and `PermitTunnel` in `/etc/ssh/sshd_config`. |
||||
|
||||
On host (where you intend to run IDE client): |
||||
|
||||
`doas apk add code-oss` |
||||
|
||||
> ##### Patch code-oss manifests |
||||
> |
||||
> (TODO: figure how to optimize this step without having to manually patch them after every update) |
||||
> |
||||
> In /usr/lib/code-uss/resources/app: |
||||
> |
||||
> * Update `product.json`: add `commit` field corresponding to the matching release of openvscode-server. |
||||
> |
||||
> Additionally, if there is no openvscode-server of the exact same version (for example, latest code-oss in aports at some point was 1.83.1, but openvscode-server was only released for 1.83.0): |
||||
> |
||||
> * Update `package.json`: update `version` and `distro` fields to refer to the compatible version https://github.com/gitpod-io/openvscode-server/releases ; |
||||
> * Update `product.json`: update `version` field. |
||||
|
||||
Run `code-oss`, add "Open Remote - SSH" extension by jeanp413. |
||||
|
||||
Go to its settings, and: |
||||
* Set "Server Download Url Template" to |
||||
`https://github.com/gitpod-io/openvscode-server/releases/download/openvscode-server-v${version}/openvscode-server-v${version}-${os}-${arch}.tar.gz` |
||||
(otherwise it will download VSCodium server-side builds by default). |
||||
* Set "Experimental: Server Binary Name" to `openvscode-server` (otherwise it will try to launch remote `code-server-oss` which does not exist and never will, taking its name from Code OSS `product.json`). |
||||
|
||||
You'll get remote button under the marketplace button. |
||||
Go there, add your host, right-click it, connect. |
||||
Connection should be successful, and you should see "connected to remote" on Code OSS main screen. |
||||
|
||||
> ##### Work around certain musl incompatibilities |
||||
> |
||||
> Some openvscode-server versions cannot start on Alpine (https://github.com/gitpod-io/openvscode-server/issues/534). |
||||
> |
||||
> In order to solve this, after Open Remote - SSH extension downloaded and unpacked REH binaries and displayed an error saying that it could not start the remote server: |
||||
> |
||||
> SSH into the container, go to `~/.vscode-server-oss/bin/COMMIT_NAME/`, |
||||
> ``` |
||||
> doas apk add ouch |
||||
> wget https://unofficial-builds.nodejs.org/download/release/v18.15.0/node-v18.15.0-linux-x64-musl.tar.xz |
||||
> ouch decompress https://unofficial-builds.nodejs.org/download/release/v18.15.0/node-v18.15.0-linux-x64-musl.tar.xz |
||||
> rm node |
||||
> cp node-v18.15.0-linux-x64-musl/bin/node . |
||||
> ``` |
||||
> (replacing 18.15.0 with the appropriate version from https://github.com/gitpod-io/openvscode-server/blob/main/build/checksums/nodejs.txt for your version of openvscode-server) and tell Code OSS to try again. |
||||
|
||||
"Open folder" should take you to the remote directory structure, allowing you to open projects hosted in container. |
||||
All code-related extensions will also work in remote context, isolated from the parent system and unable to affect it, |
||||
no matter what malicious npm packages get installed into container. |
||||
|
||||
### Docker |
||||
|
||||
For container terminal apps to be usable: |
||||
|
||||
``` |
||||
doas apk add ncurses-terminfo |
||||
``` |
||||
|
||||
#### (inside LXC) |
||||
|
||||
TODO once nesting in LXC works (reference: https://discuss.linuxcontainers.org/t/lxc-on-alpine-host-sys-fs-cgroup-is-not-mounted-into-unprivileged-alpine-guest/15026/1) |
||||
|
||||
#### (inside LXD) |
||||
|
||||
As simple as |
||||
``` |
||||
doas apk add docker |
||||
doas rc-update docker start |
||||
doas docker run hello-world |
||||
``` |
||||
in the guest. |
||||
|
||||
For networked docker containers, `doas lxc config edit CONTAINERNAME`, |
||||
add `linux.kernel_modules: br_netfilter` to the `config:` section, |
||||
and restart container (`doas lxc restart CONTAINERNAME`). |
||||
|
||||
## TODO |
||||
|
||||
* Fix internal mic |
||||
* Docker in containers ran by unprivileged users |
||||
* Make river usable |
||||
* Make waybar usable (+waybar fonts) |
||||
* nushell + starship instead of ash |
||||
* Mail client |
||||
* Fix call audio in firefox |
||||
|
@ -0,0 +1,170 @@ |
||||
# This is a default config file for bottom. All of the settings are commented |
||||
# out by default; if you wish to change them uncomment and modify as you see |
||||
# fit. |
||||
|
||||
# This group of options represents a command-line flag/option. Flags explicitly |
||||
# added when running (ie: btm -a) will override this config file if an option |
||||
# is also set here. |
||||
|
||||
[flags] |
||||
# Whether to hide the average cpu entry. |
||||
#hide_avg_cpu = false |
||||
# Whether to use dot markers rather than braille. |
||||
#dot_marker = false |
||||
# The update rate of the application. |
||||
#rate = 1000 |
||||
# Whether to put the CPU legend to the left. |
||||
#left_legend = false |
||||
# Whether to set CPU% on a process to be based on the total CPU or just current usage. |
||||
#current_usage = false |
||||
# Whether to group processes with the same name together by default. |
||||
#group_processes = false |
||||
# Whether to make process searching case sensitive by default. |
||||
#case_sensitive = false |
||||
# Whether to make process searching look for matching the entire word by default. |
||||
#whole_word = false |
||||
# Whether to make process searching use regex by default. |
||||
#regex = false |
||||
# Defaults to Celsius. Temperature is one of: |
||||
#temperature_type = "k" |
||||
#temperature_type = "f" |
||||
#temperature_type = "c" |
||||
#temperature_type = "kelvin" |
||||
#temperature_type = "fahrenheit" |
||||
#temperature_type = "celsius" |
||||
# The default time interval (in milliseconds). |
||||
#default_time_value = 60000 |
||||
# The time delta on each zoom in/out action (in milliseconds). |
||||
#time_delta = 15000 |
||||
# Hides the time scale. |
||||
#hide_time = false |
||||
# Override layout default widget |
||||
#default_widget_type = "proc" |
||||
#default_widget_count = 1 |
||||
# Use basic mode |
||||
#basic = false |
||||
# Use the old network legend style |
||||
#use_old_network_legend = false |
||||
# Remove space in tables |
||||
#hide_table_gap = false |
||||
# Show the battery widgets |
||||
#battery = false |
||||
# Disable mouse clicks |
||||
#disable_click = false |
||||
# Built-in themes. Valid values are "default", "default-light", "gruvbox", "gruvbox-light", "nord", "nord-light" |
||||
#color = "default" |
||||
# Show memory values in the processes widget as values by default |
||||
#mem_as_value = false |
||||
# Show tree mode by default in the processes widget. |
||||
#tree = false |
||||
# Shows an indicator in table widgets tracking where in the list you are. |
||||
#show_table_scroll_position = false |
||||
# Show processes as their commands by default in the process widget. |
||||
#process_command = false |
||||
# Displays the network widget with binary prefixes. |
||||
#network_use_binary_prefix = false |
||||
# Displays the network widget using bytes. |
||||
#network_use_bytes = false |
||||
# Displays the network widget with a log scale. |
||||
#network_use_log = false |
||||
# Hides advanced options to stop a process on Unix-like systems. |
||||
#disable_advanced_kill = false |
||||
|
||||
# These are all the components that support custom theming. Note that colour support |
||||
# will depend on terminal support. |
||||
|
||||
#[colors] # Uncomment if you want to use custom colors |
||||
# Represents the colour of table headers (processes, CPU, disks, temperature). |
||||
#table_header_color="LightBlue" |
||||
# Represents the colour of the label each widget has. |
||||
#widget_title_color="Gray" |
||||
# Represents the average CPU color. |
||||
#avg_cpu_color="Red" |
||||
# Represents the colour the core will use in the CPU legend and graph. |
||||
#cpu_core_colors=["LightMagenta", "LightYellow", "LightCyan", "LightGreen", "LightBlue", "LightRed", "Cyan", "Green", "Blue", "Red"] |
||||
# Represents the colour RAM will use in the memory legend and graph. |
||||
#ram_color="LightMagenta" |
||||
# Represents the colour SWAP will use in the memory legend and graph. |
||||
#swap_color="LightYellow" |
||||
# Represents the colour rx will use in the network legend and graph. |
||||
#rx_color="LightCyan" |
||||
# Represents the colour tx will use in the network legend and graph. |
||||
#tx_color="LightGreen" |
||||
# Represents the colour of the border of unselected widgets. |
||||
#border_color="Gray" |
||||
# Represents the colour of the border of selected widgets. |
||||
#highlighted_border_color="LightBlue" |
||||
# Represents the colour of most text. |
||||
#text_color="Gray" |
||||
# Represents the colour of text that is selected. |
||||
#selected_text_color="Black" |
||||
# Represents the background colour of text that is selected. |
||||
#selected_bg_color="LightBlue" |
||||
# Represents the colour of the lines and text of the graph. |
||||
#graph_color="Gray" |
||||
# Represents the colours of the battery based on charge |
||||
#high_battery_color="green" |
||||
#medium_battery_color="yellow" |
||||
#low_battery_color="red" |
||||
|
||||
# Layout - layouts follow a pattern like this: |
||||
# [[row]] represents a row in the application. |
||||
# [[row.child]] represents either a widget or a column. |
||||
# [[row.child.child]] represents a widget. |
||||
# |
||||
# All widgets must have the type value set to one of ["cpu", "mem", "proc", "net", "temp", "disk", "empty"]. |
||||
# All layout components have a ratio value - if this is not set, then it defaults to 1. |
||||
# The default widget layout: |
||||
#[[row]] |
||||
# ratio=30 |
||||
# [[row.child]] |
||||
# type="cpu" |
||||
#[[row]] |
||||
# ratio=40 |
||||
# [[row.child]] |
||||
# ratio=4 |
||||
# type="mem" |
||||
# [[row.child]] |
||||
# ratio=3 |
||||
# [[row.child.child]] |
||||
# type="temp" |
||||
# [[row.child.child]] |
||||
# type="disk" |
||||
#[[row]] |
||||
# ratio=30 |
||||
# [[row.child]] |
||||
# type="net" |
||||
# [[row.child]] |
||||
# type="proc" |
||||
# default=true |
||||
|
||||
|
||||
# Filters - you can hide specific temperature sensors, network interfaces, and disks using filters. This is admittedly |
||||
# a bit hard to use as of now, and there is a planned in-app interface for managing this in the future: |
||||
#[disk_filter] |
||||
#is_list_ignored = true |
||||
#list = ["/dev/sda\\d+", "/dev/nvme0n1p2"] |
||||
#regex = true |
||||
#case_sensitive = false |
||||
#whole_word = false |
||||
|
||||
#[mount_filter] |
||||
#is_list_ignored = true |
||||
#list = ["/mnt/.*", "/boot"] |
||||
#regex = true |
||||
#case_sensitive = false |
||||
#whole_word = false |
||||
|
||||
#[temp_filter] |
||||
#is_list_ignored = true |
||||
#list = ["cpu", "wifi"] |
||||
#regex = false |
||||
#case_sensitive = false |
||||
#whole_word = false |
||||
|
||||
#[net_filter] |
||||
#is_list_ignored = true |
||||
#list = ["virbr0.*"] |
||||
#regex = true |
||||
#case_sensitive = false |
||||
#whole_word = false |
@ -0,0 +1,94 @@ |
||||
alsa_soundcard pipewire |
||||
cli_add_playlist_name Default |
||||
deadbeef_version 1.9.4 |
||||
filechooser.lastdir file:///mnt/storage/lossless/lossless/Yendri/Yendri%20-%20Destination%20Oblivion |
||||
gtkui.columns.playlist [{"title":"♫","id":"1","format":"%playstatus%","sort_format":"","size":"50","align":"0","color_override":"0","color":"#ff000000"},{"title":"Artist / Album","id":"-1","format":"$if(%artist%,%artist%,Unknown Artist)[ - %album%]","sort_format":"","size":"150","align":"0","color_override":"0","color":"#ff000000"},{"title":"Track No","id":"-1","format":"%tracknumber%","sort_format":"","size":"50","align":"1","color_override":"0","color":"#ff000000"},{"title":"Title","id":"-1","format":"%title%","sort_format":"","size":"352","align":"0","color_override":"0","color":"#ff000000"},{"title":"Duration","id":"-1","format":"%length%","sort_format":"","size":"50","align":"0","color_override":"0","color":"#ff000000"},{"title":"Year","id":"-1","format":"%year%","sort_format":"","size":"100","align":"0","color_override":"0","color":"#ff2e3436"}] |
||||
gtkui.columns.search [{"title":"Artist / Album","id":"-1","format":"$if(%artist%,%artist%,Unknown Artist)[ - %album%]","sort_format":"","size":"150","align":"0","color_override":"0","color":"#ff000000"},{"title":"Track No","id":"-1","format":"%tracknumber%","sort_format":"","size":"50","align":"1","color_override":"0","color":"#ff000000"},{"title":"Title","id":"-1","format":"%title%","sort_format":"","size":"150","align":"0","color_override":"0","color":"#ff000000"},{"title":"Duration","id":"-1","format":"%length%","sort_format":"","size":"50","align":"0","color_override":"0","color":"#ff000000"}] |
||||
gtkui.layout.1.9.0 {"type":"vbox","legacy_params":" expand=\"0 1\" fill=\"1 1\" homogeneous=0","children":[{"type":"hbox","legacy_params":" expand=\"0 1 0\" fill=\"1 1 1\" homogeneous=0","children":[{"type":"playtb"},{"type":"seekbar"},{"type":"volumebar","settings":{"scale":"db"}}]},{"type":"tabbed_playlist","legacy_params":" hideheaders=0 width=748"}]} |
||||
gtkui.playlist.group_by_tf |
||||
gtkui.search.group_by_tf |
||||
gtkui.statusbar.visible 1 |
||||
gtkui.statusbar_seltime 1 |
||||
gtkui.tabscroll 0 |
||||
gtkui.titlebar_playing_tf DeaDBeeF - %artist% - %title% |
||||
gtkui.titlebar_stopped_tf DeaDBeeF |
||||
hotkey.key01 "Ctrl f" 0 0 find |
||||
hotkey.key02 "Ctrl o" 0 0 open_files |
||||
hotkey.key03 "Ctrl q" 0 0 quit |
||||
hotkey.key04 "Ctrl n" 0 0 new_playlist |
||||
hotkey.key05 "Ctrl a" 0 0 select_all |
||||
hotkey.key06 "Escape" 0 0 deselect_all |
||||
hotkey.key07 "Ctrl m" 0 0 toggle_stop_after_current |
||||
hotkey.key08 "Ctrl j" 0 0 jump_to_current_track |
||||
hotkey.key09 "F1" 0 0 help |
||||
hotkey.key10 "Delete" 1 0 remove_from_playlist |
||||
hotkey.key11 "Ctrl w" 0 0 remove_current_playlist |
||||
hotkey.key12 "Alt Return" 1 0 track_properties |
||||
hotkey.key13 "Return" 0 0 play |
||||
hotkey.key14 "Ctrl p" 0 0 toggle_pause |
||||
hotkey.key15 "Alt 1" 0 0 playlist1 |
||||
hotkey.key16 "Alt 2" 0 0 playlist2 |
||||
hotkey.key17 "Alt 3" 0 0 playlist3 |
||||
hotkey.key18 "Alt 4" 0 0 playlist4 |
||||
hotkey.key19 "Alt 5" 0 0 playlist5 |
||||
hotkey.key20 "Alt 6" 0 0 playlist6 |
||||
hotkey.key21 "Alt 7" 0 0 playlist7 |
||||
hotkey.key22 "Alt 8" 0 0 playlist8 |
||||
hotkey.key23 "Alt 9" 0 0 playlist9 |
||||
hotkey.key24 "Alt 0" 0 0 playlist10 |
||||
hotkey.key25 "z" 0 0 prev |
||||
hotkey.key26 "x" 0 0 play |
||||
hotkey.key27 "c" 0 0 toggle_pause |
||||
hotkey.key28 "v" 0 0 stop |
||||
hotkey.key29 "b" 0 0 next |
||||
hotkey.key30 "n" 0 0 playback_random |
||||
hotkey.key31 "Ctrl k" 0 0 toggle_stop_after_album |
||||
hotkey.key32 "Ctrl Tab" 0 0 next_playlist |
||||
hotkey.key33 "Shift Ctrl Tab" 0 0 prev_playlist |
||||
hotkey.key34 "s" 0 0 volume_down |
||||
hotkey.key35 "w" 0 0 volume_up |
||||
hotkeys_created 1 |
||||
mainwin.geometry.h 300 |
||||
mainwin.geometry.maximized 1 |
||||
mainwin.geometry.w 500 |
||||
mainwin.geometry.x 10 |
||||
mainwin.geometry.y 10 |
||||
network.proxy.port 8080 |
||||
output_plugin alsa |
||||
playback.loop 1 |
||||
playback.volume.normalized 0.7079458 |
||||
playlist.current 3 |
||||
playlist.cursor.0 15 |
||||
playlist.cursor.1 1 |
||||
playlist.cursor.2 55 |
||||
playlist.cursor.3 6 |
||||
playlist.cursor.4 0 |
||||
playlist.scroll.0 -15 |
||||
playlist.scroll.1 0 |
||||
playlist.scroll.2 137 |
||||
playlist.scroll.3 -18 |
||||
playlist.scroll.4 0 |
||||
playlist.scroll.cursorfollowplayback 1 |
||||
playlist.tab.00000 Dr. Chesky |
||||
playlist.tab.00001 New Playlist |
||||
playlist.tab.00002 New Playlist (1) |
||||
playlist.tab.00003 New Playlist (2) |
||||
prefwin.geometry.h 588 |
||||
prefwin.geometry.maximized 1 |
||||
prefwin.geometry.w 784 |
||||
prefwin.geometry.x 10 |
||||
prefwin.geometry.y 10 |
||||
resume.paused 0 |
||||
resume.playlist -1 |
||||
resume.position -1.000000 |
||||
resume.track -1 |
||||
streamer.override_samplerate 0 |
||||
streamer.samplerate 88200 |
||||
streamer.samplerate_mult_44 88200 |
||||
streamer.samplerate_mult_48 96000 |
||||
streamer.use_dependent_samplerate 1 |
||||
trkproperties.geometry.h 400 |
||||
trkproperties.geometry.maximized 1 |
||||
trkproperties.geometry.w 348 |
||||
trkproperties.geometry.x 26 |
||||
trkproperties.geometry.y 23 |
@ -0,0 +1,26 @@ |
||||
supereq 0 { |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
0.000000 |
||||
} |
||||
SRC 1 { |
||||
48000.000000 |
||||
2 |
||||
1 |
||||
} |
@ -0,0 +1,2 @@ |
||||
[General] |
||||
contrastOpacity=188 |
@ -0,0 +1,195 @@ |
||||
# -*- conf -*- |
||||
|
||||
# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) |
||||
# term=foot (or xterm-256color if built with -Dterminfo=disabled) |
||||
# login-shell=no |
||||
|
||||
# app-id=foot |
||||
# title=foot |
||||
# locked-title=no |
||||
|
||||
font=monospace:size=12 |
||||
# font-bold=<bold variant of regular font> |
||||
# font-italic=<italic variant of regular font> |
||||
# font-bold-italic=<bold+italic variant of regular font> |
||||
# line-height=<font metrics> |
||||
# letter-spacing=0 |
||||
# horizontal-letter-offset=0 |
||||
# vertical-letter-offset=0 |
||||
# underline-offset=<font metrics> |
||||
# box-drawings-uses-font-glyphs=no |
||||
# dpi-aware=auto |
||||
|
||||
# initial-window-size-pixels=700x500 # Or, |
||||
# initial-window-size-chars=<COLSxROWS> |
||||
# initial-window-mode=windowed |
||||
# pad=2x2 # optionally append 'center' |
||||
# resize-delay-ms=100 |
||||
|
||||
# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body} |
||||
|
||||
# bold-text-in-bright=no |
||||
# word-delimiters=,│`|:"'()[]{}<> |
||||
# selection-target=primary |
||||
# workers=<number of logical CPUs> |
||||
|
||||
[environment] |
||||
# name=value |
||||
|
||||
[bell] |
||||
# urgent=no |
||||
# notify=no |
||||
# command= |
||||
# command-focused=no |
||||
|
||||
[scrollback] |
||||
# lines=1000 |
||||
# multiplier=3.0 |
||||
# indicator-position=relative |
||||
# indicator-format= |
||||
|
||||
[url] |
||||
# launch=xdg-open ${url} |
||||
# label-letters=sadfjklewcmpgh |
||||
# osc8-underline=url-mode |
||||
# protocols=http, https, ftp, ftps, file, gemini, gopher |
||||
# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[] |
||||
|
||||
[cursor] |
||||
# style=block |
||||
# color=<inverse foreground/background> |
||||
# blink=no |
||||
# beam-thickness=1.5 |
||||
# underline-thickness=<font underline thickness> |
||||
|
||||
[mouse] |
||||
# hide-when-typing=no |
||||
# alternate-scroll-mode=yes |
||||
|
||||
[colors] |
||||
# alpha=1.0 |
||||
# foreground=dcdccc |
||||
# background=111111 |
||||
|
||||
## Normal/regular colors (color palette 0-7) |
||||
# regular0=222222 # black |
||||
# regular1=cc9393 # red |
||||
# regular2=7f9f7f # green |
||||
# regular3=d0bf8f # yellow |
||||
# regular4=6ca0a3 # blue |
||||
# regular5=dc8cc3 # magenta |
||||
# regular6=93e0e3 # cyan |
||||
# regular7=dcdccc # white |
||||
|
||||
## Bright colors (color palette 8-15) |
||||
# bright0=666666 # bright black |
||||
# bright1=dca3a3 # bright red |
||||
# bright2=bfebbf # bright green |
||||
# bright3=f0dfaf # bright yellow |
||||
# bright4=8cd0d3 # bright blue |
||||
# bright5=fcace3 # bright magenta |
||||
# bright6=b3ffff # bright cyan |
||||
# bright7=ffffff # bright white |
||||
|
||||
## dimmed colors (see foot.ini(5) man page) |
||||
# dim0=<not set> |
||||
# ... |
||||
# dim7=<not-set> |
||||
|
||||
## The remaining 256-color palette |
||||
# 16 = <256-color palette #16> |
||||
# ... |
||||
# 255 = <256-color palette #255> |
||||
|
||||
## Misc colors |
||||
# selection-foreground=<inverse foreground/background> |
||||
# selection-background=<inverse foreground/background> |
||||
# jump-labels=<regular0> <regular3> # black-on-yellow |
||||
# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue |
||||
# search-box-no-match=<regular0> <regular1> # black-on-red |
||||
# search-box-match=<regular0> <regular3> # black-on-yellow |
||||
# urls=<regular3> |
||||
|
||||
[csd] |
||||
# preferred=server |
||||
# size=26 |
||||
# font=<primary font> |
||||
# color=<foreground color> |
||||
# hide-when-typing=no |
||||
# border-width=0 |
||||
# border-color=<csd.color> |
||||
# button-width=26 |
||||
# button-color=<background color> |
||||
# button-minimize-color=<regular4> |
||||
# button-maximize-color=<regular2> |
||||
# button-close-color=<regular1> |
||||
|
||||
[key-bindings] |
||||
# scrollback-up-page=Shift+Page_Up |
||||
# scrollback-up-half-page=none |
||||
# scrollback-up-line=none |
||||
# scrollback-down-page=Shift+Page_Down |
||||
# scrollback-down-half-page=none |
||||
# scrollback-down-line=none |
||||
# clipboard-copy=Control+Shift+c XF86Copy |
||||
# clipboard-paste=Control+Shift+v XF86Paste |
||||
# primary-paste=Shift+Insert |
||||
# search-start=Control+Shift+r |
||||
# font-increase=Control+plus Control+equal Control+KP_Add |
||||
# font-decrease=Control+minus Control+KP_Subtract |
||||
# font-reset=Control+0 Control+KP_0 |
||||
# spawn-terminal=Control+Shift+n |
||||
# minimize=none |
||||
# maximize=none |
||||
# fullscreen=none |
||||
# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none |
||||
# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none |
||||
# pipe-selected=[xargs -r firefox] none |
||||
# show-urls-launch=Control+Shift+u |
||||
# show-urls-copy=none |
||||
# show-urls-persistent=none |
||||
# prompt-prev=Control+Shift+z |
||||
# prompt-next=Control+Shift+x |
||||
# unicode-input=none |
||||
# noop=none |
||||
|
||||
[search-bindings] |
||||
# cancel=Control+g Control+c Escape |
||||
# commit=Return |
||||
# find-prev=Control+r |
||||
# find-next=Control+s |
||||
# cursor-left=Left Control+b |
||||
# cursor-left-word=Control+Left Mod1+b |
||||
# cursor-right=Right Control+f |
||||
# cursor-right-word=Control+Right Mod1+f |
||||
# cursor-home=Home Control+a |
||||
# cursor-end=End Control+e |
||||
# delete-prev=BackSpace |
||||
# delete-prev-word=Mod1+BackSpace Control+BackSpace |
||||
# delete-next=Delete |
||||
# delete-next-word=Mod1+d Control+Delete |
||||
# extend-to-word-boundary=Control+w |
||||
# extend-to-next-whitespace=Control+Shift+w |
||||
# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste |
||||
# primary-paste=Shift+Insert |
||||
# unicode-input=none |
||||
|
||||
[url-bindings] |
||||
# cancel=Control+g Control+c Control+d Escape |
||||
# toggle-url-visible=t |
||||
|
||||
[text-bindings] |
||||
# \x03=Mod4+c # Map Super+c -> Ctrl+c |
||||
|
||||
[mouse-bindings] |
||||
# selection-override-modifiers=Shift |
||||
# primary-paste=BTN_MIDDLE |
||||
# select-begin=BTN_LEFT |
||||
# select-begin-block=Control+BTN_LEFT |
||||
# select-extend=BTN_RIGHT |
||||
# select-extend-character-wise=Control+BTN_RIGHT |
||||
# select-word=BTN_LEFT-2 |
||||
# select-word-whitespace=Control+BTN_LEFT-2 |
||||
# select-row=BTN_LEFT-3 |
||||
|
||||
# vim: ft=dosini |
@ -0,0 +1,3 @@ |
||||
; gedit GtkAccelMap rc-file -*- scheme -*- |
||||
; this file is an automated accelerator map dump |
||||
; |
@ -0,0 +1,42 @@ |
||||
[org/gnome/desktop/interface] |
||||
cursor-theme='Adwaita' |
||||
|
||||
[org/gtk/settings/file-chooser] |
||||
window-position=(0, 0) |
||||
window-size=(1128, 1171) |
||||
date-format='regular' |
||||
location-mode='path-bar' |
||||
show-hidden=true |
||||
show-size-column=true |
||||
show-type-column=true |
||||
sidebar-width=171 |
||||
sort-column='name' |
||||
sort-directories-first=false |
||||
sort-order='ascending' |
||||
type-format='category' |
||||
|
||||
[org/gnome/gedit/plugins] |
||||
active-plugins=['spell', 'docinfo', 'filebrowser', 'modelines', 'sort', 'openlinks'] |
||||
|
||||
[org/gnome/gedit/preferences/ui] |
||||
show-tabs-mode='auto' |
||||
|
||||
side-panel-visible=false |
||||
|
||||
[org/gnome/gedit/state/window] |
||||
bottom-panel-size=140 |
||||
side-panel-active-page='GeditWindowDocumentsPanel' |
||||
side-panel-size=200 |
||||
size=(1128, 1091) |
||||
state=0 |
||||
|
||||
[org/gnome/gedit/state/file-chooser] |
||||
open-recent=true |
||||
|
||||
[com/github/johnfactotum/Foliate/library] |
||||
width=1892 |
||||
height=1091 |
||||
maximized=true |
||||
|
||||
[org/gnome/desktop/wm/preferences] |
||||
button-layout='' |
@ -0,0 +1,2 @@ |
||||
[Settings] |
||||
gtk-primary-button-warps-slider = false |
@ -0,0 +1,10 @@ |
||||
default-remote: local |
||||
remotes: |
||||
images: |
||||
addr: https://images.linuxcontainers.org |
||||
protocol: simplestreams |
||||
public: true |
||||
local: |
||||
addr: unix:// |
||||
public: false |
||||
aliases: {} |
@ -0,0 +1,17 @@ |
||||
lxc.net.0.type = veth |
||||
lxc.net.0.flags = up |
||||
lxc.net.0.link = br0 |
||||
# lxc.net.0.name = eth1 |
||||
lxc.net.0.ipv4.address = 10.157.1.2/24 10.157.1.255 |
||||
lxc.net.0.ipv4.gateway = 10.157.1.1 |
||||
lxc.net.0.veth.pair = veth-if-0 |
||||
lxc.idmap = u 0 10000000 500000 |
||||
lxc.idmap = g 0 10000000 500000 |
||||
|
||||
lxc.include = /usr/share/lxc/config/nesting.conf |
||||
lxc.apparmor.allow_nesting = 1 |
||||
lxc.seccomp.allow_nesting = 1 |
||||
lxc.mount.auto = proc sys |
||||
lxc.mount.auto = cgroup:rw:force |
||||
|
||||
|
@ -0,0 +1,17 @@ |
||||
lxc.net.0.type = veth |
||||
lxc.net.0.flags = down |
||||
lxc.net.0.link = br0 |
||||
# lxc.net.0.name = eth1 |
||||
lxc.net.0.ipv4.address = 10.157.1.3/24 10.157.1.255 |
||||
lxc.net.0.ipv4.gateway = 10.157.1.1 |
||||
lxc.net.0.veth.pair = veth-if-0 |
||||
lxc.idmap = u 0 10500000 500000 |
||||
lxc.idmap = g 0 10500000 500000 |
||||
|
||||
lxc.include = /usr/share/lxc/config/nesting.conf |
||||
lxc.apparmor.allow_nesting = 1 |
||||
lxc.seccomp.allow_nesting = 1 |
||||
lxc.mount.auto = proc sys |
||||
lxc.mount.auto = cgroup:rw:force |
||||
|
||||
|
@ -0,0 +1,9 @@ |
||||
lxc.idmap = u 0 11500000 500000 |
||||
lxc.idmap = g 0 11500000 500000 |
||||
|
||||
lxc.include = /usr/share/lxc/config/nesting.conf |
||||
lxc.apparmor.allow_nesting = 1 |
||||
lxc.seccomp.allow_nesting = 1 |
||||
lxc.mount.auto = cgroup:rw:force |
||||
|
||||
|
@ -0,0 +1,18 @@ |
||||
lxc.net.0.type = veth |
||||
lxc.net.0.flags = up |
||||
lxc.net.0.link = br0 |
||||
# lxc.net.0.name = eth1 |
||||
lxc.net.0.ipv4.address = 10.157.1.5/24 10.157.1.255 |
||||
lxc.net.0.ipv4.gateway = 10.157.1.1 |
||||
lxc.net.0.veth.pair = veth-if-0 |
||||
lxc.idmap = u 0 14000000 500000 |
||||
lxc.idmap = g 0 14000000 500000 |
||||
|
||||
#lxc.include = /usr/share/lxc/config/nesting.conf |
||||
lxc.mount.entry = proc dev/.lxc/proc proc create=dir,optional 0 0 |
||||
lxc.mount.entry = sys dev/.lxc/sys sysfs create=dir,optional 0 0 |
||||
#lxc.apparmor.allow_nesting = 1 |
||||
lxc.seccomp.allow_nesting = 1 |
||||
lxc.mount.auto = cgroup:rw:force |
||||
|
||||
|
@ -0,0 +1,4 @@ |
||||
lxc.idmap = u 0 11000000 500000 |
||||
lxc.idmap = g 0 11000000 500000 |
||||
|
||||
lxc.mount.entry = /home/inga/Downloads mnt/Dowbloads none ro,bind 0 0 |
@ -0,0 +1,4 @@ |
||||
{ |
||||
"Alt-/": "lua:comment.comment", |
||||
"CtrlUnderscore": "lua:comment.comment" |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"scrollbar": true, |
||||
"softwrap": true, |
||||
"wordwrap": true |
||||
} |
@ -0,0 +1,10 @@ |
||||
[Default Applications] |
||||
x-scheme-handler/tg=org.telegram.desktop.desktop |
||||
x-scheme-handler/mailto=userapp-Thunderbird-9OGUS1.desktop |
||||
message/rfc822=userapp-Thunderbird-9OGUS1.desktop |
||||
x-scheme-handler/mid=userapp-Thunderbird-9OGUS1.desktop |
||||
|
||||
[Added Associations] |
||||
x-scheme-handler/tg=userapp-Telegram Desktop-R78RR1.desktop;org.telegram.desktop.desktop; |
||||
x-scheme-handler/mailto=userapp-Thunderbird-9OGUS1.desktop; |
||||
x-scheme-handler/mid=userapp-Thunderbird-9OGUS1.desktop; |
@ -0,0 +1,864 @@ |
||||
# See this wiki page for more info: |
||||
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info |
||||
print_info() { |
||||
info title |
||||
info underline |
||||
|
||||
info "OS" distro |
||||
info "Host" model |
||||
info "Kernel" kernel |
||||
info "Uptime" uptime |
||||
info "Packages" packages |
||||
info "Shell" shell |
||||
info "Resolution" resolution |
||||
info "DE" de |
||||
info "WM" wm |
||||
info "WM Theme" wm_theme |
||||
info "Theme" theme |
||||
info "Icons" icons |
||||
info "Terminal" term |
||||
info "Terminal Font" term_font |
||||
info "CPU" cpu |
||||
info "GPU" gpu |
||||
info "Memory" memory |
||||
|
||||
# info "GPU Driver" gpu_driver # Linux/macOS only |
||||
# info "CPU Usage" cpu_usage |
||||
# info "Disk" disk |
||||
# info "Battery" battery |
||||
# info "Font" font |
||||
# info "Song" song |
||||
# [[ "$player" ]] && prin "Music Player" "$player" |
||||
# info "Local IP" local_ip |
||||
# info "Public IP" public_ip |
||||
# info "Users" users |
||||
# info "Locale" locale # This only works on glibc systems. |
||||
|
||||
info cols |
||||
} |
||||
|
||||
# Title |
||||
|
||||
|
||||
# Hide/Show Fully qualified domain name. |
||||
# |
||||
# Default: 'off' |
||||
# Values: 'on', 'off' |
||||
# Flag: --title_fqdn |
||||
title_fqdn="off" |
||||
|
||||
|
||||
# Kernel |
||||
|
||||
|
||||
# Shorten the output of the kernel function. |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --kernel_shorthand |
||||
# Supports: Everything except *BSDs (except PacBSD and PC-BSD) |
||||
# |
||||
# Example: |
||||
# on: '4.8.9-1-ARCH' |
||||
# off: 'Linux 4.8.9-1-ARCH' |
||||
kernel_shorthand="on" |
||||
|
||||
|
||||
# Distro |
||||
|
||||
|
||||
# Shorten the output of the distro function |
||||
# |
||||
# Default: 'off' |
||||
# Values: 'on', 'tiny', 'off' |
||||
# Flag: --distro_shorthand |
||||
# Supports: Everything except Windows and Haiku |
||||
distro_shorthand="off" |
||||
|
||||
# Show/Hide OS Architecture. |
||||
# Show 'x86_64', 'x86' and etc in 'Distro:' output. |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --os_arch |
||||
# |
||||
# Example: |
||||
# on: 'Arch Linux x86_64' |
||||
# off: 'Arch Linux' |
||||
os_arch="on" |
||||
|
||||
|
||||
# Uptime |
||||
|
||||
|
||||
# Shorten the output of the uptime function |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'tiny', 'off' |
||||
# Flag: --uptime_shorthand |
||||
# |
||||
# Example: |
||||
# on: '2 days, 10 hours, 3 mins' |
||||
# tiny: '2d 10h 3m' |
||||
# off: '2 days, 10 hours, 3 minutes' |
||||
uptime_shorthand="on" |
||||
|
||||
|
||||
# Memory |
||||
|
||||
|
||||
# Show memory pecentage in output. |
||||
# |
||||
# Default: 'off' |
||||
# Values: 'on', 'off' |
||||
# Flag: --memory_percent |
||||
# |
||||
# Example: |
||||
# on: '1801MiB / 7881MiB (22%)' |
||||
# off: '1801MiB / 7881MiB' |
||||
memory_percent="off" |
||||
|
||||
# Change memory output unit. |
||||
# |
||||
# Default: 'mib' |
||||
# Values: 'kib', 'mib', 'gib' |
||||
# Flag: --memory_unit |
||||
# |
||||
# Example: |
||||
# kib '1020928KiB / 7117824KiB' |
||||
# mib '1042MiB / 6951MiB' |
||||
# gib: ' 0.98GiB / 6.79GiB' |
||||
memory_unit="mib" |
||||
|
||||
|
||||
# Packages |
||||
|
||||
|
||||
# Show/Hide Package Manager names. |
||||
# |
||||
# Default: 'tiny' |
||||
# Values: 'on', 'tiny' 'off' |
||||
# Flag: --package_managers |
||||
# |
||||
# Example: |
||||
# on: '998 (pacman), 8 (flatpak), 4 (snap)' |
||||
# tiny: '908 (pacman, flatpak, snap)' |
||||
# off: '908' |
||||
package_managers="on" |
||||
|
||||
|
||||
# Shell |
||||
|
||||
|
||||
# Show the path to $SHELL |
||||
# |
||||
# Default: 'off' |
||||
# Values: 'on', 'off' |
||||
# Flag: --shell_path |
||||
# |
||||
# Example: |
||||
# on: '/bin/bash' |
||||
# off: 'bash' |
||||
shell_path="off" |
||||
|
||||
# Show $SHELL version |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --shell_version |
||||
# |
||||
# Example: |
||||
# on: 'bash 4.4.5' |
||||
# off: 'bash' |
||||
shell_version="on" |
||||
|
||||
|
||||
# CPU |
||||
|
||||
|
||||
# CPU speed type |
||||
# |
||||
# Default: 'bios_limit' |
||||
# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'. |
||||
# Flag: --speed_type |
||||
# Supports: Linux with 'cpufreq' |
||||
# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value. |
||||
speed_type="bios_limit" |
||||
|
||||
# CPU speed shorthand |
||||
# |
||||
# Default: 'off' |
||||
# Values: 'on', 'off'. |
||||
# Flag: --speed_shorthand |
||||
# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz |
||||
# |
||||
# Example: |
||||
# on: 'i7-6500U (4) @ 3.1GHz' |
||||
# off: 'i7-6500U (4) @ 3.100GHz' |
||||
speed_shorthand="off" |
||||
|
||||
# Enable/Disable CPU brand in output. |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --cpu_brand |
||||
# |
||||
# Example: |
||||
# on: 'Intel i7-6500U' |
||||
# off: 'i7-6500U (4)' |
||||
cpu_brand="on" |
||||
|
||||
# CPU Speed |
||||
# Hide/Show CPU speed. |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --cpu_speed |
||||
# |
||||
# Example: |
||||
# on: 'Intel i7-6500U (4) @ 3.1GHz' |
||||
# off: 'Intel i7-6500U (4)' |
||||
cpu_speed="on" |
||||
|
||||
# CPU Cores |
||||
# Display CPU cores in output |
||||
# |
||||
# Default: 'logical' |
||||
# Values: 'logical', 'physical', 'off' |
||||
# Flag: --cpu_cores |
||||
# Support: 'physical' doesn't work on BSD. |
||||
# |
||||
# Example: |
||||
# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores) |
||||
# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores) |
||||
# off: 'Intel i7-6500U @ 3.1GHz' |
||||
cpu_cores="logical" |
||||
|
||||
# CPU Temperature |
||||
# Hide/Show CPU temperature. |
||||
# Note the temperature is added to the regular CPU function. |
||||
# |
||||
# Default: 'off' |
||||
# Values: 'C', 'F', 'off' |
||||
# Flag: --cpu_temp |
||||
# Supports: Linux, BSD |
||||
# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable |
||||
# coretemp kernel module. This only supports newer Intel processors. |
||||
# |
||||
# Example: |
||||
# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]' |
||||
# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]' |
||||
# off: 'Intel i7-6500U (4) @ 3.1GHz' |
||||
cpu_temp="off" |
||||
|
||||
|
||||
# GPU |
||||
|
||||
|
||||
# Enable/Disable GPU Brand |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --gpu_brand |
||||
# |
||||
# Example: |
||||
# on: 'AMD HD 7950' |
||||
# off: 'HD 7950' |
||||
gpu_brand="on" |
||||
|
||||
# Which GPU to display |
||||
# |
||||
# Default: 'all' |
||||
# Values: 'all', 'dedicated', 'integrated' |
||||
# Flag: --gpu_type |
||||
# Supports: Linux |
||||
# |
||||
# Example: |
||||
# all: |
||||
# GPU1: AMD HD 7950 |
||||
# GPU2: Intel Integrated Graphics |
||||
# |
||||
# dedicated: |
||||
# GPU1: AMD HD 7950 |
||||
# |
||||
# integrated: |
||||
# GPU1: Intel Integrated Graphics |
||||
gpu_type="all" |
||||
|
||||
|
||||
# Resolution |
||||
|
||||
|
||||
# Display refresh rate next to each monitor |
||||
# Default: 'off' |
||||
# Values: 'on', 'off' |
||||
# Flag: --refresh_rate |
||||
# Supports: Doesn't work on Windows. |
||||
# |
||||
# Example: |
||||
# on: '1920x1080 @ 60Hz' |
||||
# off: '1920x1080' |
||||
refresh_rate="off" |
||||
|
||||
|
||||
# Gtk Theme / Icons / Font |
||||
|
||||
|
||||
# Shorten output of GTK Theme / Icons / Font |
||||
# |
||||
# Default: 'off' |
||||
# Values: 'on', 'off' |
||||
# Flag: --gtk_shorthand |
||||
# |
||||
# Example: |
||||
# on: 'Numix, Adwaita' |
||||
# off: 'Numix [GTK2], Adwaita [GTK3]' |
||||
gtk_shorthand="off" |
||||
|
||||
|
||||
# Enable/Disable gtk2 Theme / Icons / Font |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --gtk2 |
||||
# |
||||
# Example: |
||||
# on: 'Numix [GTK2], Adwaita [GTK3]' |
||||
# off: 'Adwaita [GTK3]' |
||||
gtk2="on" |
||||
|
||||
# Enable/Disable gtk3 Theme / Icons / Font |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --gtk3 |
||||
# |
||||
# Example: |
||||
# on: 'Numix [GTK2], Adwaita [GTK3]' |
||||
# off: 'Numix [GTK2]' |
||||
gtk3="on" |
||||
|
||||
|
||||
# IP Address |
||||
|
||||
|
||||
# Website to ping for the public IP |
||||
# |
||||
# Default: 'http://ident.me' |
||||
# Values: 'url' |
||||
# Flag: --ip_host |
||||
public_ip_host="http://ident.me" |
||||
|
||||
# Public IP timeout. |
||||
# |
||||
# Default: '2' |
||||
# Values: 'int' |
||||
# Flag: --ip_timeout |
||||
public_ip_timeout=2 |
||||
|
||||
|
||||
# Desktop Environment |
||||
|
||||
|
||||
# Show Desktop Environment version |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --de_version |
||||
de_version="on" |
||||
|
||||
|
||||
# Disk |
||||
|
||||
|
||||
# Which disks to display. |
||||
# The values can be any /dev/sdXX, mount point or directory. |
||||
# NOTE: By default we only show the disk info for '/'. |
||||
# |
||||
# Default: '/' |
||||
# Values: '/', '/dev/sdXX', '/path/to/drive'. |
||||
# Flag: --disk_show |
||||
# |
||||
# Example: |
||||
# disk_show=('/' '/dev/sdb1'): |
||||
# 'Disk (/): 74G / 118G (66%)' |
||||
# 'Disk (/mnt/Videos): 823G / 893G (93%)' |
||||
# |
||||
# disk_show=('/'): |
||||
# 'Disk (/): 74G / 118G (66%)' |
||||
# |
||||
disk_show=('/') |
||||
|
||||
# Disk subtitle. |
||||
# What to append to the Disk subtitle. |
||||
# |
||||
# Default: 'mount' |
||||
# Values: 'mount', 'name', 'dir', 'none' |
||||
# Flag: --disk_subtitle |
||||
# |
||||
# Example: |
||||
# name: 'Disk (/dev/sda1): 74G / 118G (66%)' |
||||
# 'Disk (/dev/sdb2): 74G / 118G (66%)' |
||||
# |
||||
# mount: 'Disk (/): 74G / 118G (66%)' |
||||
# 'Disk (/mnt/Local Disk): 74G / 118G (66%)' |
||||
# 'Disk (/mnt/Videos): 74G / 118G (66%)' |
||||
# |
||||
# dir: 'Disk (/): 74G / 118G (66%)' |
||||
# 'Disk (Local Disk): 74G / 118G (66%)' |
||||
# 'Disk (Videos): 74G / 118G (66%)' |
||||
# |
||||
# none: 'Disk: 74G / 118G (66%)' |
||||
# 'Disk: 74G / 118G (66%)' |
||||
# 'Disk: 74G / 118G (66%)' |
||||
disk_subtitle="mount" |
||||
|
||||
# Disk percent. |
||||
# Show/Hide disk percent. |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --disk_percent |
||||
# |
||||
# Example: |
||||
# on: 'Disk (/): 74G / 118G (66%)' |
||||
# off: 'Disk (/): 74G / 118G' |
||||
disk_percent="on" |
||||
|
||||
|
||||
# Song |
||||
|
||||
|
||||
# Manually specify a music player. |
||||
# |
||||
# Default: 'auto' |
||||
# Values: 'auto', 'player-name' |
||||
# Flag: --music_player |
||||
# |
||||
# Available values for 'player-name': |
||||
# |
||||
# amarok |
||||
# audacious |
||||
# banshee |
||||
# bluemindo |
||||
# clementine |
||||
# cmus |
||||
# deadbeef |
||||
# deepin-music |
||||
# dragon |
||||
# elisa |
||||
# exaile |
||||
# gnome-music |
||||
# gmusicbrowser |
||||
# gogglesmm |
||||
# guayadeque |
||||
# io.elementary.music |
||||
# iTunes |
||||
# juk |
||||
# lollypop |
||||
# mocp |
||||
# mopidy |
||||
# mpd |
||||
# muine |
||||
# netease-cloud-music |
||||
# olivia |
||||
# playerctl |
||||
# pogo |
||||
# pragha |
||||
# qmmp |
||||
# quodlibet |
||||
# rhythmbox |
||||
# sayonara |
||||
# smplayer |
||||
# spotify |
||||
# strawberry |
||||
# tauonmb |
||||
# tomahawk |
||||
# vlc |
||||
# xmms2d |
||||
# xnoise |
||||
# yarock |
||||
music_player="auto" |
||||
|
||||
# Format to display song information. |
||||
# |
||||
# Default: '%artist% - %album% - %title%' |
||||
# Values: '%artist%', '%album%', '%title%' |
||||
# Flag: --song_format |
||||
# |
||||
# Example: |
||||
# default: 'Song: Jet - Get Born - Sgt Major' |
||||
song_format="%artist% - %album% - %title%" |
||||
|
||||
# Print the Artist, Album and Title on separate lines |
||||
# |
||||
# Default: 'off' |
||||
# Values: 'on', 'off' |
||||
# Flag: --song_shorthand |
||||
# |
||||
# Example: |
||||
# on: 'Artist: The Fratellis' |
||||
# 'Album: Costello Music' |
||||
# 'Song: Chelsea Dagger' |
||||
# |
||||
# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger' |
||||
song_shorthand="off" |
||||
|
||||
# 'mpc' arguments (specify a host, password etc). |
||||
# |
||||
# Default: '' |
||||
# Example: mpc_args=(-h HOST -P PASSWORD) |
||||
mpc_args=() |
||||
|
||||
|
||||
# Text Colors |
||||
|
||||
|
||||
# Text Colors |
||||
# |
||||
# Default: 'distro' |
||||
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' |
||||
# Flag: --colors |
||||
# |
||||
# Each number represents a different part of the text in |
||||
# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info' |
||||
# |
||||
# Example: |
||||
# colors=(distro) - Text is colored based on Distro colors. |
||||
# colors=(4 6 1 8 8 6) - Text is colored in the order above. |
||||
colors=(distro) |
||||
|
||||
|
||||
# Text Options |
||||
|
||||
|
||||
# Toggle bold text |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --bold |
||||
bold="on" |
||||
|
||||
# Enable/Disable Underline |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --underline |
||||
underline_enabled="on" |
||||
|
||||
# Underline character |
||||
# |
||||
# Default: '-' |
||||
# Values: 'string' |
||||
# Flag: --underline_char |
||||
underline_char="-" |
||||
|
||||
|
||||
# Info Separator |
||||
# Replace the default separator with the specified string. |
||||
# |
||||
# Default: ':' |
||||
# Flag: --separator |
||||
# |
||||
# Example: |
||||
# separator="->": 'Shell-> bash' |
||||
# separator=" =": 'WM = dwm' |
||||
separator=":" |
||||
|
||||
|
||||
# Color Blocks |
||||
|
||||
|
||||
# Color block range |
||||
# The range of colors to print. |
||||
# |
||||
# Default: '0', '15' |
||||
# Values: 'num' |
||||
# Flag: --block_range |
||||
# |
||||
# Example: |
||||
# |
||||
# Display colors 0-7 in the blocks. (8 colors) |
||||
# neofetch --block_range 0 7 |
||||
# |
||||
# Display colors 0-15 in the blocks. (16 colors) |
||||
# neofetch --block_range 0 15 |
||||
block_range=(0 15) |
||||
|
||||
# Toggle color blocks |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --color_blocks |
||||
color_blocks="on" |
||||
|
||||
# Color block width in spaces |
||||
# |
||||
# Default: '3' |
||||
# Values: 'num' |
||||
# Flag: --block_width |
||||
block_width=3 |
||||
|
||||
# Color block height in lines |
||||
# |
||||
# Default: '1' |
||||
# Values: 'num' |
||||
# Flag: --block_height |
||||
block_height=1 |
||||
|
||||
# Color Alignment |
||||
# |
||||
# Default: 'auto' |
||||
# Values: 'auto', 'num' |
||||
# Flag: --col_offset |
||||
# |
||||
# Number specifies how far from the left side of the terminal (in spaces) to |
||||
# begin printing the columns, in case you want to e.g. center them under your |
||||
# text. |
||||
# Example: |
||||
# col_offset="auto" - Default behavior of neofetch |
||||
# col_offset=7 - Leave 7 spaces then print the colors |
||||
col_offset="auto" |
||||
|
||||
# Progress Bars |
||||
|
||||
|
||||
# Bar characters |
||||
# |
||||
# Default: '-', '=' |
||||
# Values: 'string', 'string' |
||||
# Flag: --bar_char |
||||
# |
||||
# Example: |
||||
# neofetch --bar_char 'elapsed' 'total' |
||||
# neofetch --bar_char '-' '=' |
||||
bar_char_elapsed="-" |
||||
bar_char_total="=" |
||||
|
||||
# Toggle Bar border |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --bar_border |
||||
bar_border="on" |
||||
|
||||
# Progress bar length in spaces |
||||
# Number of chars long to make the progress bars. |
||||
# |
||||
# Default: '15' |
||||
# Values: 'num' |
||||
# Flag: --bar_length |
||||
bar_length=15 |
||||
|
||||
# Progress bar colors |
||||
# When set to distro, uses your distro's logo colors. |
||||
# |
||||
# Default: 'distro', 'distro' |
||||
# Values: 'distro', 'num' |
||||
# Flag: --bar_colors |
||||
# |
||||
# Example: |
||||
# neofetch --bar_colors 3 4 |
||||
# neofetch --bar_colors distro 5 |
||||
bar_color_elapsed="distro" |
||||
bar_color_total="distro" |
||||
|
||||
|
||||
# Info display |
||||
# Display a bar with the info. |
||||
# |
||||
# Default: 'off' |
||||
# Values: 'bar', 'infobar', 'barinfo', 'off' |
||||
# Flags: --cpu_display |
||||
# --memory_display |
||||
# --battery_display |
||||
# --disk_display |
||||
# |
||||
# Example: |
||||
# bar: '[---=======]' |
||||
# infobar: 'info [---=======]' |
||||
# barinfo: '[---=======] info' |
||||
# off: 'info' |
||||
cpu_display="off" |
||||
memory_display="off" |
||||
battery_display="off" |
||||
disk_display="off" |
||||
|
||||
|
||||
# Backend Settings |
||||
|
||||
|
||||
# Image backend. |
||||
# |
||||
# Default: 'ascii' |
||||
# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off', |
||||
# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty' |
||||
# Flag: --backend |
||||
image_backend="ascii" |
||||
|
||||
# Image Source |
||||
# |
||||
# Which image or ascii file to display. |
||||
# |
||||
# Default: 'auto' |
||||
# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/' |
||||
# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")' |
||||
# Flag: --source |
||||
# |
||||
# NOTE: 'auto' will pick the best image source for whatever image backend is used. |
||||
# In ascii mode, distro ascii art will be used and in an image mode, your |
||||
# wallpaper will be used. |
||||
image_source="auto" |
||||
|
||||
|
||||
# Ascii Options |
||||
|
||||
|
||||
# Ascii distro |
||||
# Which distro's ascii art to display. |
||||
# |
||||
# Default: 'auto' |
||||
# Values: 'auto', 'distro_name' |
||||
# Flag: --ascii_distro |
||||
# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS", |
||||
# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs, |
||||
# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock, |
||||
# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD, |
||||
# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS, |
||||
# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, |
||||
# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin, |
||||
# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary, |
||||
# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD, |
||||
# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo, |
||||
# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, |
||||
# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, |
||||
# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite, |
||||
# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, |
||||
# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib, |
||||
# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner, |
||||
# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba, |
||||
# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD, |
||||
# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint, |
||||
# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix, |
||||
# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, |
||||
# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, |
||||
# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, |
||||
# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, |
||||
# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, |
||||
# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio, |
||||
# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin, |
||||
# and IRIX have ascii logos |
||||
# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants. |
||||
# Use '{distro name}_old' to use the old logos. |
||||
# NOTE: Ubuntu has flavor variants. |
||||
# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME, |
||||
# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors. |
||||
# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu, |
||||
# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android, |
||||
# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola, |
||||
# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS, |
||||
# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian, |
||||
# postmarketOS, and Void have a smaller logo variant. |
||||
# Use '{distro name}_small' to use the small variants. |
||||
ascii_distro="auto" |
||||
|
||||
# Ascii Colors |
||||
# |
||||
# Default: 'distro' |
||||
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' |
||||
# Flag: --ascii_colors |
||||
# |
||||
# Example: |
||||
# ascii_colors=(distro) - Ascii is colored based on Distro colors. |
||||
# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors. |
||||
ascii_colors=(distro) |
||||
|
||||
# Bold ascii logo |
||||
# Whether or not to bold the ascii logo. |
||||
# |
||||
# Default: 'on' |
||||
# Values: 'on', 'off' |
||||
# Flag: --ascii_bold |
||||
ascii_bold="on" |
||||
|
||||
|
||||
# Image Options |
||||
|
||||
|
||||
# Image loop |
||||
# Setting this to on will make neofetch redraw the image constantly until |
||||
# Ctrl+C is pressed. This fixes display issues in some terminal emulators. |
||||
# |
||||
# Default: 'off' |
||||
# Values: 'on', 'off' |
||||
# Flag: --loop |
||||
image_loop="off" |
||||
|
||||
# Thumbnail directory |
||||
# |
||||
# Default: '~/.cache/thumbnails/neofetch' |
||||
# Values: 'dir' |
||||
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch" |
||||
|
||||
# Crop mode |
||||
# |
||||
# Default: 'normal' |
||||
# Values: 'normal', 'fit', 'fill' |
||||
# Flag: --crop_mode |
||||
# |
||||
# See this wiki page to learn about the fit and fill options. |
||||
# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F |
||||
crop_mode="normal" |
||||
|
||||
# Crop offset |
||||
# Note: Only affects 'normal' crop mode. |
||||
# |
||||
# Default: 'center' |
||||
# Values: 'northwest', 'north', 'northeast', 'west', 'center' |
||||
# 'east', 'southwest', 'south', 'southeast' |
||||
# Flag: --crop_offset |
||||
crop_offset="center" |
||||
|
||||
# Image size |
||||
# The image is half the terminal width by default. |
||||
# |
||||
# Default: 'auto' |
||||
# Values: 'auto', '00px', '00%', 'none' |
||||
# Flags: --image_size |
||||
# --size |
||||
image_size="auto" |
||||
|
||||
# Gap between image and text |
||||
# |
||||
# Default: '3' |
||||
# Values: 'num', '-num' |
||||
# Flag: --gap |
||||
gap=3 |
||||
|
||||
# Image offsets |
||||
# Only works with the w3m backend. |
||||
# |
||||
# Default: '0' |
||||
# Values: 'px' |
||||
# Flags: --xoffset |
||||
# --yoffset |
||||
yoffset=0 |
||||
xoffset=0 |
||||
|
||||
# Image background color |
||||
# Only works with the w3m backend. |
||||
# |
||||
# Default: '' |
||||
# Values: 'color', 'blue' |
||||
# Flag: --bg_color |
||||
background_color= |
||||
|
||||
|
||||
# Misc Options |
||||
|
||||
# Stdout mode |
||||
# Turn off all colors and disables image backend (ASCII/Image). |
||||
# Useful for piping into another command. |
||||
# Default: 'off' |
||||
# Values: 'on', 'off' |
||||
stdout="off" |
@ -0,0 +1,759 @@ |
||||
# Nushell Config File |
||||
# |
||||
# version = "0.86.0" |
||||
|
||||
# For more information on defining custom themes, see |
||||
# https://www.nushell.sh/book/coloring_and_theming.html |
||||
# And here is the theme collection |
||||
# https://github.com/nushell/nu_scripts/tree/main/themes |
||||
let dark_theme = { |
||||
# color for nushell primitives |
||||
separator: white |
||||
leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off |
||||
header: green_bold |
||||
empty: blue |
||||
# Closures can be used to choose colors for specific values. |
||||
# The value (in this case, a bool) is piped into the closure. |
||||
# eg) {|| if $in { 'light_cyan' } else { 'light_gray' } } |
||||
bool: light_cyan |
||||
int: white |
||||
filesize: cyan |
||||
duration: white |
||||
date: purple |
||||
range: white |
||||
float: white |
||||
string: white |
||||
nothing: white |
||||
binary: white |
||||
cell-path: white |
||||
row_index: green_bold |
||||
record: white |
||||
list: white |
||||
block: white |
||||
hints: dark_gray |
||||
search_result: {bg: red fg: white} |
||||
shape_and: purple_bold |
||||
shape_binary: purple_bold |
||||
shape_block: blue_bold |
||||
shape_bool: light_cyan |
||||
shape_closure: green_bold |
||||
shape_custom: green |
||||
shape_datetime: cyan_bold |
||||
shape_directory: cyan |
||||
shape_external: cyan |
||||
shape_externalarg: green_bold |
||||
shape_filepath: cyan |
||||
shape_flag: blue_bold |
||||
shape_float: purple_bold |
||||
# shapes are used to change the cli syntax highlighting |
||||
shape_garbage: { fg: white bg: red attr: b} |
||||
shape_globpattern: cyan_bold |
||||
shape_int: purple_bold |
||||
shape_internalcall: cyan_bold |
||||
shape_list: cyan_bold |
||||
shape_literal: blue |
||||
shape_match_pattern: green |
||||
shape_matching_brackets: { attr: u } |
||||
shape_nothing: light_cyan |
||||
shape_operator: yellow |
||||
shape_or: purple_bold |
||||
shape_pipe: purple_bold |
||||
shape_range: yellow_bold |
||||
shape_record: cyan_bold |
||||
shape_redirection: purple_bold |
||||
shape_signature: green_bold |
||||
shape_string: green |
||||
shape_string_interpolation: cyan_bold |
||||
shape_table: blue_bold |
||||
shape_variable: purple |
||||
shape_vardecl: purple |
||||
} |
||||
|
||||
let light_theme = { |
||||
# color for nushell primitives |
||||
separator: dark_gray |
||||
leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off |
||||
header: green_bold |
||||
empty: blue |
||||
# Closures can be used to choose colors for specific values. |
||||
# The value (in this case, a bool) is piped into the closure. |
||||
# eg) {|| if $in { 'dark_cyan' } else { 'dark_gray' } } |
||||
bool: dark_cyan |
||||
int: dark_gray |
||||
filesize: cyan_bold |
||||
duration: dark_gray |
||||
date: purple |
||||
range: dark_gray |
||||
float: dark_gray |
||||
string: dark_gray |
||||
nothing: dark_gray |
||||
binary: dark_gray |
||||
cell-path: dark_gray |
||||
row_index: green_bold |
||||
record: white |
||||
list: white |
||||
block: white |
||||
hints: dark_gray |
||||
search_result: {fg: white bg: red} |
||||
shape_and: purple_bold |
||||
shape_binary: purple_bold |
||||
shape_block: blue_bold |
||||
shape_bool: light_cyan |
||||
shape_closure: green_bold |
||||
shape_custom: green |
||||
shape_datetime: cyan_bold |
||||
shape_directory: cyan |
||||
shape_external: cyan |
||||
shape_externalarg: green_bold |
||||
shape_filepath: cyan |
||||
shape_flag: blue_bold |
||||
shape_float: purple_bold |
||||
# shapes are used to change the cli syntax highlighting |
||||
shape_garbage: { fg: white bg: red attr: b} |
||||
shape_globpattern: cyan_bold |
||||
shape_int: purple_bold |
||||
shape_internalcall: cyan_bold |
||||
shape_list: cyan_bold |
||||
shape_literal: blue |
||||
shape_match_pattern: green |
||||
shape_matching_brackets: { attr: u } |
||||
shape_nothing: light_cyan |
||||
shape_operator: yellow |
||||
shape_or: purple_bold |
||||
shape_pipe: purple_bold |
||||
shape_range: yellow_bold |
||||
shape_record: cyan_bold |
||||
shape_redirection: purple_bold |
||||
shape_signature: green_bold |
||||
shape_string: green |
||||
shape_string_interpolation: cyan_bold |
||||
shape_table: blue_bold |
||||
shape_variable: purple |
||||
shape_vardecl: purple |
||||
} |
||||
|
||||
# External completer example |
||||
# let carapace_completer = {|spans| |
||||
# carapace $spans.0 nushell $spans | from json |
||||
# } |
||||
|
||||
# The default config record. This is where much of your global configuration is setup. |
||||
$env.config = { |
||||
show_banner: true # true or false to enable or disable the welcome banner at startup |
||||
|
||||
ls: { |
||||
use_ls_colors: true # use the LS_COLORS environment variable to colorize output |
||||
clickable_links: true # enable or disable clickable links. Your terminal has to support links. |
||||
} |
||||
|
||||
rm: { |
||||
always_trash: false # always act as if -t was given. Can be overridden with -p |
||||
} |
||||
|
||||
table: { |
||||
mode: rounded # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other |
||||
index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column |
||||
show_empty: true # show 'empty list' and 'empty record' placeholders for command output |
||||
padding: { left: 1, right: 1 } # a left right padding of each column in a table |
||||
trim: { |
||||
methodology: wrapping # wrapping or truncating |
||||
wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology |
||||
truncating_suffix: "..." # A suffix used by the 'truncating' methodology |
||||
} |
||||
header_on_separator: false # show header text on separator/border line |
||||
# abbreviated_row_count: 10 # limit data rows from top and bottom after reaching a set point |
||||
} |
||||
|
||||
error_style: "fancy" # "fancy" or "plain" for screen reader-friendly error messages |
||||
|
||||
# datetime_format determines what a datetime rendered in the shell would look like. |
||||
# Behavior without this configuration point will be to "humanize" the datetime display, |
||||
# showing something like "a day ago." |
||||
datetime_format: { |
||||
# normal: '%a, %d %b %Y %H:%M:%S %z' # shows up in displays of variables or other datetime's outside of tables |
||||
# table: '%m/%d/%y %I:%M:%S%p' # generally shows up in tabular outputs such as ls. commenting this out will change it to the default human readable datetime format |
||||
} |
||||
|
||||
explore: { |
||||
status_bar_background: {fg: "#1D1F21", bg: "#C4C9C6"}, |
||||
command_bar_text: {fg: "#C4C9C6"}, |
||||
highlight: {fg: "black", bg: "yellow"}, |
||||
status: { |
||||
error: {fg: "white", bg: "red"}, |
||||
warn: {} |
||||
info: {} |
||||
}, |
||||
table: { |
||||
split_line: {fg: "#404040"}, |
||||
selected_cell: {bg: light_blue}, |
||||
selected_row: {}, |
||||
selected_column: {}, |
||||
}, |
||||
} |
||||
|
||||
history: { |
||||
max_size: 100_000 # Session has to be reloaded for this to take effect |
||||
sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file |
||||
file_format: "plaintext" # "sqlite" or "plaintext" |
||||
isolation: false # only available with sqlite file_format. true enables history isolation, false disables it. true will allow the history to be isolated to the current session using up/down arrows. false will allow the history to be shared across all sessions. |
||||
} |
||||
|
||||
completions: { |
||||
case_sensitive: false # set to true to enable case-sensitive completions |
||||
quick: true # set this to false to prevent auto-selecting completions when only one remains |
||||
partial: true # set this to false to prevent partial filling of the prompt |
||||
algorithm: "prefix" # prefix or fuzzy |
||||
external: { |
||||
enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow |
||||
max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options |
||||
completer: null # check 'carapace_completer' above as an example |
||||
} |
||||
} |
||||
|
||||
filesize: { |
||||
metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard) |
||||
format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, auto |
||||
} |
||||
|
||||
cursor_shape: { |
||||
emacs: line # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (line is the default) |
||||
vi_insert: block # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (block is the default) |
||||
vi_normal: underscore # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (underscore is the default) |
||||
} |
||||
|
||||
color_config: $dark_theme # if you want a more interesting theme, you can replace the empty record with `$dark_theme`, `$light_theme` or another custom record |
||||
use_grid_icons: true |
||||
footer_mode: "25" # always, never, number_of_rows, auto |
||||
float_precision: 2 # the precision for displaying floats in tables |
||||
buffer_editor: "" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL |
||||
use_ansi_coloring: true |
||||
bracketed_paste: true # enable bracketed paste, currently useless on windows |
||||
edit_mode: emacs # emacs, vi |
||||
shell_integration: false # enables terminal shell integration. Off by default, as some terminals have issues with this. |
||||
render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt. |
||||
use_kitty_protocol: false # enables keyboard enhancement protocol implemented by kitty console, only if your terminal support this |
||||
|
||||
hooks: { |
||||
pre_prompt: [{ null }] # run before the prompt is shown |
||||
pre_execution: [{ null }] # run before the repl input is run |
||||
env_change: { |
||||
PWD: [{|before, after| null }] # run if the PWD environment is different since the last repl input |
||||
} |
||||
display_output: "if (term size).columns >= 100 { table -e } else { table }" # run to display the output of a pipeline |
||||
command_not_found: { null } # return an error message when a command is not found |
||||
} |
||||
|
||||
menus: [ |
||||
# Configuration for default nushell menus |
||||
# Note the lack of source parameter |
||||
{ |
||||
name: completion_menu |
||||
only_buffer_difference: false |
||||
marker: "| " |
||||
type: { |
||||
layout: columnar |
||||
columns: 4 |
||||
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width |
||||
col_padding: 2 |
||||
} |
||||
style: { |
||||
text: green |
||||
selected_text: green_reverse |
||||
description_text: yellow |
||||
} |
||||
} |
||||
{ |
||||
name: history_menu |
||||
only_buffer_difference: true |
||||
marker: "? " |
||||
type: { |
||||
layout: list |
||||
page_size: 10 |
||||
} |
||||
style: { |
||||
text: green |
||||
selected_text: green_reverse |
||||
description_text: yellow |
||||
} |
||||
} |
||||
{ |
||||
name: help_menu |
||||
only_buffer_difference: true |
||||
marker: "? " |
||||
type: { |
||||
layout: description |
||||
columns: 4 |
||||
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width |
||||
col_padding: 2 |
||||
selection_rows: 4 |
||||
description_rows: 10 |
||||
} |
||||
style: { |
||||
text: green |
||||
selected_text: green_reverse |
||||
description_text: yellow |
||||
} |
||||
} |
||||
] |
||||
|
||||
keybindings: [ |
||||
{ |
||||
name: completion_menu |
||||
modifier: none |
||||
keycode: tab |
||||
mode: [emacs vi_normal vi_insert] |
||||
event: { |
||||
until: [ |
||||
{ send: menu name: completion_menu } |
||||
{ send: menunext } |
||||
{ edit: complete } |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: history_menu |
||||
modifier: control |
||||
keycode: char_r |
||||
mode: [emacs, vi_insert, vi_normal] |
||||
event: { send: menu name: history_menu } |
||||
} |
||||
{ |
||||
name: help_menu |
||||
modifier: none |
||||
keycode: f1 |
||||
mode: [emacs, vi_insert, vi_normal] |
||||
event: { send: menu name: help_menu } |
||||
} |
||||
{ |
||||
name: completion_previous_menu |
||||
modifier: shift |
||||
keycode: backtab |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { send: menuprevious } |
||||
} |
||||
{ |
||||
name: next_page_menu |
||||
modifier: control |
||||
keycode: char_x |
||||
mode: emacs |
||||
event: { send: menupagenext } |
||||
} |
||||
{ |
||||
name: undo_or_previous_page_menu |
||||
modifier: control |
||||
keycode: char_z |
||||
mode: emacs |
||||
event: { |
||||
until: [ |
||||
{ send: menupageprevious } |
||||
{ edit: undo } |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: escape |
||||
modifier: none |
||||
keycode: escape |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { send: esc } # NOTE: does not appear to work |
||||
} |
||||
{ |
||||
name: cancel_command |
||||
modifier: control |
||||
keycode: char_c |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { send: ctrlc } |
||||
} |
||||
{ |
||||
name: quit_shell |
||||
modifier: control |
||||
keycode: char_d |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { send: ctrld } |
||||
} |
||||
{ |
||||
name: clear_screen |
||||
modifier: control |
||||
keycode: char_l |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { send: clearscreen } |
||||
} |
||||
{ |
||||
name: search_history |
||||
modifier: control |
||||
keycode: char_q |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { send: searchhistory } |
||||
} |
||||
{ |
||||
name: open_command_editor |
||||
modifier: control |
||||
keycode: char_o |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { send: openeditor } |
||||
} |
||||
{ |
||||
name: move_up |
||||
modifier: none |
||||
keycode: up |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { |
||||
until: [ |
||||
{send: menuup} |
||||
{send: up} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: move_down |
||||
modifier: none |
||||
keycode: down |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { |
||||
until: [ |
||||
{send: menudown} |
||||
{send: down} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: move_left |
||||
modifier: none |
||||
keycode: left |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { |
||||
until: [ |
||||
{send: menuleft} |
||||
{send: left} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: move_right_or_take_history_hint |
||||
modifier: none |
||||
keycode: right |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { |
||||
until: [ |
||||
{send: historyhintcomplete} |
||||
{send: menuright} |
||||
{send: right} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: move_one_word_left |
||||
modifier: control |
||||
keycode: left |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: {edit: movewordleft} |
||||
} |
||||
{ |
||||
name: move_one_word_right_or_take_history_hint |
||||
modifier: control |
||||
keycode: right |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { |
||||
until: [ |
||||
{send: historyhintwordcomplete} |
||||
{edit: movewordright} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: move_to_line_start |
||||
modifier: none |
||||
keycode: home |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: {edit: movetolinestart} |
||||
} |
||||
{ |
||||
name: move_to_line_start |
||||
modifier: control |
||||
keycode: char_a |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: {edit: movetolinestart} |
||||
} |
||||
{ |
||||
name: move_to_line_end_or_take_history_hint |
||||
modifier: none |
||||
keycode: end |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { |
||||
until: [ |
||||
{send: historyhintcomplete} |
||||
{edit: movetolineend} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: move_to_line_end_or_take_history_hint |
||||
modifier: control |
||||
keycode: char_e |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { |
||||
until: [ |
||||
{send: historyhintcomplete} |
||||
{edit: movetolineend} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: move_to_line_start |
||||
modifier: control |
||||
keycode: home |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: {edit: movetolinestart} |
||||
} |
||||
{ |
||||
name: move_to_line_end |
||||
modifier: control |
||||
keycode: end |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: {edit: movetolineend} |
||||
} |
||||
{ |
||||
name: move_up |
||||
modifier: control |
||||
keycode: char_p |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { |
||||
until: [ |
||||
{send: menuup} |
||||
{send: up} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: move_down |
||||
modifier: control |
||||
keycode: char_t |
||||
mode: [emacs, vi_normal, vi_insert] |
||||
event: { |
||||
until: [ |
||||
{send: menudown} |
||||
{send: down} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: delete_one_character_backward |
||||
modifier: none |
||||
keycode: backspace |
||||
mode: [emacs, vi_insert] |
||||
event: {edit: backspace} |
||||
} |
||||
{ |
||||
name: delete_one_word_backward |
||||
modifier: control |
||||
keycode: backspace |
||||
mode: [emacs, vi_insert] |
||||
event: {edit: backspaceword} |
||||
} |
||||
{ |
||||
name: delete_one_character_forward |
||||
modifier: none |
||||
keycode: delete |
||||
mode: [emacs, vi_insert] |
||||
event: {edit: delete} |
||||
} |
||||
{ |
||||
name: delete_one_character_forward |
||||
modifier: control |
||||
keycode: delete |
||||
mode: [emacs, vi_insert] |
||||
event: {edit: delete} |
||||
} |
||||
{ |
||||
name: delete_one_character_forward |
||||
modifier: control |
||||
keycode: char_h |
||||
mode: [emacs, vi_insert] |
||||
event: {edit: backspace} |
||||
} |
||||
{ |
||||
name: delete_one_word_backward |
||||
modifier: control |
||||
keycode: char_w |
||||
mode: [emacs, vi_insert] |
||||
event: {edit: backspaceword} |
||||
} |
||||
{ |
||||
name: move_left |
||||
modifier: none |
||||
keycode: backspace |
||||
mode: vi_normal |
||||
event: {edit: moveleft} |
||||
} |
||||
{ |
||||
name: newline_or_run_command |
||||
modifier: none |
||||
keycode: enter |
||||
mode: emacs |
||||
event: {send: enter} |
||||
} |
||||
{ |
||||
name: move_left |
||||
modifier: control |
||||
keycode: char_b |
||||
mode: emacs |
||||
event: { |
||||
until: [ |
||||
{send: menuleft} |
||||
{send: left} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: move_right_or_take_history_hint |
||||
modifier: control |
||||
keycode: char_f |
||||
mode: emacs |
||||
event: { |
||||
until: [ |
||||
{send: historyhintcomplete} |
||||
{send: menuright} |
||||
{send: right} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: redo_change |
||||
modifier: control |
||||
keycode: char_g |
||||
mode: emacs |
||||
event: {edit: redo} |
||||
} |
||||
{ |
||||
name: undo_change |
||||
modifier: control |
||||
keycode: char_z |
||||
mode: emacs |
||||
event: {edit: undo} |
||||
} |
||||
{ |
||||
name: paste_before |
||||
modifier: control |
||||
keycode: char_y |
||||
mode: emacs |
||||
event: {edit: pastecutbufferbefore} |
||||
} |
||||
{ |
||||
name: cut_word_left |
||||
modifier: control |
||||
keycode: char_w |
||||
mode: emacs |
||||
event: {edit: cutwordleft} |
||||
} |
||||
{ |
||||
name: cut_line_to_end |
||||
modifier: control |
||||
keycode: char_k |
||||
mode: emacs |
||||
event: {edit: cuttoend} |
||||
} |
||||
{ |
||||
name: cut_line_from_start |
||||
modifier: control |
||||
keycode: char_u |
||||
mode: emacs |
||||
event: {edit: cutfromstart} |
||||
} |
||||
{ |
||||
name: swap_graphemes |
||||
modifier: control |
||||
keycode: char_t |
||||
mode: emacs |
||||
event: {edit: swapgraphemes} |
||||
} |
||||
{ |
||||
name: move_one_word_left |
||||
modifier: alt |
||||
keycode: left |
||||
mode: emacs |
||||
event: {edit: movewordleft} |
||||
} |
||||
{ |
||||
name: move_one_word_right_or_take_history_hint |
||||
modifier: alt |
||||
keycode: right |
||||
mode: emacs |
||||
event: { |
||||
until: [ |
||||
{send: historyhintwordcomplete} |
||||
{edit: movewordright} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: move_one_word_left |
||||
modifier: alt |
||||
keycode: char_b |
||||
mode: emacs |
||||
event: {edit: movewordleft} |
||||
} |
||||
{ |
||||
name: move_one_word_right_or_take_history_hint |
||||
modifier: alt |
||||
keycode: char_f |
||||
mode: emacs |
||||
event: { |
||||
until: [ |
||||
{send: historyhintwordcomplete} |
||||
{edit: movewordright} |
||||
] |
||||
} |
||||
} |
||||
{ |
||||
name: delete_one_word_forward |
||||
modifier: alt |
||||
keycode: delete |
||||
mode: emacs |
||||
event: {edit: deleteword} |
||||
} |
||||
{ |
||||
name: delete_one_word_backward |
||||
modifier: alt |
||||
keycode: backspace |
||||
mode: emacs |
||||
event: {edit: backspaceword} |
||||
} |
||||
{ |
||||
name: delete_one_word_backward |
||||
modifier: alt |
||||
keycode: char_m |
||||
mode: emacs |
||||
event: {edit: backspaceword} |
||||
} |
||||
{ |
||||
name: cut_word_to_right |
||||
modifier: alt |
||||
keycode: char_d |
||||
mode: emacs |
||||
event: {edit: cutwordright} |
||||
} |
||||
{ |
||||
name: upper_case_word |
||||
modifier: alt |
||||
keycode: char_u |
||||
mode: emacs |
||||
event: {edit: uppercaseword} |
||||
} |
||||
{ |
||||
name: lower_case_word |
||||
modifier: alt |
||||
keycode: char_l |
||||
mode: emacs |
||||
event: {edit: lowercaseword} |
||||
} |
||||
{ |
||||
name: capitalize_char |
||||
modifier: alt |
||||
keycode: char_c |
||||
mode: emacs |
||||
event: {edit: capitalizechar} |
||||
} |
||||
] |
||||
} |
||||
|
||||
source ~/.cache/starship/init.nu |
@ -0,0 +1,65 @@ |
||||
# Nushell Environment Config File |
||||
|
||||
def create_left_prompt [] { |
||||
let path_segment = if (is-admin) { |
||||
$"(ansi red_bold)($env.PWD)" |
||||
} else { |
||||
$"(ansi green_bold)($env.PWD)" |
||||
} |
||||
|
||||
$path_segment |
||||
} |
||||
|
||||
def create_right_prompt [] { |
||||
let time_segment = ([ |
||||
(date now | format date '%m/%d/%Y %r') |
||||
] | str join) |
||||
|
||||
$time_segment |
||||
} |
||||
|
||||
# Use nushell functions to define your right and left prompt |
||||
$env.PROMPT_COMMAND = { create_left_prompt } |
||||
$env.PROMPT_COMMAND_RIGHT = { create_right_prompt } |
||||
|
||||
# The prompt indicators are environmental variables that represent |
||||
# the state of the prompt |
||||
$env.PROMPT_INDICATOR = { "〉" } |
||||
$env.PROMPT_INDICATOR_VI_INSERT = { ": " } |
||||
$env.PROMPT_INDICATOR_VI_NORMAL = { "〉" } |
||||
$env.PROMPT_MULTILINE_INDICATOR = { "::: " } |
||||
|
||||
# Specifies how environment variables are: |
||||
# - converted from a string to a value on Nushell startup (from_string) |
||||
# - converted from a value back to a string when running external commands (to_string) |
||||
# Note: The conversions happen *after* config.nu is loaded |
||||
$env.ENV_CONVERSIONS = { |
||||
"PATH": { |
||||
from_string: { |s| $s | split row (char esep) | path expand -n } |
||||
to_string: { |v| $v | path expand -n | str join (char esep) } |
||||
} |
||||
"Path": { |
||||
from_string: { |s| $s | split row (char esep) | path expand -n } |
||||
to_string: { |v| $v | path expand -n | str join (char esep) } |
||||
} |
||||
} |
||||
|
||||
# Directories to search for scripts when calling source or use |
||||
# |
||||
# By default, <nushell-config-dir>/scripts is added |
||||
$env.NU_LIB_DIRS = [ |
||||
($nu.config-path | path dirname | path join 'scripts') |
||||
] |
||||
|
||||
# Directories to search for plugin binaries when calling register |
||||
# |
||||
# By default, <nushell-config-dir>/plugins is added |
||||
$env.NU_PLUGIN_DIRS = [ |
||||
($nu.config-path | path dirname | path join 'plugins') |
||||
] |
||||
|
||||
# To add entries to PATH (on Windows you might use Path), you can use the following pattern: |
||||
# let-env PATH = ($env.PATH | split row (char esep) | prepend '/some/path') |
||||
|
||||
#mkdir ~/.cache/starship |
||||
starship init nu | save -f ~/.cache/starship/init.nu |
@ -0,0 +1,207 @@ |
||||
#!/bin/sh |
||||
|
||||
# This is the example configuration file for river. |
||||
# |
||||
# If you wish to edit this, you will probably want to copy it to |
||||
# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first. |
||||
# |
||||
# See the river(1), riverctl(1), and rivertile(1) man pages for complete |
||||
# documentation. |
||||
|
||||
riverctl xcursor-theme Adwaita 24 |
||||
|
||||
# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc. |
||||
|
||||
# Super+Shift+Return to start an instance of foot (https://codeberg.org/dnkl/foot) |
||||
riverctl map normal Super+Shift Return spawn foot |
||||
|
||||
# Super+Q to close the focused view |
||||
riverctl map normal Super Q close |
||||
|
||||
# Super+Shift+E to exit river |
||||
riverctl map normal Super+Shift E exit |
||||
|
||||
# Super+J and Super+K to focus the next/previous view in the layout stack |
||||
riverctl map normal Super J focus-view next |
||||
riverctl map normal Super K focus-view previous |
||||
|
||||
# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous |
||||
# view in the layout stack |
||||
riverctl map normal Super+Shift J swap next |
||||
riverctl map normal Super+Shift K swap previous |
||||
|
||||
# Super+Period and Super+Comma to focus the next/previous output |
||||
riverctl map normal Super Period focus-output next |
||||
riverctl map normal Super Comma focus-output previous |
||||
|
||||
# Super+Shift+{Period,Comma} to send the focused view to the next/previous output |
||||
riverctl map normal Super+Shift Period send-to-output next |
||||
riverctl map normal Super+Shift Comma send-to-output previous |
||||
|
||||
# Super+Return to bump the focused view to the top of the layout stack |
||||
riverctl map normal Super Return zoom |
||||
|
||||
# Super+H and Super+L to decrease/increase the main ratio of rivertile(1) |
||||
riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05" |
||||
riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05" |
||||
|
||||
# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1) |
||||
riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1" |
||||
riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1" |
||||
|
||||
# Super+Alt+{H,J,K,L} to move views |
||||
riverctl map normal Super+Alt H move left 100 |
||||
riverctl map normal Super+Alt J move down 100 |
||||
riverctl map normal Super+Alt K move up 100 |
||||
riverctl map normal Super+Alt L move right 100 |
||||
|
||||
# Super+Alt+Control+{H,J,K,L} to snap views to screen edges |
||||
riverctl map normal Super+Alt+Control H snap left |
||||
riverctl map normal Super+Alt+Control J snap down |
||||
riverctl map normal Super+Alt+Control K snap up |
||||
riverctl map normal Super+Alt+Control L snap right |
||||
|
||||
# Super+Alt+Shif+{H,J,K,L} to resize views |
||||
riverctl map normal Super+Alt+Shift H resize horizontal -100 |
||||
riverctl map normal Super+Alt+Shift J resize vertical 100 |
||||
riverctl map normal Super+Alt+Shift K resize vertical -100 |
||||
riverctl map normal Super+Alt+Shift L resize horizontal 100 |
||||
|
||||
# Super + Left Mouse Button to move views |
||||
riverctl map-pointer normal Super BTN_LEFT move-view |
||||
|
||||
# Super + Right Mouse Button to resize views |
||||
riverctl map-pointer normal Super BTN_RIGHT resize-view |
||||
|
||||
for i in $(seq 1 9) |
||||
do |
||||
tags=$((1 << ($i - 1))) |
||||
|
||||
# Super+[1-9] to focus tag [0-8] |
||||
riverctl map normal Super $i set-focused-tags $tags |
||||
|
||||
# Super+Shift+[1-9] to tag focused view with tag [0-8] |
||||
riverctl map normal Super+Shift $i set-view-tags $tags |
||||
|
||||
# Super+Ctrl+[1-9] to toggle focus of tag [0-8] |
||||
riverctl map normal Super+Control $i toggle-focused-tags $tags |
||||
|
||||
# Super+Shift+Ctrl+[1-9] to toggle tag [0-8] of focused view |
||||
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags |
||||
done |
||||
|
||||
# Super+0 to focus all tags |
||||
# Super+Shift+0 to tag focused view with all tags |
||||
all_tags=$(((1 << 32) - 1)) |
||||
riverctl map normal Super 0 set-focused-tags $all_tags |
||||
riverctl map normal Super+Shift 0 set-view-tags $all_tags |
||||
|
||||
# Super+Space to toggle float |
||||
riverctl map normal Super Space toggle-float |
||||
|
||||
# Super+F to toggle fullscreen |
||||
riverctl map normal Super F toggle-fullscreen |
||||
|
||||
# Super+{Up,Right,Down,Left} to change layout orientation |
||||
riverctl map normal Super Up send-layout-cmd rivertile "main-location top" |
||||
riverctl map normal Super Right send-layout-cmd rivertile "main-location right" |
||||
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom" |
||||
riverctl map normal Super Left send-layout-cmd rivertile "main-location left" |
||||
|
||||
# Declare a passthrough mode. This mode has only a single mapping to return to |
||||
# normal mode. This makes it useful for testing a nested wayland compositor |
||||
riverctl declare-mode passthrough |
||||
|
||||
# Super+F11 to enter passthrough mode |
||||
riverctl map normal Super F11 enter-mode passthrough |
||||
|
||||
# Super+F11 to return to normal mode |
||||
riverctl map passthrough Super F11 enter-mode normal |
||||
|
||||
riverctl map normal Super R spawn 'pidof bemenu-run || bemenu-run -i -n' |
||||
riverctl map normal Super Z spawn 'rofi -modi emoji -show emoji' |
||||
riverctl map normal None Print spawn 'grimshot copy area' |
||||
|
||||
# Various media key mapping examples for both normal and locked mode which do |
||||
# not have a modifier |
||||
for mode in normal locked |
||||
do |
||||
# Eject the optical drive (well if you still have one that is) |
||||
riverctl map $mode None XF86Eject spawn 'eject -T' |
||||
|
||||
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer) |
||||
riverctl map -repeat $mode None XF86AudioRaiseVolume spawn "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 1%+" |
||||
riverctl map -repeat $mode None XF86AudioLowerVolume spawn "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 1%-" |
||||
riverctl map $mode None XF86AudioMute spawn 'wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle' |
||||
riverctl map $mode None XF86AudioMicMute spawn 'amixer --card 1 set "Capture" toggle' |
||||
|
||||
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl) |
||||
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause' |
||||
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause' |
||||
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous' |
||||
riverctl map $mode None XF86AudioNext spawn 'playerctl next' |
||||
|
||||
# Control screen backlight brighness with enlighten (https://github.com/HalosGhost/enlighten) |
||||
riverctl map $mode None XF86MonBrightnessUp spawn "BACKLIGHT_DEVICE=amdgpu_bl1 enlighten +5%" |
||||
riverctl map $mode None XF86MonBrightnessDown spawn "BACKLIGHT_DEVICE=amdgpu_bl1 enlighten -5%" |
||||
done |
||||
|
||||
# Set background and border color |
||||
riverctl background-color 0x002b36 |
||||
riverctl border-color-focused 0x93a1a1 |
||||
riverctl border-color-unfocused 0x586e75 |
||||
|
||||
# Set keyboard repeat rate |
||||
riverctl set-repeat 50 300 |
||||
|
||||
riverctl input pointer-2-10-TPPS/2_Elan_TrackPoint accel-profile adaptive |
||||
riverctl input pointer-2-10-TPPS/2_Elan_TrackPoint pointer-accel -0.5 |
||||
riverctl input pointer-1267-12693-ELAN0678:00_04F3:3195_Mouse events disabled |
||||
riverctl input pointer-1267-12693-ELAN0678:00_04F3:3195_Touchpad events disabled |
||||
|
||||
|
||||
# Make certain views start floating |
||||
riverctl float-filter-add app-id float |
||||
riverctl float-filter-add title "popup title with spaces" |
||||
|
||||
# Set app-ids and titles of views which should use client side decorations |
||||
riverctl csd-filter-add app-id "gedit" |
||||
|
||||
# startup |
||||
riverctl spawn "killall waybar" |
||||
riverctl spawn "killall bemenu-run" |
||||
riverctl spawn "killall dunst" |
||||
#riverctl spawn "killall kanshi" |
||||
riverctl spawn "killall way-displays" |
||||
riverctl spawn "/usr/libexec/pipewire-launcher" |
||||
#riverctl spawn "kanshi" |
||||
riverctl spawn "way-displays > /tmp/way-displays.${XDG_VTNR}.${USER}.log 2>&1 &" |
||||
#riverctl spawn "kill -HUP $(pidof waybar) && waybar" |
||||
riverctl spawn "waybar" |
||||
riverctl spawn "inga-xdg-desktop-portal-wlr" |
||||
riverctl spawn "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1" |
||||
riverctl spawn "rm $XDG_RUNTIME_DIR/wobpipevolume && mkfifo $XDG_RUNTIME_DIR/wobpipevolume && tail -f $XDG_RUNTIME_DIR/wobpipevolume" |
||||
riverctl spawn "rm $XDG_RUNTIME_DIR/wobpipebright && mkfifo $XDG_RUNTIME_DIR/wobpipebright && tail -f $XDG_RUNTIME_DIR/wobpipebright" |
||||
riverctl spawn "dunst" |
||||
|
||||
# Set and exec into the default layout generator, rivertile. |
||||
# River will send the process group of the init executable SIGTERM on exit. |
||||
#riverctl default-layout rivertile |
||||
#exec rivertile -view-padding 6 -outer-padding 6 |
||||
|
||||
riverctl float-filter-add title "Firefox — Sharing Indicator" |
||||
riverctl float-filter-add title 'Firefox — Sharing Indicator' |
||||
riverctl float-filter-add title "Firefox — Sharing Indicator" |
||||
#riverctl float-filter-add title Firefox — Sharing Indicator |
||||
riverctl float-filter-add title 'Firefox — Sharing Indicator' |
||||
riverctl float-filter-add title "Firefox — Sharing Indicator" |
||||
riverctl float-filter-add title "Firefox — Sharing Indicator" |
||||
riverctl float-filter-add title "Firefox — Sharing Indicator" |
||||
riverctl float-filter-add title "Firefox — Sharing Indicator" |
||||
riverctl float-filter-add title "Firefox — Sharing Indicator" |
||||
riverctl float-filter-add app-id "flameshot" |
||||
|
||||
|
||||
riverctl default-layout rivertile |
||||
exec rivertile -view-padding 6 -outer-padding 6 |
||||
|
@ -0,0 +1,220 @@ |
||||
# Default config for sway |
||||
# |
||||
# Copy this to ~/.config/sway/config and edit it to your liking. |
||||
# |
||||
# Read `man 5 sway` for a complete reference. |
||||
|
||||
### Variables |
||||
# |
||||
# Logo key. Use Mod1 for Alt. |
||||
set $mod Mod4 |
||||
# Home row direction keys, like vim |
||||
set $left h |
||||
set $down j |
||||
set $up k |
||||
set $right l |
||||
# Your preferred terminal emulator |
||||
set $term foot |
||||
# Your preferred application launcher |
||||
# Note: pass the final command to swaymsg so that the resulting window can be opened |
||||
# on the original workspace that the command was run on. |
||||
set $menu dmenu_path | dmenu | xargs swaymsg exec -- |
||||
|
||||
### Output configuration |
||||
# |
||||
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) |
||||
output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill |
||||
# |
||||
# Example configuration: |
||||
# |
||||
# output HDMI-A-1 resolution 1920x1080 position 1920,0 |
||||
# |
||||
# You can get the names of your outputs by running: swaymsg -t get_outputs |
||||
|
||||
### Idle configuration |
||||
# |
||||
# Example configuration: |
||||
# |
||||
# exec swayidle -w \ |
||||
# timeout 300 'swaylock -f -c 000000' \ |
||||
# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ |
||||
# before-sleep 'swaylock -f -c 000000' |
||||
# |
||||
# This will lock your screen after 300 seconds of inactivity, then turn off |
||||
# your displays after another 300 seconds, and turn your screens back on when |
||||
# resumed. It will also lock your screen before your computer goes to sleep. |
||||
|
||||
### Input configuration |
||||
# |
||||
# Example configuration: |
||||
# |
||||
# input "2:14:SynPS/2_Synaptics_TouchPad" { |
||||
# dwt enabled |
||||
# tap enabled |
||||
# natural_scroll enabled |
||||
# middle_emulation enabled |
||||
# } |
||||
# |
||||
# You can get the names of your inputs by running: swaymsg -t get_inputs |
||||
# Read `man 5 sway-input` for more information about this section. |
||||
|
||||
### Key bindings |
||||
# |
||||
# Basics: |
||||
# |
||||
# Start a terminal |
||||
bindsym $mod+Return exec $term |
||||
|
||||
# Kill focused window |
||||
bindsym $mod+Shift+q kill |
||||
|
||||
# Start your launcher |
||||
bindsym $mod+d exec $menu |
||||
|
||||
# Drag floating windows by holding down $mod and left mouse button. |
||||
# Resize them with right mouse button + $mod. |
||||
# Despite the name, also works for non-floating windows. |
||||
# Change normal to inverse to use left mouse button for resizing and right |
||||
# mouse button for dragging. |
||||
floating_modifier $mod normal |
||||
|
||||
# Reload the configuration file |
||||
bindsym $mod+Shift+c reload |
||||
|
||||
# Exit sway (logs you out of your Wayland session) |
||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' |
||||
# |
||||
# Moving around: |
||||
# |
||||
# Move your focus around |
||||
bindsym $mod+$left focus left |
||||
bindsym $mod+$down focus down |
||||
bindsym $mod+$up focus up |
||||
bindsym $mod+$right focus right |
||||
# Or use $mod+[up|down|left|right] |
||||
bindsym $mod+Left focus left |
||||
bindsym $mod+Down focus down |
||||
bindsym $mod+Up focus up |
||||
bindsym $mod+Right focus right |
||||
|
||||
# Move the focused window with the same, but add Shift |
||||
bindsym $mod+Shift+$left move left |
||||
bindsym $mod+Shift+$down move down |
||||
bindsym $mod+Shift+$up move up |
||||
bindsym $mod+Shift+$right move right |
||||
# Ditto, with arrow keys |
||||
bindsym $mod+Shift+Left move left |
||||
bindsym $mod+Shift+Down move down |
||||
bindsym $mod+Shift+Up move up |
||||
bindsym $mod+Shift+Right move right |
||||
# |
||||
# Workspaces: |
||||
# |
||||
# Switch to workspace |
||||
bindsym $mod+1 workspace number 1 |
||||
bindsym $mod+2 workspace number 2 |
||||
bindsym $mod+3 workspace number 3 |
||||
bindsym $mod+4 workspace number 4 |
||||
bindsym $mod+5 workspace number 5 |
||||
bindsym $mod+6 workspace number 6 |
||||
bindsym $mod+7 workspace number 7 |
||||
bindsym $mod+8 workspace number 8 |
||||
bindsym $mod+9 workspace number 9 |
||||
bindsym $mod+0 workspace number 10 |
||||
# Move focused container to workspace |
||||
bindsym $mod+Shift+1 move container to workspace number 1 |
||||
bindsym $mod+Shift+2 move container to workspace number 2 |
||||
bindsym $mod+Shift+3 move container to workspace number 3 |
||||
bindsym $mod+Shift+4 move container to workspace number 4 |
||||
bindsym $mod+Shift+5 move container to workspace number 5 |
||||
bindsym $mod+Shift+6 move container to workspace number 6 |
||||
bindsym $mod+Shift+7 move container to workspace number 7 |
||||
bindsym $mod+Shift+8 move container to workspace number 8 |
||||
bindsym $mod+Shift+9 move container to workspace number 9 |
||||
bindsym $mod+Shift+0 move container to workspace number 10 |
||||
# Note: workspaces can have any name you want, not just numbers. |
||||
# We just use 1-10 as the default. |
||||
# |
||||
# Layout stuff: |
||||
# |
||||
# You can "split" the current object of your focus with |
||||
# $mod+b or $mod+v, for horizontal and vertical splits |
||||
# respectively. |
||||
bindsym $mod+b splith |
||||
bindsym $mod+v splitv |
||||
|
||||
# Switch the current container between different layout styles |
||||
bindsym $mod+s layout stacking |
||||
bindsym $mod+w layout tabbed |
||||
bindsym $mod+e layout toggle split |
||||
|
||||
# Make the current focus fullscreen |
||||
bindsym $mod+f fullscreen |
||||
|
||||
# Toggle the current focus between tiling and floating mode |
||||
bindsym $mod+Shift+space floating toggle |
||||
|
||||
# Swap focus between the tiling area and the floating area |
||||
bindsym $mod+space focus mode_toggle |
||||
|
||||
# Move focus to the parent container |
||||
bindsym $mod+a focus parent |
||||
# |
||||
# Scratchpad: |
||||
# |
||||
# Sway has a "scratchpad", which is a bag of holding for windows. |
||||
# You can send windows there and get them back later. |
||||
|
||||
# Move the currently focused window to the scratchpad |
||||
bindsym $mod+Shift+minus move scratchpad |
||||
|
||||
# Show the next scratchpad window or hide the focused scratchpad window. |
||||
# If there are multiple scratchpad windows, this command cycles through them. |
||||
bindsym $mod+minus scratchpad show |
||||
# |
||||
# Resizing containers: |
||||
# |
||||
mode "resize" { |
||||
# left will shrink the containers width |
||||
# right will grow the containers width |
||||
# up will shrink the containers height |
||||
# down will grow the containers height |
||||
bindsym $left resize shrink width 10px |
||||
bindsym $down resize grow height 10px |
||||
bindsym $up resize shrink height 10px |
||||
bindsym $right resize grow width 10px |
||||
|
||||
# Ditto, with arrow keys |
||||
bindsym Left resize shrink width 10px |
||||
bindsym Down resize grow height 10px |
||||
bindsym Up resize shrink height 10px |
||||
bindsym Right resize grow width 10px |
||||
|
||||
# Return to default mode |
||||
bindsym Return mode "default" |
||||
bindsym Escape mode "default" |
||||
} |
||||
bindsym $mod+r mode "resize" |
||||
|
||||
# |
||||
# Status Bar: |
||||
# |
||||
# 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 |
||||
} |
||||
} |
||||
|
||||
include /etc/sway/config.d/* |
||||
|
||||
exec /usr/libexec/pipewire-launcher |
||||
|
@ -0,0 +1,60 @@ |
||||
[General] |
||||
filedialog-path=@Variant(\0\0\0\x11\0\0\0\x39\x66ile:///home/inga/Downloads/video_2023-01-01_17-28-33.mp4) |
||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\xe\0\0\0\x30\0\0\x5\x1a\0\0\x5\xa7\0\0\0\xe\0\0\0\x30\0\0\x5\x1a\0\0\x5\xa7\0\0\0\0\0\0\0\0\b\x90\0\0\0\xe\0\0\0\x30\0\0\x5\x1a\0\0\x5\xa7) |
||||
|
||||
[Epanel] |
||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3R\0\0\x1\xf3\0\0\x5>\0\0\x3\xa0\0\0\x3R\0\0\x1\xf3\0\0\x5>\0\0\x3\xa0\0\0\0\0\0\0\0\0\b\x90\0\0\x3R\0\0\x1\xf3\0\0\x5>\0\0\x3\xa0) |
||||
|
||||
[FullScreen] |
||||
pos=@Point(0 0) |
||||
screen=@Rect(0 0 0 0) |
||||
wide=false |
||||
|
||||
[MainWindow] |
||||
QtStyle=System's default |
||||
adv-controls=0 |
||||
bgSize=@Size(1293 1328) |
||||
pl-dock-status=true |
||||
playlist-visible=true |
||||
playlistSize=@Size(1293 1305) |
||||
status-bar-visible=false |
||||
|
||||
[Mediainfo] |
||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\xe\0\0\0\x30\0\0\x5\x1a\0\0\x5\xa7\0\0\0\xe\0\0\0\x30\0\0\x5\x1a\0\0\x5\xa7\0\0\0\0\0\0\0\0\b\x90\0\0\0\xe\0\0\0\x30\0\0\x5\x1a\0\0\x5\xa7) |
||||
|
||||
[OpenDialog] |
||||
advanced=false |
||||
netMRL=https://somafm.com/nossl/christmas130.pls, https://pub5.di.fm/trance |
||||
size=@Size(526 405) |
||||
|
||||
[Playlist] |
||||
headerStateV2=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\xff\xff\xff\xff\x1\0\0\0\0\0\0\0\0\0\0\0\r\xec\x1f\0\0\0\n\0\0\0\f\0\0\0\x64\0\0\0\x3\0\0\0\x64\0\0\0\x2\0\0\0\x64\0\0\0\x5\0\0\0\x64\0\0\0\a\0\0\0\x64\0\0\0\x6\0\0\0\x64\0\0\0\t\0\0\0\x64\0\0\0\b\0\0\0\x64\0\0\0\v\0\0\0\x64\0\0\0\n\0\0\0\x64\0\0\x4S\0\0\0\r\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\r\0\0\x2\x1\0\0\0\x1\0\0\0\0\0\0\0P\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x2\x2\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64) |
||||
leftSplitterGeometry=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xc0\0\0\0\x80\x1\xff\xff\xff\xff\x1\0\0\0\x2\0) |
||||
splitterSizes=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xb4\0\0\x1\xa4\x1\xff\xff\xff\xff\x1\0\0\0\x1\0) |
||||
view-mode=1 |
||||
zoom=0 |
||||
|
||||
[Preferences] |
||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x2\xb9\0\0\x1l\0\0\x5\xd8\0\0\x4'\0\0\x2\xb9\0\0\x1l\0\0\x5\xd8\0\0\x4'\0\0\0\0\0\0\0\0\b\x90\0\0\x2\xb9\0\0\x1l\0\0\x5\xd8\0\0\x4') |
||||
|
||||
[RecentsMRL] |
||||
list=http://ice4.somafm.com/lush-128-aac, https://somafm.com/nossl/lush130.pls, http://ice1.somafm.com/secretagent-128-aac, https://somafm.com/nossl/secretagent130.pls, file:///mnt/storage/torrents/unsorted_tv/Queen.Sono.S01.1080p.NF.WEBRip.DDP5.1.x264-AMRAP[rartv]/Queen.Sono.S01E05.PROPER.1080p.WEB.X264-AMRAP.mkv, http://ice1.somafm.com/christmas-128-aac, file:///home/inga/Downloads/video_2023-01-01_17-28-33.mp4, https://pub5.di.fm/trance, file:///home/inga/Downloads/IMG_3927.MP4, file:///mnt/storage/torrents/unsorted_tv/Shadowhunters%20(2016)%20Season%201%20S01%20(1080p%20BluRay%20x265%20HEVC%2010bit%20AAC%205.1%20Vyndros)/Shadowhunters.S01E01.The.Mortal.Cup.1080p.10bit.BluRay.AAC5.1.HEVC-Vyndros.mkv, file:///mnt/storage/torrents/unsorted_tv/The%20Gifted%20(2017)%20Season%201%20S01%20(1080p%20AMZN%20WEB-DL%20x265%20HEVC%2010bit%20AAC%205.1%20Vyndros)/The%20Gifted%20(2017)%20-%20S01E11%20-%203%20X%20(1080p%20AMZN%20WEB-DL%20x265%20Vyndros).mkv, file:///mnt/storage/torrents/unsorted_tv/The%20Gifted%20(2017)%20Season%201%20S01%20(1080p%20AMZN%20WEB-DL%20x265%20HEVC%2010bit%20AAC%205.1%20Vyndros)/The%20Gifted%20(2017)%20-%20S01E07%20-%20eXtreme%20measures%20(1080p%20AMZN%20WEB-DL%20x265%20Vyndros).mkv, file:///mnt/storage/torrents/unsorted_tv/The%20Gifted%20(2017)%20Season%201%20S01%20(1080p%20AMZN%20WEB-DL%20x265%20HEVC%2010bit%20AAC%205.1%20Vyndros)/The%20Gifted%20(2017)%20-%20S01E05%20-%20boXed%20in%20(1080p%20AMZN%20WEB-DL%20x265%20Vyndros).mkv, file:///mnt/storage/torrents/unsorted_tv/The%20Gifted%20(2017)%20Season%201%20S01%20(1080p%20AMZN%20WEB-DL%20x265%20HEVC%2010bit%20AAC%205.1%20Vyndros)/The%20Gifted%20(2017)%20-%20S01E08%20-%20thread%20of%20eXtinction%20(1080p%20AMZN%20WEB-DL%20x265%20Vyndros).mkv, https://somafm.com/nossl/christmas130.pls |
||||
times=0, 0, 0, 0, 431483, 0, 67150, 0, 0, 0, 1008492, 1172072, 0, 1005323, 0 |
||||
|
||||
[ToolbarProfiles] |
||||
1\ProfileName=VLC 2.x.x Style |
||||
1\Value="0|64;39;64;38;65;|0-2;64;3;1;4;64;7;9;64;10;20;19;64-4;37;65;35-4;|12;11;13;14;|43;33-4;44;|0-2;64;3;1;4;64;37;64;38;64;8;65;25;35-4;34;" |
||||
2\ProfileName=VLC 1.1.x Style |
||||
2\Value="0|64;39;64;38;65;|0-2;64;3;1;4;64;7;10;9;64-4;20;19;64-4;37;65;35-4;|12;11;13;14;|5-1;33;6-1;|0-2;64;3;1;4;64;37;64;38;64;8;65;25;35-4;34;" |
||||
3\ProfileName=VLC 0.8.x Style |
||||
3\Value="1|64;39-1;64;38;|2-1;32-4;0-5;1-5;32-5;3-5;5-5;6-5;4-5;32-5;10-1;64-1;35-1;65;|12-1;11-1;13-1;14-1;|33;37-4;|0-5;1-5;32-1;1-5;5-1;6-1;4-5;32-1;12-5;11-1;65;34-4;35-1;" |
||||
4\ProfileName=Minimalist Style |
||||
4\Value="0|64;65;|0-7;64;3-1;1-5;4-1;64;12-5;64-5;37-5;38-5;64-4;10-1;65;36-4;|11-5;13-5;14-5;|5-1;33;6-1;|0-5;64;3-5;1-5;4-5;64;12-5;65;34-4;35-1;" |
||||
5\ProfileName=One-Liner Style |
||||
5\Value="0|64;38;65;|0-4;64;3;1;4;64;7;10;9;64-4;39;64-4;37;65;36-4;|12;11;14;13;|5-1;33;6-1;|0-2;64;3;1;4;64;37;64;38;64;8;65;25;35-4;34;" |
||||
6\ProfileName=Simplest Style |
||||
6\Value="0||36-4;65-4;0-7;4-5;1-5;65-4;7-5;|12-4;11;13;||36-4;65-4;0-5;4-5;1-5;65;8-5;" |
||||
size=6 |
||||
|
||||
[playlistdialog] |
||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\x1c\0\0\x1}\0\0\x5s\0\0\x4\x38\0\0\x3\x1c\0\0\x1}\0\0\x5s\0\0\x4\x38\0\0\0\0\0\0\0\0\b\x90\0\0\x3\x1c\0\0\x1}\0\0\x5s\0\0\x4\x38) |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,70 @@ |
||||
# Default cfg.yaml for way-displays. |
||||
# Copy this to ~/.config/way-displays/cfg.yaml and edit it to your liking. |
||||
# |
||||
# See https://github.com/alex-courtis/way-displays/blob/master/doc/CONFIGURATION.md |
||||
|
||||
|
||||
# Arrange displays in a ROW (default, left to right) or a COLUMN (top to bottom) |
||||
ARRANGE: ROW |
||||
|
||||
# Align ROWs at the TOP (default), MIDDLE or BOTTOM |
||||
# Align COLUMNs at the LEFT (default), MIDDLE or RIGHT |
||||
ALIGN: BOTTOM |
||||
|
||||
|
||||
# The default ORDER is simply the order in which the displays are discovered. |
||||
# Define your own. |
||||
ORDER: |
||||
- 'eDP-1' |
||||
- 'MateView' |
||||
#- 'DP-2' |
||||
#- 'monitor description' |
||||
#- 'HDMI-1' |
||||
|
||||
|
||||
# The default is to scale each display by DPI. |
||||
# This may be disabled and scale 1 will be used, unless a SCALE has been specified. |
||||
AUTO_SCALE: TRUE |
||||
|
||||
|
||||
# Auto scale may be overridden for each display. |
||||
SCALE: |
||||
- NAME_DESC: 'eDP-1' |
||||
SCALE: 2 |
||||
- NAME_DESC: 'MateView' |
||||
SCALE: 2 |
||||
#- NAME_DESC: 'monitor description' |
||||
# SCALE: 1.75 |
||||
|
||||
# Override the preferred mode. |
||||
# WARNING: this may result in an unusable display. See https://github.com/alex-courtis/way-displays#known-issues-with-workarounds |
||||
# for a possible workaround. |
||||
MODE: |
||||
# Resolution and refresh |
||||
#- NAME_DESC: HDMI-A-1 |
||||
# WIDTH: 1920 |
||||
# HEIGHT: 1080 |
||||
# HZ: 60 |
||||
|
||||
# Resolution with highest refresh |
||||
#- NAME_DESC: 'monitor description' |
||||
# WIDTH: 2560 |
||||
# HEIGHT: 1440 |
||||
|
||||
# Highest available |
||||
#- NAME_DESC: DP-2 |
||||
# MAX: TRUE |
||||
|
||||
# Laptop displays usually start with eDP e.g. eDP-1. This may be overridden if |
||||
# your laptop is different. |
||||
#LAPTOP_DISPLAY_PREFIX: 'eDP' |
||||
|
||||
|
||||
# One of: ERROR, WARNING, INFO (default), DEBUG |
||||
LOG_THRESHOLD: INFO |
||||
|
||||
|
||||
# Disable the specified displays. |
||||
DISABLED: |
||||
#- "eDP-1" |
||||
|
@ -0,0 +1,271 @@ |
||||
* { |
||||
/* `otf-font-awesome` is required to be installed for icons */ |
||||
font-family: Roboto, 'Font Awesome 6 Free', Helvetica, Arial, sans-serif; |
||||
font-size: 13px; |
||||
} |
||||
|
||||
window#waybar { |
||||
background-color: rgba(43, 48, 59, 0.5); |
||||
border-bottom: 3px solid rgba(100, 114, 125, 0.5); |
||||
color: #ffffff; |
||||
transition-property: background-color; |
||||
transition-duration: .5s; |
||||
} |
||||
|
||||
window#waybar.hidden { |
||||
opacity: 0.2; |
||||
} |
||||
|
||||
/* |
||||
window#waybar.empty { |
||||
background-color: transparent; |
||||
} |
||||
window#waybar.solo { |
||||
background-color: #FFFFFF; |
||||
} |
||||
*/ |
||||
|
||||
window#waybar.termite { |
||||
background-color: #3F3F3F; |
||||
} |
||||
|
||||
window#waybar.chromium { |
||||
background-color: #000000; |
||||
border: none; |
||||
} |
||||
|
||||
#workspaces button { |
||||
padding: 0 5px; |
||||
background-color: transparent; |
||||
color: #ffffff; |
||||
/* Use box-shadow instead of border so the text isn't offset */ |
||||
box-shadow: inset 0 -3px transparent; |
||||
/* Avoid rounded borders under each workspace name */ |
||||
border: none; |
||||
border-radius: 0; |
||||
} |
||||
|
||||
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ |
||||
#workspaces button:hover { |
||||
background: rgba(0, 0, 0, 0.2); |
||||
box-shadow: inset 0 -3px #ffffff; |
||||
} |
||||
|
||||
#workspaces button.focused { |
||||
background-color: #64727D; |
||||
box-shadow: inset 0 -3px #ffffff; |
||||
} |
||||
|
||||
#workspaces button.urgent { |
||||
background-color: #eb4d4b; |
||||
} |
||||
|
||||
#mode { |
||||
background-color: #64727D; |
||||
border-bottom: 3px solid #ffffff; |
||||
} |
||||
|
||||
#clock, |
||||
#battery, |
||||
#cpu, |
||||
#memory, |
||||
#disk, |
||||
#temperature, |
||||
#backlight, |
||||
#network, |
||||
#pulseaudio, |
||||
#wireplumber, |
||||
#custom-media, |
||||
#tray, |
||||
#mode, |
||||
#idle_inhibitor, |
||||
#mpd { |
||||
padding: 0 10px; |
||||
color: #ffffff; |
||||
} |
||||
|
||||
#window, |
||||
#workspaces { |
||||
margin: 0 4px; |
||||
} |
||||
|
||||
/* If workspaces is the leftmost module, omit left margin */ |
||||
.modules-left > widget:first-child > #workspaces { |
||||
margin-left: 0; |
||||
} |
||||
|
||||
/* If workspaces is the rightmost module, omit right margin */ |
||||
.modules-right > widget:last-child > #workspaces { |
||||
margin-right: 0; |
||||
} |
||||
|
||||
#clock { |
||||
background-color: #64727D; |
||||
} |
||||
|
||||
#battery { |
||||
background-color: #ffffff; |
||||
color: #000000; |
||||
} |
||||
|
||||
#battery.charging, #battery.plugged { |
||||
color: #ffffff; |
||||
background-color: #26A65B; |
||||
} |
||||
|
||||
@keyframes blink { |
||||
to { |
||||
background-color: #ffffff; |
||||
color: #000000; |
||||
} |
||||
} |
||||
|
||||
#battery.critical:not(.charging) { |
||||
background-color: #f53c3c; |
||||
color: #ffffff; |
||||
animation-name: blink; |
||||
animation-duration: 0.5s; |
||||
animation-timing-function: linear; |
||||
animation-iteration-count: infinite; |
||||
animation-direction: alternate; |
||||
} |
||||
|
||||
label:focus { |
||||
background-color: #000000; |
||||
} |
||||
|
||||
#cpu { |
||||
background-color: #2ecc71; |
||||
color: #000000; |
||||
} |
||||
|
||||
#memory { |
||||
background-color: #9b59b6; |
||||
} |
||||
|
||||
#disk { |
||||
background-color: #964B00; |
||||
} |
||||
|
||||
#backlight { |
||||
background-color: #90b1b1; |
||||
} |
||||
|
||||
#network { |
||||
background-color: #2980b9; |
||||
} |
||||
|
||||
#network.disconnected { |
||||
background-color: #f53c3c; |
||||
} |
||||
|
||||
#pulseaudio { |
||||
background-color: #f1c40f; |
||||
color: #000000; |
||||
} |
||||
|
||||
#pulseaudio.muted { |
||||
background-color: #90b1b1; |
||||
color: #2a5c45; |
||||
} |
||||
|
||||
#custom-media { |
||||
background-color: #66cc99; |
||||
color: #2a5c45; |
||||
min-width: 100px; |
||||
} |
||||
|
||||
#custom-media.custom-spotify { |
||||
background-color: #66cc99; |
||||
} |
||||
|
||||
#custom-media.custom-vlc { |
||||
background-color: #ffa000; |
||||
} |
||||
|
||||
#temperature { |
||||
background-color: #f0932b; |
||||
} |
||||
|
||||
#temperature.critical { |
||||
background-color: #eb4d4b; |
||||
} |
||||
|
||||
#tray { |
||||
background-color: #2980b9; |
||||
} |
||||
|
||||
#tray > .passive { |
||||
-gtk-icon-effect: dim; |
||||
} |
||||
|
||||
#tray > .needs-attention { |
||||
-gtk-icon-effect: highlight; |
||||
background-color: #eb4d4b; |
||||
} |
||||
|
||||
#idle_inhibitor { |
||||
background-color: #2d3436; |
||||
} |
||||
|
||||
#idle_inhibitor.activated { |
||||
background-color: #ecf0f1; |
||||
color: #2d3436; |
||||
} |
||||
|
||||
#mpd { |
||||
background-color: #66cc99; |
||||
color: #2a5c45; |
||||
} |
||||
|
||||
#mpd.disconnected { |
||||
background-color: #f53c3c; |
||||
} |
||||
|
||||
#mpd.stopped { |
||||
background-color: #90b1b1; |
||||
} |
||||
|
||||
#mpd.paused { |
||||
background-color: #51a37a; |
||||
} |
||||
|
||||
#language { |
||||
background: #00b093; |
||||
color: #740864; |
||||
padding: 0 5px; |
||||
margin: 0 5px; |
||||
min-width: 16px; |
||||
} |
||||
|
||||
#keyboard-state { |
||||
background: #97e1ad; |
||||
color: #000000; |
||||
padding: 0 0px; |
||||
margin: 0 5px; |
||||
min-width: 16px; |
||||
} |
||||
|
||||
#keyboard-state > label { |
||||
padding: 0 5px; |
||||
} |
||||
|
||||
#keyboard-state > label.locked { |
||||
background: rgba(0, 0, 0, 0.2); |
||||
} |
||||
|
||||
#tags button:not(.occupied) { |
||||
} |
||||
|
||||
#tags button.occupied { |
||||
color: #ffffff; |
||||
} |
||||
|
||||
#tags button.focused { |
||||
background: #666666; |
||||
} |
||||
|
||||
#tags button { |
||||
padding-left: 0; |
||||
padding-right: 0; |
||||
} |
@ -0,0 +1,11 @@ |
||||
local wezterm = require 'wezterm' |
||||
|
||||
return { |
||||
default_prog = { "nu" }, |
||||
color_scheme = "Violet Light", |
||||
font_size = 13, |
||||
hide_tab_bar_if_only_one_tab = true, |
||||
scrollback_lines = 100000, |
||||
enable_scroll_bar = true, |
||||
font = wezterm.font('VictorMono Nerd Font', { italic = true }), |
||||
} |
@ -0,0 +1,5 @@ |
||||
[screencast] |
||||
#chooser_cmd=bemenu-run -i -n |
||||
chooser_cmd=bemenu |
||||
chooser_type=dmenu |
||||
|
@ -0,0 +1,9 @@ |
||||
# This is Git's per-user configuration file. |
||||
[user] |
||||
# Please adapt and uncomment the following lines: |
||||
# name = username |
||||
# email = user@ema.il |
||||
[credential] |
||||
helper = store |
||||
[init] |
||||
defaultBranch = main |
@ -0,0 +1 @@ |
||||
export EDITOR=micro |
@ -0,0 +1,3 @@ |
||||
#!/bin/sh |
||||
echo mem > /sys/power/state |
||||
|
@ -0,0 +1,2 @@ |
||||
event=button/micmute MICMUTE 00000080 00000000 K |
||||
action=amixer set 'Capture' toggle |
@ -0,0 +1,14 @@ |
||||
#/media/sda1/apks |
||||
|
||||
#@v3.16 https://dl-cdn.alpinelinux.org/alpine/v3.16/main |
||||
#@v3.16 https://dl-cdn.alpinelinux.org/alpine/v3.16/community |
||||
|
||||
#http://alpine.sakamoto.pl/alpine/v3.16/main |
||||
#http://alpine.sakamoto.pl/alpine/v3.16/community |
||||
http://alpine.sakamoto.pl/alpine/edge/main |
||||
http://alpine.sakamoto.pl/alpine/edge/community |
||||
http://alpine.sakamoto.pl/alpine/edge/testing |
||||
##http://mirror1.hs-esslingen.de/pub/Mirrors/alpine/edge/main |
||||
##http://mirror1.hs-esslingen.de/pub/Mirrors/alpine/edge/community |
||||
##http://mirror1.hs-esslingen.de/pub/Mirrors/alpine/edge/testing |
||||
|
@ -0,0 +1,140 @@ |
||||
acct |
||||
adwaita-icon-theme |
||||
alpine-base |
||||
alsa-tools-gui |
||||
alsa-utils |
||||
bemenu |
||||
binutils |
||||
bottom |
||||
bridge |
||||
cage |
||||
chelf |
||||
chromium |
||||
chrony |
||||
cifs-utils |
||||
code-oss=1.83.1-r1 |
||||
curl |
||||
dbus |
||||
dbus-openrc |
||||
deadbeef |
||||
diebahn |
||||
diebahn-dbg |
||||
doas |
||||
dosfstools |
||||
dua |
||||
dunst |
||||
dust |
||||
e2fsprogs |
||||
element-desktop |
||||
elogind |
||||
eudev |
||||
exa |
||||
firefox |
||||
foliate |
||||
font-awesome |
||||
font-noto-emoji |
||||
font-roboto |
||||
font-victor-mono-nerd |
||||
foot |
||||
gcompat |
||||
gdb |
||||
gedit |
||||
git |
||||
glib-dbg |
||||
gnome-keyring |
||||
gnupg |
||||
greetd |
||||
greetd-agreety |
||||
greetd-gtkgreet |
||||
greetd-openrc |
||||
grimshot |
||||
grub-efi |
||||
gsettings-desktop-schemas |
||||
gtk4.0-dbg |
||||
imagemagick |
||||
iptables |
||||
iwd |
||||
libstdc++ |
||||
libtracker |
||||
light |
||||
linux-firmware-amd |
||||
linux-firmware-amd-ucode |
||||
linux-firmware-amdgpu |
||||
linux-firmware-ath11k |
||||
linux-firmware-intel |
||||
linux-firmware-mediatek |
||||
linux-firmware-other |
||||
linux-firmware-rtl_bt |
||||
linux-firmware-rtl_nic |
||||
linux-lts |
||||
lxc |
||||
lxc-download |
||||
lxc-templates |
||||
lxcfs |
||||
lxd |
||||
lxd-client |
||||
lxd-openrc |
||||
mandoc |
||||
mc |
||||
mesa-dri-gallium |
||||
mesa-va-gallium |
||||
micro |
||||
ncdu |
||||
neofetch |
||||
nushell |
||||
openssh-client |
||||
openssl |
||||
ouch |
||||
pamixer |
||||
pciutils-libs |
||||
pipewire |
||||
pipewire-alsa |
||||
pipewire-pulse |
||||
pipewire-tools |
||||
pm-utils |
||||
polkit-elogind |
||||
polkit-gnome |
||||
procps |
||||
pulsemixer |
||||
qt6-qtwayland |
||||
river |
||||
river-doc |
||||
rofi-emoji |
||||
rofi-emoji-wayland |
||||
rsync |
||||
rtkit |
||||
setxkbmap |
||||
socat |
||||
sof-bin |
||||
sshfs |
||||
starship |
||||
sudo |
||||
sway |
||||
swayimg |
||||
telegram-desktop |
||||
terminus-font |
||||
thunderbird |
||||
ttf-dejavu |
||||
tzdata |
||||
udisks2 |
||||
v4l-utils |
||||
vlc-qt |
||||
way-displays |
||||
waybar |
||||
wdisplays |
||||
wezterm |
||||
wf-recorder |
||||
wireplumber |
||||
wob |
||||
wtype |
||||
xdg-desktop-portal |
||||
xdg-desktop-portal-gtk |
||||
xdg-desktop-portal-wlr |
||||
xev |
||||
xeyes |
||||
xwayland |
||||
xwininfo |
||||
xz |
||||
yt-dlp |
||||
yubikey-manager |
||||
zzz |
@ -0,0 +1,16 @@ |
||||
[terminal] |
||||
# The VT to run the greeter on. Can be "next", "current" or a number |
||||
# designating the VT. |
||||
vt = 1 |
||||
|
||||
# The default session, also known as the greeter. |
||||
[default_session] |
||||
|
||||
# `agreety` is the bundled agetty/login-lookalike. You can replace `/bin/sh` |
||||
# with whatever you want started, such as `sway`. |
||||
command = "cage -s -- gtkgreet" |
||||
|
||||
# The user to run the command as. The privileges this user must have depends |
||||
# on the greeter. A graphical greeter may for example require the user to be |
||||
# in the `video` group. |
||||
user = "greetd" |
@ -0,0 +1,16 @@ |
||||
[terminal] |
||||
# The VT to run the greeter on. Can be "next", "current" or a number |
||||
# designating the VT. |
||||
vt = 1 |
||||
|
||||
# The default session, also known as the greeter. |
||||
[default_session] |
||||
|
||||
# `agreety` is the bundled agetty/login-lookalike. You can replace `/bin/sh` |
||||
# with whatever you want started, such as `sway`. |
||||
command = "agreety --cmd /bin/sh" |
||||
|
||||
# The user to run the command as. The privileges this user must have depends |
||||
# on the greeter. A graphical greeter may for example require the user to be |
||||
# in the `video` group. |
||||
user = "greetd" |
@ -0,0 +1,3 @@ |
||||
inga-river |
||||
inga-sway |
||||
ash |
@ -0,0 +1,2 @@ |
||||
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="amdgpu_bl0", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness" |
||||
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="amdgpu_bl0", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness" |
@ -0,0 +1,5 @@ |
||||
#!/bin/sh |
||||
|
||||
#kanshi -c /home/inga/.config/kanshi/config & |
||||
gtkgreet $0 |
||||
|
@ -0,0 +1,23 @@ |
||||
#!/bin/sh |
||||
|
||||
export GDK_BACKEND=wayland,x11 |
||||
export MOZ_ENABLE_WAYLAND=1 |
||||
export CLUTTER_BACKEND=wayland |
||||
export QT_QPA_PLATFORM=wayland-egl |
||||
export ECORE_EVAS_ENGINE=wayland-egl |
||||
export ELM_ENGINE=wayland_egl |
||||
export SDL_VIDEODRIVER=wayland |
||||
export _JAVA_AWT_WM_NONREPARENTING=1 |
||||
export NO_AT_BRIDGE=1 |
||||
export BEMENU_BACKEND=wayland |
||||
export XDG_CURRENT_DESKTOP=sway |
||||
|
||||
export XKB_DEFAULT_LAYOUT=us,ru |
||||
#export XKB_DEFAULT_VARIANT=dvp, |
||||
export XKB_DEFAULT_OPTIONS=grp:caps_toggle |
||||
|
||||
eval $(gnome-keyring-daemon) |
||||
export SSH_AUTH_SOCK |
||||
|
||||
dbus-run-session -- river $@ |
||||
|
@ -0,0 +1,15 @@ |
||||
#!/bin/sh |
||||
|
||||
export GDK_BACKEND=wayland,x11 |
||||
export MOZ_ENABLE_WAYLAND=1 |
||||
export CLUTTER_BACKEND=wayland |
||||
export QT_QPA_PLATFORM=wayland-egl |
||||
export ECORE_EVAS_ENGINE=wayland-egl |
||||
export ELM_ENGINE=wayland_egl |
||||
export SDL_VIDEODRIVER=wayland |
||||
export _JAVA_AWT_WM_NONREPARENTING=1 |
||||
export NO_AT_BRIDGE=1 |
||||
export BEMENU_BACKEND=wayland |
||||
|
||||
dbus-run-session -- sway $@ |
||||
|
@ -0,0 +1,4 @@ |
||||
#!/bin/sh |
||||
killall /usr/libexec/xdg-desktop-portal |
||||
killall /usr/libexec/xdg-desktop-portal-wlr |
||||
/usr/libexec/xdg-desktop-portal-wlr |
@ -0,0 +1,658 @@ |
||||
# |
||||
# ALSA library configuration file |
||||
# |
||||
|
||||
# pre-load the configuration files |
||||
|
||||
@hooks [ |
||||
{ |
||||
func load |
||||
files [ |
||||
"/var/lib/alsa/conf.d" |
||||
"/usr/etc/alsa/conf.d" |
||||
"/etc/alsa/conf.d" |
||||
"/etc/asound.conf|||/usr/etc/asound.conf" |
||||
"~/.asoundrc" |
||||
{ |
||||
@func concat |
||||
strings [ |
||||
{ |
||||
@func getenv |
||||
vars [ |
||||
XDG_CONFIG_HOME |
||||
] |
||||
default "~/.config" |
||||
} |
||||
"/alsa/asoundrc" |
||||
] |
||||
} |
||||
] |
||||
errors false |
||||
} |
||||
] |
||||
|
||||
# load card-specific configuration files (on request) |
||||
|
||||
cards.@hooks [ |
||||
{ |
||||
func load |
||||
files [ |
||||
{ |
||||
@func concat |
||||
strings [ |
||||
{ @func datadir } |
||||
"/cards/aliases.conf" |
||||
] |
||||
} |
||||
] |
||||
} |
||||
{ |
||||
func load_for_all_cards |
||||
files [ |
||||
{ |
||||
@func concat |
||||
strings [ |
||||
{ @func datadir } |
||||
"/cards/" |
||||
{ @func private_string } |
||||
".conf" |
||||
] |
||||
} |
||||
{ |
||||
root { |
||||
@func private_integer |
||||
} |
||||
file { |
||||
@func concat |
||||
strings [ |
||||
"/var/lib/alsa/card" |
||||
{ @func private_integer } |
||||
".conf.d" |
||||
] |
||||
} |
||||
} |
||||
] |
||||
table { |
||||
id { |
||||
@func concat |
||||
strings [ |
||||
{ @func private_integer } |
||||
] |
||||
} |
||||
value { |
||||
@func concat |
||||
strings [ |
||||
"cards." |
||||
{ @func private_string } |
||||
] |
||||
} |
||||
} |
||||
errors false |
||||
} |
||||
] |
||||
|
||||
# |
||||
# defaults |
||||
# |
||||
|
||||
# show all name hints also for definitions without hint {} section |
||||
defaults.namehint.showall off |
||||
# show just basic name hints |
||||
defaults.namehint.basic on |
||||
# show extended name hints |
||||
defaults.namehint.extended off |
||||
# |
||||
defaults.ctl.card 0 |
||||
defaults.pcm.card 0 |
||||
defaults.pcm.device 0 |
||||
defaults.pcm.subdevice -1 |
||||
defaults.pcm.nonblock 1 |
||||
defaults.pcm.compat 0 |
||||
defaults.pcm.minperiodtime 5000 # in us |
||||
defaults.pcm.ipc_key 5678293 |
||||
defaults.pcm.ipc_gid audio |
||||
defaults.pcm.ipc_perm 0660 |
||||
defaults.pcm.tstamp_type default |
||||
defaults.pcm.dmix.max_periods 0 |
||||
defaults.pcm.dmix.channels 2 |
||||
defaults.pcm.dmix.rate 48000 |
||||
defaults.pcm.dmix.format unchanged |
||||
defaults.pcm.dmix.card defaults.pcm.card |
||||
defaults.pcm.dmix.device defaults.pcm.device |
||||
defaults.pcm.dsnoop.card defaults.pcm.card |
||||
defaults.pcm.dsnoop.device defaults.pcm.device |
||||
defaults.pcm.front.card defaults.pcm.card |
||||
defaults.pcm.front.device defaults.pcm.device |
||||
defaults.pcm.rear.card defaults.pcm.card |
||||
defaults.pcm.rear.device defaults.pcm.device |
||||
defaults.pcm.center_lfe.card defaults.pcm.card |
||||
defaults.pcm.center_lfe.device defaults.pcm.device |
||||
defaults.pcm.side.card defaults.pcm.card |
||||
defaults.pcm.side.device defaults.pcm.device |
||||
defaults.pcm.surround21.card defaults.pcm.card |
||||
defaults.pcm.surround21.device defaults.pcm.device |
||||
defaults.pcm.surround40.card defaults.pcm.card |
||||
defaults.pcm.surround40.device defaults.pcm.device |
||||
defaults.pcm.surround41.card defaults.pcm.card |
||||
defaults.pcm.surround41.device defaults.pcm.device |
||||
defaults.pcm.surround50.card defaults.pcm.card |
||||
defaults.pcm.surround50.device defaults.pcm.device |
||||
defaults.pcm.surround51.card defaults.pcm.card |
||||
defaults.pcm.surround51.device defaults.pcm.device |
||||
defaults.pcm.surround71.card defaults.pcm.card |
||||
defaults.pcm.surround71.device defaults.pcm.device |
||||
defaults.pcm.iec958.card defaults.pcm.card |
||||
defaults.pcm.iec958.device defaults.pcm.device |
||||
defaults.pcm.modem.card defaults.pcm.card |
||||
defaults.pcm.modem.device defaults.pcm.device |
||||
defaults.pcm.file_format raw |
||||
defaults.pcm.file_truncate true # truncate files via file or tee PCM |
||||
defaults.rawmidi.card 0 |
||||
defaults.rawmidi.device 0 |
||||
defaults.rawmidi.subdevice -1 |
||||
defaults.hwdep.card 0 |
||||
defaults.hwdep.device 0 |
||||
defaults.timer.class 2 |
||||
defaults.timer.sclass 0 |
||||
defaults.timer.card 0 |
||||
defaults.timer.device 0 |
||||
defaults.timer.subdevice 0 |
||||
|
||||
# |
||||
# PCM interface |
||||
# |
||||
|
||||
pcm.hw { |
||||
@args [ CARD DEV SUBDEV ] |
||||
@args.CARD { |
||||
type string |
||||
default { |
||||
@func getenv |
||||
vars [ |
||||
ALSA_PCM_CARD |
||||
ALSA_CARD |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.pcm.card |
||||
} |
||||
} |
||||
} |
||||
@args.DEV { |
||||
type integer |
||||
default { |
||||
@func igetenv |
||||
vars [ |
||||
ALSA_PCM_DEVICE |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.pcm.device |
||||
} |
||||
} |
||||
} |
||||
@args.SUBDEV { |
||||
type integer |
||||
default { |
||||
@func refer |
||||
name defaults.pcm.subdevice |
||||
} |
||||
} |
||||
type hw |
||||
card $CARD |
||||
device $DEV |
||||
subdevice $SUBDEV |
||||
hint { |
||||
show { |
||||
@func refer |
||||
name defaults.namehint.extended |
||||
} |
||||
description "Direct hardware device without any conversions" |
||||
} |
||||
} |
||||
|
||||
pcm.plughw { |
||||
@args [ CARD DEV SUBDEV ] |
||||
@args.CARD { |
||||
type string |
||||
default { |
||||
@func getenv |
||||
vars [ |
||||
ALSA_PCM_CARD |
||||
ALSA_CARD |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.pcm.card |
||||
} |
||||
} |
||||
} |
||||
@args.DEV { |
||||
type integer |
||||
default { |
||||
@func igetenv |
||||
vars [ |
||||
ALSA_PCM_DEVICE |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.pcm.device |
||||
} |
||||
} |
||||
} |
||||
@args.SUBDEV { |
||||
type integer |
||||
default { |
||||
@func refer |
||||
name defaults.pcm.subdevice |
||||
} |
||||
} |
||||
type plug |
||||
slave.pcm { |
||||
type hw |
||||
card $CARD |
||||
device $DEV |
||||
subdevice $SUBDEV |
||||
} |
||||
hint { |
||||
show { |
||||
@func refer |
||||
name defaults.namehint.extended |
||||
} |
||||
description "Hardware device with all software conversions" |
||||
} |
||||
} |
||||
|
||||
pcm.plug { |
||||
@args [ SLAVE ] |
||||
@args.SLAVE { |
||||
type string |
||||
} |
||||
type plug |
||||
slave.pcm $SLAVE |
||||
} |
||||
|
||||
pcm.shm { |
||||
@args [ SOCKET PCM ] |
||||
@args.SOCKET { |
||||
type string |
||||
} |
||||
@args.PCM { |
||||
type string |
||||
} |
||||
type shm |
||||
server $SOCKET |
||||
pcm $PCM |
||||
} |
||||
|
||||
pcm.tee { |
||||
@args [ SLAVE FILE FORMAT ] |
||||
@args.SLAVE { |
||||
type string |
||||
} |
||||
@args.FILE { |
||||
type string |
||||
} |
||||
@args.FORMAT { |
||||
type string |
||||
default { |
||||
@func refer |
||||
name defaults.pcm.file_format |
||||
} |
||||
} |
||||
type file |
||||
slave.pcm $SLAVE |
||||
file $FILE |
||||
format $FORMAT |
||||
truncate { |
||||
@func refer |
||||
name defaults.pcm.file_truncate |
||||
} |
||||
} |
||||
|
||||
pcm.file { |
||||
@args [ FILE FORMAT ] |
||||
@args.FILE { |
||||
type string |
||||
} |
||||
@args.FORMAT { |
||||
type string |
||||
default { |
||||
@func refer |
||||
name defaults.pcm.file_format |
||||
} |
||||
} |
||||
type file |
||||
slave.pcm null |
||||
file $FILE |
||||
format $FORMAT |
||||
truncate { |
||||
@func refer |
||||
name defaults.pcm.file_truncate |
||||
} |
||||
} |
||||
|
||||
pcm.null { |
||||
type null |
||||
hint { |
||||
show { |
||||
@func refer |
||||
name defaults.namehint.basic |
||||
} |
||||
description "Discard all samples (playback) or generate zero samples (capture)" |
||||
} |
||||
} |
||||
|
||||
# redirect to load-on-demand extended pcm definitions |
||||
pcm.cards cards.pcm |
||||
|
||||
pcm.default cards.pcm.default |
||||
pcm.sysdefault cards.pcm.default |
||||
pcm.front cards.pcm.front |
||||
pcm.rear cards.pcm.rear |
||||
pcm.center_lfe cards.pcm.center_lfe |
||||
pcm.side cards.pcm.side |
||||
pcm.surround21 cards.pcm.surround21 |
||||
pcm.surround40 cards.pcm.surround40 |
||||
pcm.surround41 cards.pcm.surround41 |
||||
pcm.surround50 cards.pcm.surround50 |
||||
pcm.surround51 cards.pcm.surround51 |
||||
pcm.surround71 cards.pcm.surround71 |
||||
pcm.iec958 cards.pcm.iec958 |
||||
pcm.spdif iec958 |
||||
pcm.hdmi cards.pcm.hdmi |
||||
pcm.dmix cards.pcm.dmix |
||||
pcm.dsnoop cards.pcm.dsnoop |
||||
pcm.modem cards.pcm.modem |
||||
pcm.phoneline cards.pcm.phoneline |
||||
|
||||
# |
||||
# Control interface |
||||
# |
||||
|
||||
ctl.default cards.ctl.default |
||||
ctl.sysdefault cards.ctl.default |
||||
|
||||
ctl.hw { |
||||
@args [ CARD ] |
||||
@args.CARD { |
||||
type string |
||||
default { |
||||
@func getenv |
||||
vars [ |
||||
ALSA_CTL_CARD |
||||
ALSA_CARD |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.ctl.card |
||||
} |
||||
} |
||||
} |
||||
type hw |
||||
card $CARD |
||||
hint.description "Direct control device" |
||||
} |
||||
|
||||
ctl.shm { |
||||
@args [ SOCKET CTL ] |
||||
@args.SOCKET { |
||||
type string |
||||
} |
||||
@args.CTL { |
||||
type string |
||||
} |
||||
type shm |
||||
server $SOCKET |
||||
ctl $CTL |
||||
} |
||||
|
||||
# |
||||
# RawMidi interface |
||||
# |
||||
|
||||
rawmidi.default { |
||||
type hw |
||||
card { |
||||
@func getenv |
||||
vars [ |
||||
ALSA_RAWMIDI_CARD |
||||
ALSA_CARD |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.rawmidi.card |
||||
} |
||||
} |
||||
device { |
||||
@func igetenv |
||||
vars [ |
||||
ALSA_RAWMIDI_DEVICE |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.rawmidi.device |
||||
} |
||||
} |
||||
hint.description "Default raw MIDI device" |
||||
} |
||||
|
||||
rawmidi.hw { |
||||
@args [ CARD DEV SUBDEV ] |
||||
@args.CARD { |
||||
type string |
||||
default { |
||||
@func getenv |
||||
vars [ |
||||
ALSA_RAWMIDI_CARD |
||||
ALSA_CARD |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.rawmidi.card |
||||
} |
||||
} |
||||
} |
||||
@args.DEV { |
||||
type integer |
||||
default { |
||||
@func igetenv |
||||
vars [ |
||||
ALSA_RAWMIDI_DEVICE |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.rawmidi.device |
||||
} |
||||
} |
||||
} |
||||
@args.SUBDEV { |
||||
type integer |
||||
default -1 |
||||
} |
||||
type hw |
||||
card $CARD |
||||
device $DEV |
||||
subdevice $SUBDEV |
||||
hint { |
||||
description "Direct rawmidi driver device" |
||||
device $DEV |
||||
} |
||||
} |
||||
|
||||
rawmidi.virtual { |
||||
@args [ MERGE ] |
||||
@args.MERGE { |
||||
type string |
||||
default 1 |
||||
} |
||||
type virtual |
||||
merge $MERGE |
||||
} |
||||
|
||||
# |
||||
# Sequencer interface |
||||
# |
||||
|
||||
seq.default { |
||||
type hw |
||||
hint.description "Default sequencer device" |
||||
} |
||||
|
||||
seq.hw { |
||||
type hw |
||||
} |
||||
|
||||
# |
||||
# HwDep interface |
||||
# |
||||
|
||||
hwdep.default { |
||||
type hw |
||||
card { |
||||
@func getenv |
||||
vars [ |
||||
ALSA_HWDEP_CARD |
||||
ALSA_CARD |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.hwdep.card |
||||
} |
||||
} |
||||
device { |
||||
@func igetenv |
||||
vars [ |
||||
ALSA_HWDEP_DEVICE |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.hwdep.device |
||||
} |
||||
} |
||||
hint.description "Default hardware dependent device" |
||||
} |
||||
|
||||
hwdep.hw { |
||||
@args [ CARD DEV ] |
||||
@args.CARD { |
||||
type string |
||||
default { |
||||
@func getenv |
||||
vars [ |
||||
ALSA_HWDEP_CARD |
||||
ALSA_CARD |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.hwdep.card |
||||
} |
||||
} |
||||
} |
||||
@args.DEV { |
||||
type integer |
||||
default { |
||||
@func igetenv |
||||
vars [ |
||||
ALSA_HWDEP_DEVICE |
||||
] |
||||
default { |
||||
@func refer |
||||
name defaults.hwdep.device |
||||
} |
||||
} |
||||
} |
||||
type hw |
||||
card $CARD |
||||
device $DEV |
||||
hint { |
||||
description "Direct hardware dependent device" |
||||
device $DEV |
||||
} |
||||
} |
||||
|
||||
# |
||||
# Timer interface |
||||
# |
||||
|
||||
timer_query.default { |
||||
type hw |
||||
} |
||||
|
||||
timer_query.hw { |
||||
type hw |
||||
} |
||||
|
||||
timer.default { |
||||
type hw |
||||
class { |
||||
@func refer |
||||
name defaults.timer.class |
||||
} |
||||
sclass { |
||||
@func refer |
||||
name defaults.timer.sclass |
||||
} |
||||
card { |
||||
@func refer |
||||
name defaults.timer.card |
||||
} |
||||
device { |
||||
@func refer |
||||
name defaults.timer.device |
||||
} |
||||
subdevice { |
||||
@func refer |
||||
name defaults.timer.subdevice |
||||
} |
||||
hint.description "Default timer device" |
||||
} |
||||
|
||||
timer.hw { |
||||
@args [ CLASS SCLASS CARD DEV SUBDEV ] |
||||
@args.CLASS { |
||||
type integer |
||||
default { |
||||
@func refer |
||||
name defaults.timer.class |
||||
} |
||||
} |
||||
@args.SCLASS { |
||||
type integer |
||||
default { |
||||
@func refer |
||||
name defaults.timer.sclass |
||||
} |
||||
} |
||||
@args.CARD { |
||||
type string |
||||
default { |
||||
@func refer |
||||
name defaults.timer.card |
||||
} |
||||
} |
||||
@args.DEV { |
||||
type integer |
||||
default { |
||||
@func refer |
||||
name defaults.timer.device |
||||
} |
||||
} |
||||
@args.SUBDEV { |
||||
type integer |
||||
default { |
||||
@func refer |
||||
name defaults.timer.subdevice |
||||
} |
||||
} |
||||
type hw |
||||
class $CLASS |
||||
sclass $SCLASS |
||||
card $CARD |
||||
device $DEV |
||||
subdevice $SUBDEV |
||||
hint { |
||||
description "Direct timer device" |
||||
device $DEV |
||||
} |
||||
} |
Loading…
Reference in new issue