Add post_install script
Changes post installation mechanics. The longer description from the readme is now under `./notes/futher_installation`. The new `post_install.sh` checks if further installation is needed
This commit is contained in:
parent
de244f9ea7
commit
c516e9c3ad
324
README.md
324
README.md
|
@ -4,280 +4,39 @@ more!
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
$ git clone --depth=1 'ssh://git@github.com:22/Aizuko/configs.git' configs
|
```bash
|
||||||
$ cd configs && bash ./install.sh --help
|
git clone --depth=1 'ssh://git@codeberg.org:22/akemi/dotfiles.git' dotfiles
|
||||||
|
cd dotfiles
|
||||||
Use `./install.sh install` to symlink configs. Anything not linked will be
|
bash ./install.sh --help
|
||||||
reported and can be viewed at any time with `./install.sh status`. After linking
|
|
||||||
files, proceed to the [post-installation](#Post-Installation) section
|
|
||||||
|
|
||||||
Don't worry, the script won't overwrite anything and doesn't even touch anything
|
|
||||||
without an explicit `install` argument
|
|
||||||
|
|
||||||
### Info
|
|
||||||
|
|
||||||
Verified platforms:
|
|
||||||
|
|
||||||
- **EndeavourOS 5.19.6** with Bash **5.1.16**
|
|
||||||
- **MacOS 10.15.{3,5}** with Bash **5.1.8** and **3.2.57**
|
|
||||||
- Almost certainly works on any Arch-based distro and likely most of Linux
|
|
||||||
|
|
||||||
The mindset behind these:
|
|
||||||
|
|
||||||
- If it can be done in a shell, it probably should be done in a shell
|
|
||||||
- The mouse is too far away
|
|
||||||
- As fast as possible
|
|
||||||
|
|
||||||
Configs are kept as consistent as possible between Mac and Linux, without
|
|
||||||
sacrificing anything on either end. See the [keybinds for
|
|
||||||
reference](#Keybinding-methodology)
|
|
||||||
|
|
||||||
Linux is configured to run Sway. It's extremely light and incredibly fast.
|
|
||||||
Although almost everything works on Wayland at this point, the Sway config can
|
|
||||||
be trivially ported to i3 running on Xorg. An Arch-based distro will make
|
|
||||||
installing the right packages easier, though is by no means required
|
|
||||||
|
|
||||||
MacOS is configured to run Yabai with Skhd. This takes some tweaking. Check out
|
|
||||||
the [Post-installation section for MacOS](#MacOS) beforehand. These config files
|
|
||||||
were written on and font MacOS Catalina 10.15. Some things may not work in newer
|
|
||||||
versions, though most things should be fine
|
|
||||||
|
|
||||||
The `./notes` directory contains various reference files. They can be accessed
|
|
||||||
quickly by running `notes`
|
|
||||||
|
|
||||||
# Post Installation
|
|
||||||
|
|
||||||
## Both
|
|
||||||
|
|
||||||
Use `bash package_install.sh status` to see which packages are missing on your
|
|
||||||
system. `./package_install.sh install` will try to install additional packages.
|
|
||||||
This is very likely to work on MacOS and any `pacman`-using distro. If it's not
|
|
||||||
working, install them manually by looking through `./package_install.sh status`
|
|
||||||
|
|
||||||
This script does not install many heavier packages, such as `gimp`, `sway`, and
|
|
||||||
`ffmpeg`. Check out `./notes/further_installation.md` for a list of these and
|
|
||||||
install them manually
|
|
||||||
|
|
||||||
## Linux
|
|
||||||
|
|
||||||
#### Fonts
|
|
||||||
|
|
||||||
Many scripts assume you have access to [Meslo LGM
|
|
||||||
NerdFont](https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/Meslo/M).
|
|
||||||
These can be replaced easily with any other nerd font. Other fonts may lack
|
|
||||||
support for the right character set
|
|
||||||
|
|
||||||
$ mv -i downloaded-fonts/* ~/.local/share/fonts
|
|
||||||
# mv -i downloaded-fonts/* /usr/local/share/fonts
|
|
||||||
|
|
||||||
See the [ArchWiki](https://wiki.archlinux.org/title/fonts#Manual_installation)
|
|
||||||
for more information. TexLive downloads a lot of additional fonts by default too
|
|
||||||
|
|
||||||
#### xRemap
|
|
||||||
|
|
||||||
Remapping keys is done through `xremap`. Despite the name, it works flawlessly
|
|
||||||
on Wayland, at least in Sway
|
|
||||||
|
|
||||||
Depending on your environment, you need to install a different binary, all of
|
|
||||||
which are available through `cargo`. For example `cargo install xremap
|
|
||||||
--features sway`. Check [here for more
|
|
||||||
options](https://github.com/k0kubun/xremap#installation).
|
|
||||||
|
|
||||||
If you're using systemd, run the following:
|
|
||||||
|
|
||||||
```
|
|
||||||
# ln -s ~/.configs_pointer/xremap/config{_console,}.yml
|
|
||||||
# mkdir -p /etc/xremap
|
|
||||||
# ln -s {~/.configs_pointer,/etc}/xremap/config.yml
|
|
||||||
# cp ~/.configs_pointer/systemd/xremap.service /etc/systemd/system/xremap.service
|
|
||||||
# cp ~/.cargo/bin/xremap /usr/local/bin/xremap
|
|
||||||
# systemctl enable xremap.service
|
|
||||||
# systemctl start xremap.service
|
|
||||||
# switch_keyboards.sh pc
|
|
||||||
```
|
```
|
||||||
|
|
||||||
You can toggle between Mac-style keyboard and standard keyboard with
|
`install.sh status` tells you which files can be linked and which ones are
|
||||||
`switch_keyboards.sh` see the doc-comment `vi $(which switch_keyboards.sh)` for
|
already on your system. Move the ones on your system out of the way before
|
||||||
more information
|
continuing
|
||||||
|
|
||||||
`sway/config` acts as a hotkey daemon and `wtype` can synthesize input
|
|
||||||
|
|
||||||
#### Sway
|
|
||||||
|
|
||||||
To run sway, install the `sway` and `swaylock` packages. Both configs reference
|
|
||||||
`default_wallpaper.png` in their respective directories. Put your wallpaper
|
|
||||||
there or change the corresponding `config` file
|
|
||||||
|
|
||||||
If sway is acting up, try setting/unsetting `WAYLAND_DISPLAY` and `SWAYSOCK`.
|
|
||||||
`swaymsg` also takes an `-s` option which can specify the socket manually
|
|
||||||
|
|
||||||
Sway doesn't adjust the gamma on external displays. Compared to MacOS,
|
|
||||||
everything looks very washed-out and low contrast. Using `wl-sunset` with `-t
|
|
||||||
4000 -T 6500 -g 0.9` brings MacOS-like gamma curves
|
|
||||||
|
|
||||||
For more information about sway, read the [i3 User's
|
|
||||||
Guide](https://i3wm.org/docs/userguide.html). Particularly chapters 3 and 4 are
|
|
||||||
very important for sway
|
|
||||||
|
|
||||||
#### Multilingual input
|
|
||||||
IME-style inputs require a complicated setup on wayland. The method described
|
|
||||||
here unfortunately scales like Xwayland. That is to say it's very blurry on a
|
|
||||||
HiDPI display. Also, IMEs don't work in Alacritty yet. Consider [foot
|
|
||||||
terminal](https://codeberg.org/dnkl/foot) if this is important
|
|
||||||
|
|
||||||
If you only need an IME in Chromium, [Google Input
|
|
||||||
Tools](https://chrome.google.com/webstore/detail/google-input-tools/mclkkofklkfljcocdinagocijmpgbhab)
|
|
||||||
is a pretty decent solution. It scales properly on wayland and doesn't require a
|
|
||||||
spotty setup. However, it doesn't work in the search bar and makes network calls
|
|
||||||
for kanji lookups, which can be really slow
|
|
||||||
|
|
||||||
Otherwise you can use fcitx5. Choose a supported IME based on what language you
|
|
||||||
need [here](https://wiki.archlinux.org/title/Input_method). For the example
|
|
||||||
below we'll install Mozc
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
please pacman -S fcitx5 fcitx5-configtool fcitx5-gtk fcitx5-qt fcitx5-mozc
|
bash install.sh install
|
||||||
please pacman -S gtk4 # For Chromium support
|
bash install_packages.sh install
|
||||||
```
|
```
|
||||||
|
|
||||||
Next add these lines to `/etc/environment`
|
If you're running ArchLinux or EndeavourOS, `post_install.sh` will help guide
|
||||||
```
|
you through additional installation steps you can take. See
|
||||||
GTK_IM_MODULE=fcitx
|
`./notes/futher_installation/` for a description of these steps
|
||||||
QT_IM_MODULE=fcitx
|
|
||||||
XMODIFIERS=@im=fcitx
|
|
||||||
MOZ_ENABLE_WAYLAND=1
|
|
||||||
```
|
|
||||||
|
|
||||||
Currently, Chromium will only interface with fcitx5 when it's running on the
|
## Support
|
||||||
non-default gtk4. Add `--gtk-version=4` to `~/.config/chromium-flags.conf`. As
|
|
||||||
of writing, this breaks Chromium's built-in file manager, the one for picking
|
|
||||||
files. Use Firefox for a better fcitx5 experience
|
|
||||||
|
|
||||||
Open fcitx5-configtool to set the required keyboards and change the global
|
Official support is for the latest version of bash and EndeavourOS only. The
|
||||||
hotkey. For Mozc, you'd move the Mozc keyboard to the left. Not the other
|
MacOS dotfiles were working on Catalina (10.15) and likely mostly work on newer
|
||||||
Japanese keyboards, those are not IME-based
|
versions as well
|
||||||
|
|
||||||
You may need to reboot wayland or possibly the entire system. Fcitx5 will now be
|
As of writing, EndeavourOS is on Linux **5.19.6** and bash is version **5.1.16**
|
||||||
available will the following command. Consider adding the following to
|
|
||||||
`sway/config` if you want it on startup, or use `<M-i>` to toggle in on/off
|
|
||||||
|
|
||||||
```bash
|
For Linux, these dotfiles setup [sway](https://github.com/swaywm/sway) on
|
||||||
fcitx5 -d --replace
|
[wayland](https://wayland.freedesktop.org/), a completely different compositor
|
||||||
```
|
from xorg. Migration may be tricky
|
||||||
|
|
||||||
#### AV1 media
|
# Keybinding
|
||||||
AV1 is the hottest new codec on the block, providing compression levels better
|
|
||||||
than h265. I've seen it 200x smaller than png, with the same resolution and
|
|
||||||
color space
|
|
||||||
|
|
||||||
To store images as avif, use `magick convert my_image_name.{png,avif}`. `viu`
|
|
||||||
has no support for avif. `imv` supports it out of the box. `vimiv` requires a qt
|
|
||||||
plugin for support:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
please pacman -S libavif
|
|
||||||
# Get the latest release from below, for example
|
|
||||||
# https://github.com/novomesk/qt-avif-image-plugin/releases/latest
|
|
||||||
curl -LO 'https://github.com/novomesk/qt-avif-image-plugin/archive/refs/tags/v0.5.0.tar.gz'
|
|
||||||
tar xf qt-avif-image-plugin-0.5.0.tar.gz
|
|
||||||
cd qt-avif-image-plugin-0.5.0
|
|
||||||
./build_libqavif_dynamic.sh
|
|
||||||
please make install
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Chromium
|
|
||||||
Chromium does not support screen sharing by default on wayland. To add support
|
|
||||||
go into `chrome://flags` and enable the "WebRTC PipeWire support" flag. Next
|
|
||||||
download the following a reboot to allow screen sharing
|
|
||||||
|
|
||||||
```
|
|
||||||
please pacman -S xdg-desktop-portal-wlr libpipewire02
|
|
||||||
```
|
|
||||||
|
|
||||||
Consider disabling "Continue running background apps when Chromium is closed" in
|
|
||||||
settings
|
|
||||||
|
|
||||||
Fix the default fonts in `chrome://settings/fonts`. These are the fallback fonts
|
|
||||||
|
|
||||||
#### Firefox
|
|
||||||
Firefox will start on xorg by default, unless the `MOZ_ENABLE_WAYLAND=1`
|
|
||||||
environment variable is set. Incognito is enabled through the `--private-window`
|
|
||||||
flag
|
|
||||||
|
|
||||||
Firefox uses `about:config` stored in
|
|
||||||
`~/.mozilla/firefox/<random-hash>.default-release/prefs.js`. These are the
|
|
||||||
equivalent of Chromium flags. For these configs, simply switch
|
|
||||||
`ui.key.menuAccessKeyFocuses` to false, to avoid conflicts with xremap
|
|
||||||
|
|
||||||
#### Backlights
|
|
||||||
Laptops usually control the backlight via apci. One program to control this is
|
|
||||||
[light](https://github.com/haikarainen/light). By default light requires the use
|
|
||||||
of root privileges to modify devices. Use systemd rules and the video group to
|
|
||||||
allow unprivileged users to run it normally:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -LO 'https://raw.githubusercontent.com/haikarainen/light/master/90-backlight.rules'
|
|
||||||
please mkdir -p /usr/lib/udev/rules.d
|
|
||||||
please cp 90-backlight.rules /usr/lib/udev/rules.d
|
|
||||||
# Add your user to the video group
|
|
||||||
please usermod -aG video emiliko
|
|
||||||
```
|
|
||||||
|
|
||||||
## MacOS
|
|
||||||
|
|
||||||
Macs aren't even close to Linux in virtualisation capabilities, window managers,
|
|
||||||
and customizability in general. However, if you're unfortunate enough to find
|
|
||||||
yourself with a macbook, all is not lost. Here's a rough porting guide:
|
|
||||||
|
|
||||||
| sWayland | MacOS |
|
|
||||||
| --------------------- | -------- |
|
|
||||||
| SwayWM | [Yabai](https://github.com/koekeishiya/yabai) |
|
|
||||||
| xRemap | [Karabiner-Elements](https://karabiner-elements.pqrs.org/) |
|
|
||||||
| ~/.config/sway/config | [skhd](https://github.com/koekeishiya/skhd) |
|
|
||||||
| swhkd | [skhd](https://github.com/koekeishiya/skhd) |
|
|
||||||
| wtype | [skhd](https://github.com/koekeishiya/skhd) |
|
|
||||||
| systemd | Launchd |
|
|
||||||
| Zathura | [Skim](https://skim-app.sourceforge.io/) |
|
|
||||||
| Fuzzel | [Choose](https://github.com/chipsenkbeil/choose) or Spotlight |
|
|
||||||
| udisksctl | `diskutil`
|
|
||||||
| ~/.local/share/fonts | FontBook |
|
|
||||||
| wl-clipboard | `pbcopy` `pbpaste` |
|
|
||||||
| sshd | System Preference -> Sharing -> Remote Login |
|
|
||||||
| Super/Ctrl | Command |
|
|
||||||
| Alt | Opt |
|
|
||||||
| $0 | +$1000 |
|
|
||||||
|
|
||||||
For Xorg users, `yabai` is to `skhd` what `bspwm` is to `sxhkd`. Also `launchd`
|
|
||||||
is wayyy less capable than `systemd` and rarely gets used. The `launchd` script
|
|
||||||
in `./bin` wraps around all the commands you'll ever need
|
|
||||||
|
|
||||||
To use open source apps, run `sudo spctl --master-disable`, then head to System
|
|
||||||
Preferences -> Security & Privacy -> General and select Anywhere at the bottom.
|
|
||||||
You can check it's working with `spctl --status`
|
|
||||||
|
|
||||||
While you're here, you can go under Software Updates and uncheck everything
|
|
||||||
|
|
||||||
#### Window managers
|
|
||||||
|
|
||||||
MacOS only allows the default Quartz Compositor, a floating window manager with
|
|
||||||
too many animations and almost no keyboard controls. There are two open source
|
|
||||||
tiling window managers, which are just scripts overtop Quartz Compositor as
|
|
||||||
alternatives. [Amethyst](https://github.com/ianyh/Amethyst) and
|
|
||||||
[Yabai](https://github.com/koekeishiya/yabai)
|
|
||||||
|
|
||||||
Amethyst provides basic tiling of windows and basic keyboard controls. Yabai is
|
|
||||||
effectively a port of bspwm to MacOS and has much more extensive configuration
|
|
||||||
than Amethyst, notably controlling workspaces. Unfortunately they don't hold a
|
|
||||||
candle to Linux managers. Both can be very laggy and Yabai specifically often
|
|
||||||
freezes up for a few seconds, though these are the only options.
|
|
||||||
|
|
||||||
To use Yabai, boot into recovery mode, and disable SIP [as explained
|
|
||||||
here](https://github.com/koekeishiya/yabai/wiki/Disabling-System-Integrity-Protection).
|
|
||||||
Despite what apple says, this doesn't make the system immediately explode.
|
|
||||||
Actually there's no difference at all, except being able to use Yabai
|
|
||||||
|
|
||||||
# Methodology
|
|
||||||
## Keybinding
|
|
||||||
Generally keybindings follow this scheme for `skhd`/`xremap`, bash, and vim's
|
Generally keybindings follow this scheme for `skhd`/`xremap`, bash, and vim's
|
||||||
insert mode. They roughly resemble Emac's default. Outliers are bolded. These
|
insert mode. They roughly resemble Emac's default. Outliers are bolded. These
|
||||||
are written assuming Ctrl is mapped to CapsLock
|
are written assuming Ctrl is mapped to CapsLock
|
||||||
|
@ -286,44 +45,17 @@ When possible selecting is preferred to actually deleting the text
|
||||||
|
|
||||||
| Type | Start of line | Back word | Back character | Forward character | Forward word | End of line |
|
| Type | Start of line | Back word | Back character | Forward character | Forward word | End of line |
|
||||||
| ---- | ------------- | --------- | -------------- | ----------------- | ------------ | ----------- |
|
| ---- | ------------- | --------- | -------------- | ----------------- | ------------ | ----------- |
|
||||||
| Movement | `^a` | **`^b`** | **`^j`** | `^f` | **`^w`** | `^e` |
|
| Movement | `^a` | **`^b`** | **`^j`** | `^f` | **`^w`** | `^e` |
|
||||||
| Deletion | | **`^u`** | `^h` | `^d` | | `^k` |
|
| Deletion | | **`^u`** | `^h` | `^d` | | `^k` |
|
||||||
|
|
||||||
Window managers are bound to the Super/Command/Logo key. This conflicts with
|
Window managers are bound to the Super/Command/Logo key. This is the key
|
||||||
MacOS's defaults at times
|
adjacent to the spacebar
|
||||||
|
|
||||||
## Light and Dark Mode
|
# Light and Dark Mode
|
||||||
|
|
||||||
### Graphical
|
|
||||||
|
|
||||||
Light mode remains somewhat spotty and probably will indefinitely. On Wayland
|
|
||||||
there's [wluma](https://github.com/maximbaz/wluma) which is a port of MacOS's
|
|
||||||
[Lumen](https://github.com/anishathalye/lumen). Both can somewhat help alleviate
|
|
||||||
rapid changes in on-screen content brightness
|
|
||||||
|
|
||||||
There's a UserStyle.css file, tested with
|
|
||||||
[Stylus](https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne)
|
|
||||||
on Chromium which provides dark themes for many additional sites, such as the
|
|
||||||
ArchWiki
|
|
||||||
|
|
||||||
### Text mode
|
|
||||||
|
|
||||||
Alacritty, tmux, vim, vifm, vimiv are all synchronously colored through
|
Alacritty, tmux, vim, vifm, vimiv are all synchronously colored through
|
||||||
`bin/colo.sh`. This script supports multiple color schemes and makes it easy to
|
`bin/colo.sh`. This script supports multiple color schemes and makes it easy to
|
||||||
add new ones.
|
add new ones.
|
||||||
|
|
||||||
Vifm has a "light" and "dark" mode which plays better with generally "lighter"
|
In running instances of vim and vifm, use `:Light` or `:Dark` to update their
|
||||||
and "darker" color schemes. This can be manually changed with `:Light` and
|
color scheme to match Alacritty. New instances are automatically updated
|
||||||
`:Dark`
|
|
||||||
|
|
||||||
Vim similarly has shortcuts for the included color schemes. `:Dark[1-4]` and
|
|
||||||
`:Light[1-4]` change to some hand-picked good ones. Additionally `:Darkh`
|
|
||||||
changes to a higher-contrast version of the `:Dark` color scheme
|
|
||||||
|
|
||||||
## Todo
|
|
||||||
The only one done configing is you, Ricky
|
|
||||||
|
|
||||||
- Maildir with aerc
|
|
||||||
- [Himalaya](https://git.sr.ht/~soywod/himalaya-cli) instead of aerc?
|
|
||||||
- Setup irc client?
|
|
||||||
- Organize notes
|
|
||||||
|
|
|
@ -237,11 +237,10 @@ print_config_status() {
|
||||||
print_install_completion_msg() {
|
print_install_completion_msg() {
|
||||||
cat <<END
|
cat <<END
|
||||||
|
|
||||||
Dotfile installation complete. If you have an internet connection, run
|
Dotfile installation complete.
|
||||||
|
|
||||||
./install_packages.sh
|
To install packages, run: \`./package_install.sh help\`
|
||||||
|
To check additional options, run: \`./post_install.sh help\`
|
||||||
to complete the config installation.
|
|
||||||
END
|
END
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -345,5 +344,3 @@ iterate_over_configs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|
||||||
# vim: set ft=bash syn=bash sw=2 ff=unix:
|
|
||||||
|
|
|
@ -305,5 +305,3 @@ ask () {
|
||||||
|
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|
||||||
# vim: set ft=bash syn=bash sw=2 ff=unix:
|
|
||||||
|
|
298
post_install.sh
Executable file
298
post_install.sh
Executable file
|
@ -0,0 +1,298 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
print_help() {
|
||||||
|
cat <<HELP
|
||||||
|
Check additional installation steps for linux. No output is a good sign
|
||||||
|
|
||||||
|
See ~/.configs_pointer/notes/futher_installation/further_installation_linux.md
|
||||||
|
for a more complete explanation
|
||||||
|
|
||||||
|
ARGS:
|
||||||
|
help Print this menu and exit
|
||||||
|
status Checks the status of additional installation steps. May need sudo
|
||||||
|
HELP
|
||||||
|
}
|
||||||
|
|
||||||
|
configs_pointer_is_setup() {
|
||||||
|
if ! [[ -e ~/.configs_pointer ]]; then
|
||||||
|
printf "Symlink ~/.configs_pointer does not exist\n"
|
||||||
|
elif ! [[ -L ~/.configs_pointer ]]; then
|
||||||
|
printf "~/.configs_pointer is not a symlink\n"
|
||||||
|
elif ! [[ -x ~/.configs_pointer/post_install.sh ]]; then
|
||||||
|
printf "No post_install.sh in directory ~/.configs_pointer\n"
|
||||||
|
elif ! [[ ~/.configs_pointer/post_install.sh -ef ./post_install.sh ]]; then
|
||||||
|
printf "post_install.sh in directory ~/.configs_pointer is not this file\n"
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "Please run ./install.sh before running this file\n"
|
||||||
|
printf "Aborting...\n"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Sway / Swaylock
|
||||||
|
####################
|
||||||
|
swayland_checks() {
|
||||||
|
check_sway_wallpaper
|
||||||
|
check_swaylock_wallpaper
|
||||||
|
}
|
||||||
|
|
||||||
|
check_sway_wallpaper() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if ! [[ -r ~/.configs_pointer/sway/default_wallpaper.png ]]; then
|
||||||
|
printf "ERR: Missing default wallpaper for sway\n"
|
||||||
|
printf "\tAdd default_wallpaper.png to ./sway\n"
|
||||||
|
printf "tIt doesn't actually have to be a png file, just that extension\n"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ -r ~/.configs_pointer/sway/secondary_wallpaper.png ]]; then
|
||||||
|
printf "ERR: Missing secondary wallpaper for sway\n"
|
||||||
|
printf "\tAdd secondary_wallpaper.png to ./sway\n"
|
||||||
|
printf "tIt doesn't actually have to be a png file, just that extension\n"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
check_swaylock_wallpaper() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if ! [[ -r ~/.configs_pointer/swaylock/default_wallpaper.png ]]; then
|
||||||
|
printf "ERR: Missing default wallpaper for swaylock\n"
|
||||||
|
printf "\tAdd default_wallpaper.png to ./swaylock\n"
|
||||||
|
printf "tIt doesn't actually have to be a png file, just that extension\n"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Tmux
|
||||||
|
####################
|
||||||
|
tmux_check() {
|
||||||
|
check_tmux_plugins
|
||||||
|
}
|
||||||
|
|
||||||
|
check_tmux_plugins() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if [[ -d ~/.configs_pointer/tmux/plugins ]]; then
|
||||||
|
printf "ERR: Missing tmux plugins\n"
|
||||||
|
cat <<HELP
|
||||||
|
mkdir ~/.configs_pointer/tmux/plugins
|
||||||
|
git clone --depth=1 'https://github.com/tmux-plugins/tpm' ~/.configs_pointer/tmux/plugins/tpm
|
||||||
|
Press: <prefix>R
|
||||||
|
Press: <prefix>I
|
||||||
|
Press: <prefix>R
|
||||||
|
HELP
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Xremap
|
||||||
|
####################
|
||||||
|
xremap_checks() {
|
||||||
|
check_xremap_config
|
||||||
|
check_xremap_etc
|
||||||
|
check_xremap_executable
|
||||||
|
check_xremap_systemd
|
||||||
|
}
|
||||||
|
|
||||||
|
check_xremap_config() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if ! [[ -r ~/.configs_pointer/xremap/config.yml ]]; then
|
||||||
|
printf "ERR: Missing config.yml for xremap\n"
|
||||||
|
printf "\tTry ln -s ./xremap/config{_console,}.yml\n"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
check_xremap_etc() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if ! [[ -e /etc/xremap/config.yml ]]; then
|
||||||
|
printf "ERR: Missing config.yml for xremap in /etc\n"
|
||||||
|
printf "\t $ please ln -s ~/.configs_pointer/xremap/config.yml /etc/xremap/config.yml\n"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ -e /etc/systemd/system/xremap.service ]]; then
|
||||||
|
printf "ERR: Missing service file for xremap\n"
|
||||||
|
printf "\t $ please cp ~/.configs_pointer/systemd/xremap.service /etc/systemd/system/xremap.service\n"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
check_xremap_executable() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if ! [[ -x /usr/local/bin/xremap ]]; then
|
||||||
|
printf "ERR: Missing systemd binary for xremap\n"
|
||||||
|
printf "\t $ please cp ~/.cargo/bin/xremap /usr/local/bin/xremap\n"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
check_xremap_systemd() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if ! systemctl is-enabled --quiet xremap &>/dev/null; then
|
||||||
|
printf "ERR: xremap.service not enabled in systemd\n"
|
||||||
|
printf "\t $ systemctl enable xremap\n"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! systemctl is-active --quiet xremap &>/dev/null; then
|
||||||
|
printf "ERR: systemd is not running xremap.service\n"
|
||||||
|
printf "\t $ systemctl start xremap\n"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Browsers
|
||||||
|
####################
|
||||||
|
browser_checks() {
|
||||||
|
check_firefox_wayland
|
||||||
|
}
|
||||||
|
|
||||||
|
check_firefox_wayland() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if ! grep 'MOZ_ENABLE_WAYLAND=1' /etc/environment &>/dev/null; then
|
||||||
|
printf "ERR: Missing wayland envvar for firefox\n"
|
||||||
|
printf '\t $ please echo "MOZ_ENABLE_WAYLAND=1" >> /etc/environment\n'
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Backlight
|
||||||
|
####################
|
||||||
|
backlight_checks() {
|
||||||
|
if pacman -Qi ddcutil &>/dev/null; then # Check if it's a laptop
|
||||||
|
printf "All good" &>/dev/null
|
||||||
|
else
|
||||||
|
check_backlight_rules
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_backlight_rules() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if ! [[ -e /usr/lib/udev/rules.d/90-backlight.rules ]]; then
|
||||||
|
printf "ERR: Missing rules for backlight\n"
|
||||||
|
printf "\tFollow the instructions for haikarainen/light on github, at the bottom of the README\n"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! id | grep 'video' &>/dev/null; then
|
||||||
|
printf "ERR: Your user is not in the video group\n"
|
||||||
|
printf "\t $ please usermod -aG video %s\n" "$USER"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Fcitx
|
||||||
|
####################
|
||||||
|
fcitx_checks() {
|
||||||
|
check_fcitx_envvars
|
||||||
|
}
|
||||||
|
|
||||||
|
check_fcitx_envvars() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if ! grep -E '^GTK_IM_MODULE=fcitx$' /etc/environment &>/dev/null; then
|
||||||
|
printf "ERR: Missing GTK envvar for fcitx\n"
|
||||||
|
printf '\t $ please echo "GTK_IM_MODULE=fcitx" >> /etc/environment\n'
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! grep -E '^QT_IM_MODULE=fcitx$' /etc/environment &>/dev/null; then
|
||||||
|
printf "ERR: Missing QT envvar for fcitx\n"
|
||||||
|
printf '\t $ please echo "QT_IM_MODULE=fcitx" >> /etc/environment\n'
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! grep -E '^XMODIFIERS=@im=fcitx$' /etc/environment &>/dev/null; then
|
||||||
|
printf "ERR: Missing XMODIFIERS envvar for fcitx\n"
|
||||||
|
printf '\t $ please echo "XMODIFIERS=@im=fcitx" >> /etc/environment\n'
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Av1 / vimiv
|
||||||
|
####################
|
||||||
|
av1_checks() {
|
||||||
|
check_vimiv_plugin
|
||||||
|
check_libavif
|
||||||
|
}
|
||||||
|
|
||||||
|
check_vimiv_plugin() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if ! [[ -e /usr/lib/qt/plugins/imageformats/libqavif.so ]]; then
|
||||||
|
printf "ERR: Missing avif support for vimiv\n"
|
||||||
|
cat <<HELP
|
||||||
|
$ curl -LO 'https://github.com/novomesk/qt-avif-image-plugin/archive/refs/tags/v0.5.0.tar.gz'
|
||||||
|
$ tar xf qt-avif-image-plugin-0.5.0.tar.gz
|
||||||
|
$ cd qt-avif-image-plugin-0.5.0
|
||||||
|
$ ./build_libqavif_dynamic.sh
|
||||||
|
$ please make install
|
||||||
|
HELP
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
check_libavif() {
|
||||||
|
local return_code=0
|
||||||
|
|
||||||
|
if ! ls /var/lib/pacman/local/libavif* &>/dev/null; then
|
||||||
|
printf "ERR: Missing system-wide avif support\n"
|
||||||
|
printf "\t $ please pacman -S libavif\n"
|
||||||
|
return_code=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $return_code
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "$1" == 'status' && "$(uname -s)" == 'Linux' ]]; then
|
||||||
|
configs_pointer_is_setup || exit 1
|
||||||
|
|
||||||
|
swayland_checks
|
||||||
|
xremap_checks
|
||||||
|
browser_checks
|
||||||
|
backlight_checks
|
||||||
|
fcitx_checks
|
||||||
|
av1_checks
|
||||||
|
tmux_check
|
||||||
|
else
|
||||||
|
print_help
|
||||||
|
fi
|
|
@ -152,13 +152,12 @@ set-window-option -g window-status-format "\
|
||||||
|
|
||||||
set-option -g status-right "\
|
set-option -g status-right "\
|
||||||
#[fg=yellow, bg=black] #S #(whoami) \
|
#[fg=yellow, bg=black] #S #(whoami) \
|
||||||
#[fg=black, bg=yellow] CPU: #{cpu_percentage} "
|
#[fg=black, bg=yellow] #(uname -s) "
|
||||||
|
|
||||||
set-window-option -g window-status-separator ''
|
set-window-option -g window-status-separator ''
|
||||||
|
|
||||||
# Plugins ===========================================================
|
# Plugins ===========================================================
|
||||||
set -g @plugin 'nhdaly/tmux-better-mouse-mode'
|
set -g @plugin 'nhdaly/tmux-better-mouse-mode'
|
||||||
set -g @plugin 'tmux-plugins/tmux-cpu'
|
|
||||||
|
|
||||||
set -g @scroll-speed-num-lines-per-scroll "1"
|
set -g @scroll-speed-num-lines-per-scroll "1"
|
||||||
set -g @emulate-scroll-for-no-mouse-alternate-buffer "on" # Scroll manpages
|
set -g @emulate-scroll-for-no-mouse-alternate-buffer "on" # Scroll manpages
|
||||||
|
|
Loading…
Reference in a new issue