Compare commits
29 Commits
8a5f9b8131
...
master
Author | SHA1 | Date |
---|---|---|
Florian Schrofner | 2668afbc3f | |
Florian Schrofner | d996280f35 | |
Florian Schrofner | c61f8700fd | |
Florian Schrofner | 6fa17f0d53 | |
Florian Schrofner | 45df534cb8 | |
Florian Schrofner | ec154a0467 | |
Florian Schrofner | a6c47742a6 | |
Florian Schrofner | 379bc0070a | |
Florian Schrofner | 2c379d0679 | |
Florian Schrofner | cd0450fe51 | |
Florian Schrofner | 9fc9c55051 | |
Florian Schrofner | 3e30014fc7 | |
Florian Schrofner | e12c78e56c | |
Florian Schrofner | baf2e92376 | |
Florian Schrofner | 50026fbd6f | |
Florian Schrofner | dd02d6f59f | |
Florian Schrofner | 192cbd54d1 | |
Florian Schrofner | 3924935810 | |
Florian Schrofner | 4830116cb4 | |
Florian Schrofner | 4c25b6d461 | |
Florian Schrofner | 53d6e2d75e | |
Florian Schrofner | ef48062929 | |
Florian Schrofner | 017e064175 | |
Florian Schrofner | db7b08be15 | |
Florian Schrofner | d7abf97803 | |
Florian Schrofner | 67c0a8ded4 | |
Florian Schrofner | 1674039e36 | |
Florian Schrofner | a739ccf140 | |
Florian Schrofner | a319bed149 |
|
@ -0,0 +1,16 @@
|
||||||
|
#!/usr/bin/env bb
|
||||||
|
|
||||||
|
(require
|
||||||
|
'[clojure.string :as str])
|
||||||
|
|
||||||
|
(def user (System/getenv "SUDO_USER"))
|
||||||
|
|
||||||
|
;;executes shell command but throws exception on error
|
||||||
|
(defn- safe-sh [& commands]
|
||||||
|
(as-> (apply shell/sh commands) $
|
||||||
|
(if (= (:exit $) 0) $ (throw (Exception. (:err $))))))
|
||||||
|
|
||||||
|
;;executes command as user calling this script with sudo
|
||||||
|
(defn- safe-sh-as-user [& commands]
|
||||||
|
(safe-sh "su" "-c" (str/join " " (map #(if (str/includes? % " ") (str "\"" % "\"") %) commands)) user))
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
# once there are more types, this should be handled by a parameter
|
|
||||||
__manjaro_desktop
|
|
|
@ -1,16 +0,0 @@
|
||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
package="$__object_id"
|
|
||||||
user="$(cat "$__object/parameter/user")"
|
|
||||||
directory="$(cat "$__object/parameter/directory")/$package"
|
|
||||||
|
|
||||||
#install dependencies as root
|
|
||||||
echo "grep makedepends $directory/PKGBUILD > $directory/deps;"
|
|
||||||
echo "source $directory/deps;"
|
|
||||||
echo 'if [[ !(${#makedepends[@]} -eq 0) ]]; then pacman -Sy --noconfirm --needed --asdeps "${makedepends[@]}"; else echo "no make dependencies"; fi;'
|
|
||||||
|
|
||||||
#make package as user
|
|
||||||
echo "su - $user -s /bin/bash -c \"(cd $directory && makepkg -f)\";"
|
|
||||||
|
|
||||||
#install package as root
|
|
||||||
echo "pacman --noconfirm -U $directory/*-x86_64.pkg.*;"
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
package="$__object_id"
|
|
||||||
user="$(cat "$__object/parameter/user")"
|
|
||||||
directory="$(cat "$__object/parameter/directory")"
|
|
||||||
packagedir="$directory/$package"
|
|
||||||
|
|
||||||
export CDIST_ORDER_DEPENDENCY=on
|
|
||||||
__git $packagedir --source https://aur.archlinux.org/$package.git
|
|
||||||
require="__git/$packagedir" __directory $directory --owner $user --group $user --recursive
|
|
||||||
unset CDIST_ORDER_DEPENDENCY
|
|
|
@ -1,2 +0,0 @@
|
||||||
user
|
|
||||||
directory
|
|
|
@ -1,209 +0,0 @@
|
||||||
# This file has been auto-generated by i3-config-wizard(1).
|
|
||||||
# It will not be overwritten, so edit it as you like.
|
|
||||||
#
|
|
||||||
# Should you change your keyboard layout some time, delete
|
|
||||||
# this file and re-run i3-config-wizard(1).
|
|
||||||
#
|
|
||||||
|
|
||||||
# i3 config file (v4)
|
|
||||||
#
|
|
||||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
|
||||||
|
|
||||||
set $mod Mod4
|
|
||||||
|
|
||||||
# Font for window titles. Will also be used by the bar unless a different font
|
|
||||||
# is used in the bar {} block below.
|
|
||||||
font pango:Fira Code Light 8
|
|
||||||
|
|
||||||
# This font is widely installed, provides lots of unicode glyphs, right-to-left
|
|
||||||
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
|
||||||
#font pango:DejaVu Sans Mono 8
|
|
||||||
|
|
||||||
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
|
|
||||||
# they are included here as an example. Modify as you see fit.
|
|
||||||
|
|
||||||
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
|
|
||||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
|
||||||
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
|
|
||||||
|
|
||||||
# NetworkManager is the most popular way to manage wireless networks on Linux,
|
|
||||||
# and nm-applet is a desktop environment-independent system tray GUI for it.
|
|
||||||
exec --no-startup-id nm-applet
|
|
||||||
|
|
||||||
# Use pactl to adjust volume in PulseAudio.
|
|
||||||
set $refresh_i3status killall -SIGUSR1 i3status
|
|
||||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
|
|
||||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
|
|
||||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
|
||||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
|
||||||
|
|
||||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# custom keybindings
|
|
||||||
bindsym $mod+Return exec alacritty
|
|
||||||
bindsym $mod+y exec passmenu
|
|
||||||
bindsym $mod+x exec emacs
|
|
||||||
bindsym $mod+c exec firefox
|
|
||||||
bindsym Print exec flameshot gui
|
|
||||||
|
|
||||||
# kill focused window
|
|
||||||
bindsym $mod+Shift+q kill
|
|
||||||
|
|
||||||
# start dmenu (a program launcher)
|
|
||||||
bindsym $mod+d exec "dmenu_run -nf '#F8F8F2' -nb '#282A36' -sb '#6272A4' -sf '#F8F8F2' -fn 'monospace-10' -p 'dmenu%'"
|
|
||||||
# There also is the (new) i3-dmenu-desktop which only displays applications
|
|
||||||
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
|
|
||||||
# installed.
|
|
||||||
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
|
|
||||||
|
|
||||||
# change focus
|
|
||||||
bindsym $mod+j focus left
|
|
||||||
bindsym $mod+k focus down
|
|
||||||
bindsym $mod+l focus up
|
|
||||||
bindsym $mod+odiaeresis focus right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Left focus left
|
|
||||||
bindsym $mod+Down focus down
|
|
||||||
bindsym $mod+Up focus up
|
|
||||||
bindsym $mod+Right focus right
|
|
||||||
|
|
||||||
# move focused window
|
|
||||||
bindsym $mod+Shift+j move left
|
|
||||||
bindsym $mod+Shift+k move down
|
|
||||||
bindsym $mod+Shift+l move up
|
|
||||||
bindsym $mod+Shift+odiaeresis move right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor 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
|
|
||||||
|
|
||||||
# split in horizontal orientation
|
|
||||||
bindsym $mod+h split h
|
|
||||||
|
|
||||||
# split in vertical orientation
|
|
||||||
bindsym $mod+v split v
|
|
||||||
|
|
||||||
# enter fullscreen mode for the focused container
|
|
||||||
bindsym $mod+f fullscreen toggle
|
|
||||||
|
|
||||||
# change container layout (stacked, tabbed, toggle split)
|
|
||||||
bindsym $mod+s layout stacking
|
|
||||||
bindsym $mod+w layout tabbed
|
|
||||||
bindsym $mod+e layout toggle split
|
|
||||||
|
|
||||||
# toggle tiling / floating
|
|
||||||
bindsym $mod+Shift+space floating toggle
|
|
||||||
|
|
||||||
# change focus between tiling / floating windows
|
|
||||||
bindsym $mod+space focus mode_toggle
|
|
||||||
|
|
||||||
# focus the parent container
|
|
||||||
bindsym $mod+a focus parent
|
|
||||||
|
|
||||||
# focus the child container
|
|
||||||
#bindsym $mod+d focus child
|
|
||||||
|
|
||||||
# Define names for default workspaces for which we configure key bindings later on.
|
|
||||||
# We use variables to avoid repeating the names in multiple places.
|
|
||||||
set $ws1 "1"
|
|
||||||
set $ws2 "2"
|
|
||||||
set $ws3 "3"
|
|
||||||
set $ws4 "4"
|
|
||||||
set $ws5 "5"
|
|
||||||
set $ws6 "6"
|
|
||||||
set $ws7 "7"
|
|
||||||
set $ws8 "8"
|
|
||||||
set $ws9 "9"
|
|
||||||
set $ws10 "10"
|
|
||||||
|
|
||||||
# switch to workspace
|
|
||||||
bindsym $mod+1 workspace number $ws1
|
|
||||||
bindsym $mod+2 workspace number $ws2
|
|
||||||
bindsym $mod+3 workspace number $ws3
|
|
||||||
bindsym $mod+4 workspace number $ws4
|
|
||||||
bindsym $mod+5 workspace number $ws5
|
|
||||||
bindsym $mod+6 workspace number $ws6
|
|
||||||
bindsym $mod+7 workspace number $ws7
|
|
||||||
bindsym $mod+8 workspace number $ws8
|
|
||||||
bindsym $mod+9 workspace number $ws9
|
|
||||||
bindsym $mod+0 workspace number $ws10
|
|
||||||
|
|
||||||
# move focused container to workspace
|
|
||||||
bindsym $mod+Shift+1 move container to workspace number $ws1
|
|
||||||
bindsym $mod+Shift+2 move container to workspace number $ws2
|
|
||||||
bindsym $mod+Shift+3 move container to workspace number $ws3
|
|
||||||
bindsym $mod+Shift+4 move container to workspace number $ws4
|
|
||||||
bindsym $mod+Shift+5 move container to workspace number $ws5
|
|
||||||
bindsym $mod+Shift+6 move container to workspace number $ws6
|
|
||||||
bindsym $mod+Shift+7 move container to workspace number $ws7
|
|
||||||
bindsym $mod+Shift+8 move container to workspace number $ws8
|
|
||||||
bindsym $mod+Shift+9 move container to workspace number $ws9
|
|
||||||
bindsym $mod+Shift+0 move container to workspace number $ws10
|
|
||||||
|
|
||||||
# reload the configuration file
|
|
||||||
bindsym $mod+Shift+c reload
|
|
||||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
|
||||||
bindsym $mod+Shift+r restart
|
|
||||||
# exit i3 (logs you out of your X session)
|
|
||||||
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
|
|
||||||
|
|
||||||
# resize window (you can also use the mouse for that)
|
|
||||||
mode "resize" {
|
|
||||||
# These bindings trigger as soon as you enter the resize mode
|
|
||||||
|
|
||||||
# Pressing left will shrink the window’s width.
|
|
||||||
# Pressing right will grow the window’s width.
|
|
||||||
# Pressing up will shrink the window’s height.
|
|
||||||
# Pressing down will grow the window’s height.
|
|
||||||
bindsym j resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym k resize grow height 10 px or 10 ppt
|
|
||||||
bindsym l resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym odiaeresis resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# same bindings, but for the arrow keys
|
|
||||||
bindsym Left resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym Down resize grow height 10 px or 10 ppt
|
|
||||||
bindsym Up resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym Right resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape or $mod+r
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
bindsym $mod+r mode "default"
|
|
||||||
}
|
|
||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
|
||||||
|
|
||||||
# Dracula Theme
|
|
||||||
# class border bground text indicator child_border
|
|
||||||
client.focused #6272A4 #6272A4 #F8F8F2 #6272A4 #6272A4
|
|
||||||
client.focused_inactive #44475A #44475A #F8F8F2 #44475A #44475A
|
|
||||||
client.unfocused #282A36 #282A36 #BFBFBF #282A36 #282A36
|
|
||||||
client.urgent #44475A #FF5555 #F8F8F2 #FF5555 #FF5555
|
|
||||||
client.placeholder #282A36 #282A36 #F8F8F2 #282A36 #282A36
|
|
||||||
|
|
||||||
client.background #F8F8F2
|
|
||||||
|
|
||||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
|
||||||
# finds out, if available)
|
|
||||||
bar {
|
|
||||||
status_command i3status
|
|
||||||
|
|
||||||
colors {
|
|
||||||
background #282A36
|
|
||||||
statusline #F8F8F2
|
|
||||||
separator #44475A
|
|
||||||
|
|
||||||
focused_workspace #44475A #44475A #F8F8F2
|
|
||||||
active_workspace #282A36 #44475A #F8F8F2
|
|
||||||
inactive_workspace #282A36 #282A36 #BFBFBF
|
|
||||||
urgent_workspace #FF5555 #FF5555 #F8F8F2
|
|
||||||
binding_mode #FF5555 #FF5555 #F8F8F2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for_window [class="Lazarus" instance="*"] floating enable
|
|
|
@ -1,18 +0,0 @@
|
||||||
[theme]
|
|
||||||
background = "black"
|
|
||||||
primary = "light white"
|
|
||||||
secondary = "light black"
|
|
||||||
title = "green"
|
|
||||||
playing = "green"
|
|
||||||
playing_selected = "light green"
|
|
||||||
playing_bg = "black"
|
|
||||||
highlight = "light white"
|
|
||||||
highlight_bg = "#484848"
|
|
||||||
error = "light white"
|
|
||||||
error_bg = "red"
|
|
||||||
statusbar = "black"
|
|
||||||
statusbar_progress = "green"
|
|
||||||
statusbar_bg = "green"
|
|
||||||
cmdline = "light white"
|
|
||||||
cmdline_bg = "black"
|
|
||||||
search_match = "light red"
|
|
|
@ -1,105 +0,0 @@
|
||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
# vars
|
|
||||||
user="schrofi"
|
|
||||||
home="/home/schrofi"
|
|
||||||
|
|
||||||
# setup user
|
|
||||||
__user "$user" --home "$home" --shell /bin/fish
|
|
||||||
require="__user/$user" __directory "$home" \
|
|
||||||
--owner "$user" --group "$user" --mode 0755
|
|
||||||
|
|
||||||
__timezone --tz Europe/Vienna
|
|
||||||
|
|
||||||
# install packages
|
|
||||||
__package_update_index
|
|
||||||
require="__package_update_index" __package_upgrade_all
|
|
||||||
|
|
||||||
package_list="
|
|
||||||
alacritty
|
|
||||||
binutils
|
|
||||||
chromium
|
|
||||||
clipmenu
|
|
||||||
cups
|
|
||||||
dbeaver
|
|
||||||
emacs
|
|
||||||
fakeroot
|
|
||||||
feh
|
|
||||||
filezilla
|
|
||||||
firefox
|
|
||||||
fish
|
|
||||||
flameshot
|
|
||||||
galculator
|
|
||||||
gcc
|
|
||||||
gimp
|
|
||||||
git
|
|
||||||
git-lfs
|
|
||||||
gnupg
|
|
||||||
gmp
|
|
||||||
gparted
|
|
||||||
gradle
|
|
||||||
gtk3
|
|
||||||
htop
|
|
||||||
jdk-openjdk
|
|
||||||
jre-openjdk
|
|
||||||
libreoffice
|
|
||||||
libxss
|
|
||||||
manjaro-pipewire
|
|
||||||
mosh
|
|
||||||
mtpfs
|
|
||||||
nss
|
|
||||||
nss-mdns
|
|
||||||
ntfs-3g
|
|
||||||
openvpn
|
|
||||||
pass
|
|
||||||
patch
|
|
||||||
pipewire
|
|
||||||
pipewire-jack
|
|
||||||
pipewire-pulse
|
|
||||||
plasma-browser-integration
|
|
||||||
ranger
|
|
||||||
realtime-privileges
|
|
||||||
signal-desktop
|
|
||||||
strip-nondeterminism
|
|
||||||
udevil
|
|
||||||
unarchiver
|
|
||||||
vlc
|
|
||||||
zerotier-one
|
|
||||||
"
|
|
||||||
|
|
||||||
for package in $package_list
|
|
||||||
do require="__package_upgrade_all" __package $package --state=present
|
|
||||||
done
|
|
||||||
|
|
||||||
# setup dotfiles
|
|
||||||
#__dot_file .config/i3/config --user "$user" --source "$__type/dotfiles/i3/config"
|
|
||||||
__dot_file .config/ncspot/config.toml --user "$user" --source "$__type/dotfiles/ncspot/config.toml"
|
|
||||||
|
|
||||||
# those have to be done in order, install spacemacs
|
|
||||||
export CDIST_ORDER_DEPENDENCY=on
|
|
||||||
require="__package/emacs" __git "$home/.emacs.d" --source https://github.com/syl20bnr/spacemacs
|
|
||||||
__directory "$home/.emacs.d" --owner $user --group $user --recursive
|
|
||||||
unset CDIST_ORDER_DEPENDENCY
|
|
||||||
|
|
||||||
# install aur packages
|
|
||||||
aurdir="$home/Projects/AUR"
|
|
||||||
|
|
||||||
# the installation of the following libraries is failing:
|
|
||||||
# aura-bin
|
|
||||||
# postman-bin
|
|
||||||
# seafile
|
|
||||||
aur_packages="
|
|
||||||
android-studio
|
|
||||||
helvum
|
|
||||||
ncspot
|
|
||||||
rescrobbled-git
|
|
||||||
scrcpy
|
|
||||||
teams
|
|
||||||
"
|
|
||||||
|
|
||||||
export CDIST_ORDER_DEPENDENCY=on
|
|
||||||
for package in $aur_packages
|
|
||||||
do
|
|
||||||
__aur $package --user $user --directory $aurdir
|
|
||||||
done
|
|
||||||
unset CDIST_ORDER_DEPENDENCY
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
[env]
|
||||||
|
TERM = "xterm-256color"
|
||||||
|
|
||||||
|
[colors.primary]
|
||||||
|
background = "#24273a"
|
||||||
|
foreground = "#cad3f5"
|
||||||
|
dim_foreground = "#8087a2"
|
||||||
|
bright_foreground = "#cad3f5"
|
||||||
|
|
||||||
|
[colors.cursor]
|
||||||
|
text = "#24273a"
|
||||||
|
cursor = "#f4dbd6"
|
||||||
|
|
||||||
|
[colors.vi_mode_cursor]
|
||||||
|
text = "#24273a"
|
||||||
|
cursor = "#b7bdf8"
|
||||||
|
|
||||||
|
[colors.search.matches]
|
||||||
|
foreground = "#24273a"
|
||||||
|
background = "#a5adcb"
|
||||||
|
|
||||||
|
[colors.search.focused_match]
|
||||||
|
foreground = "#24273a"
|
||||||
|
background = "#a6da95"
|
||||||
|
|
||||||
|
[colors.footer_bar]
|
||||||
|
foreground = "#24273a"
|
||||||
|
background = "#a5adcb"
|
||||||
|
|
||||||
|
[colors.hints.start]
|
||||||
|
foreground = "#24273a"
|
||||||
|
background = "#eed49f"
|
||||||
|
|
||||||
|
[colors.hints.end]
|
||||||
|
foreground = "#24273a"
|
||||||
|
background = "#a5adcb"
|
||||||
|
|
||||||
|
[colors.selection]
|
||||||
|
text = "#24273a"
|
||||||
|
background = "#f4dbd6"
|
||||||
|
|
||||||
|
[colors.normal]
|
||||||
|
black = "#494d64"
|
||||||
|
red = "#ed8796"
|
||||||
|
green = "#a6da95"
|
||||||
|
yellow = "#eed49f"
|
||||||
|
blue = "#8aadf4"
|
||||||
|
magenta = "#f5bde6"
|
||||||
|
cyan = "#8bd5ca"
|
||||||
|
white = "#b8c0e0"
|
||||||
|
|
||||||
|
[colors.bright]
|
||||||
|
black = "#5b6078"
|
||||||
|
red = "#ed8796"
|
||||||
|
green = "#a6da95"
|
||||||
|
yellow = "#eed49f"
|
||||||
|
blue = "#8aadf4"
|
||||||
|
magenta = "#f5bde6"
|
||||||
|
cyan = "#8bd5ca"
|
||||||
|
white = "#a5adcb"
|
||||||
|
|
||||||
|
[colors.dim]
|
||||||
|
black = "#494d64"
|
||||||
|
red = "#ed8796"
|
||||||
|
green = "#a6da95"
|
||||||
|
yellow = "#eed49f"
|
||||||
|
blue = "#8aadf4"
|
||||||
|
magenta = "#f5bde6"
|
||||||
|
cyan = "#8bd5ca"
|
||||||
|
white = "#b8c0e0"
|
||||||
|
|
||||||
|
[[colors.indexed_colors]]
|
||||||
|
index = 16
|
||||||
|
color = "#f5a97f"
|
||||||
|
|
||||||
|
[[colors.indexed_colors]]
|
||||||
|
index = 17
|
||||||
|
color = "#f4dbd6"
|
|
@ -0,0 +1,58 @@
|
||||||
|
#!/usr/bin/env bb
|
||||||
|
|
||||||
|
(require '[babashka.process :refer [shell process exec]])
|
||||||
|
|
||||||
|
;; setup screens
|
||||||
|
;; todo: check if file exists, get home dir
|
||||||
|
(shell "/home/schrofi/.screenlayout/default.sh")
|
||||||
|
|
||||||
|
;; bspwm configuration
|
||||||
|
(defn- bspc [& commands]
|
||||||
|
(apply shell (cons "bspc" commands)))
|
||||||
|
|
||||||
|
(defn- config [key value]
|
||||||
|
(apply bspc (vector "config" key value)))
|
||||||
|
|
||||||
|
;; setup desktops
|
||||||
|
;; todo: handle no external display gracefully
|
||||||
|
|
||||||
|
;; read workspace configuration from config
|
||||||
|
;; format should be like: eDP-1 1 2 3 4 .., HDMI-A-0 X
|
||||||
|
;; where each monitor is defined on a separate line (no commas)
|
||||||
|
(def workspace-config
|
||||||
|
(->> (slurp "/home/schrofi/.screenlayout/default-workspaces")
|
||||||
|
(str/split-lines)
|
||||||
|
(map #(str/split % #" "))))
|
||||||
|
|
||||||
|
(doseq [config workspace-config]
|
||||||
|
(let [[monitor & workspaces] config]
|
||||||
|
(->> workspaces
|
||||||
|
(map str)
|
||||||
|
(concat ["monitor" monitor "-d"])
|
||||||
|
(apply bspc))))
|
||||||
|
|
||||||
|
(config "border_width" "2")
|
||||||
|
(config "window_gap" "12")
|
||||||
|
|
||||||
|
(config "split_ratio" "0.52")
|
||||||
|
(config "borderless_monocle" "true")
|
||||||
|
|
||||||
|
(config "focus_follows_pointer" "true")
|
||||||
|
|
||||||
|
;; todo
|
||||||
|
(bspc "rule" "-a" "alacritty:scratchpad" "-o" "state=floating" "sticky=on" "layer=above")
|
||||||
|
|
||||||
|
;; autostart
|
||||||
|
(defn- if-not-running [service run-command]
|
||||||
|
(if (empty? (:out (shell {:out :string :continue true} "pgrep" "-x" service)))
|
||||||
|
(run-command)))
|
||||||
|
|
||||||
|
(shell "setxkbmap" "de")
|
||||||
|
(if-not-running "sxhkd" #(process "sxhkd"))
|
||||||
|
(if-not-running "nitrogen" #(process "nitrogen" "--restore"))
|
||||||
|
(if-not-running "picom" #(process "picom" "--config" "/home/schrofi/.config/picom/picom.conf"))
|
||||||
|
(if-not-running "polybar" #(process "polybar"))
|
||||||
|
(if-not-running "flameshot" #(process "flameshot"))
|
||||||
|
|
||||||
|
;; start pipewire
|
||||||
|
;;(process "pipewire")
|
|
@ -0,0 +1,3 @@
|
||||||
|
function dhu
|
||||||
|
/home/schrofi/Android/Sdk/extras/google/auto/desktop-head-unit $argv
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function dm
|
||||||
|
/home/schrofi/Projects/android-scripts/drawable-mover/dm.clj -s $(pwd) -n $argv[1] -d $argv[2]
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function erp
|
||||||
|
/home/schrofi/Projects/android-scripts/enterprise-release-publisher/erp.clj -k /home/schrofi/.ssh/loop $argv
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function pap
|
||||||
|
/home/schrofi/Projects/android-scripts/playstore-apk-puller/pap.clj $argv
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function waht
|
||||||
|
/home/schrofi/Projects/android-scripts/wireless-adb-helper-tool/waht.clj $argv
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
gtk-icon-theme-name = "Mint-Y"
|
||||||
|
gtk-theme-name = "Dracula-alt-style"
|
||||||
|
gtk-font-name = "Fira Code Regular 10"
|
|
@ -0,0 +1,430 @@
|
||||||
|
#################################
|
||||||
|
# Shadows #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Enabled client-side shadows on windows. Note desktop windows
|
||||||
|
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
|
||||||
|
# unless explicitly requested using the wintypes option.
|
||||||
|
#
|
||||||
|
# shadow = false
|
||||||
|
shadow = true;
|
||||||
|
|
||||||
|
# The blur radius for shadows, in pixels. (defaults to 12)
|
||||||
|
# shadow-radius = 12
|
||||||
|
shadow-radius = 7;
|
||||||
|
|
||||||
|
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
|
||||||
|
# shadow-opacity = .75
|
||||||
|
|
||||||
|
# The left offset for shadows, in pixels. (defaults to -15)
|
||||||
|
# shadow-offset-x = -15
|
||||||
|
shadow-offset-x = -7;
|
||||||
|
|
||||||
|
# The top offset for shadows, in pixels. (defaults to -15)
|
||||||
|
# shadow-offset-y = -15
|
||||||
|
shadow-offset-y = -7;
|
||||||
|
|
||||||
|
# Red color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-red = 0
|
||||||
|
|
||||||
|
# Green color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-green = 0
|
||||||
|
|
||||||
|
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-blue = 0
|
||||||
|
|
||||||
|
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
|
||||||
|
# shadow-color = "#000000"
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should have no shadow.
|
||||||
|
#
|
||||||
|
# examples:
|
||||||
|
# shadow-exclude = "n:e:Notification";
|
||||||
|
#
|
||||||
|
# shadow-exclude = []
|
||||||
|
shadow-exclude = [
|
||||||
|
"name = 'Notification'",
|
||||||
|
"class_g = 'Conky'",
|
||||||
|
"class_g ?= 'Notify-osd'",
|
||||||
|
"class_g = 'Cairo-clock'",
|
||||||
|
"_GTK_FRAME_EXTENTS@:c"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
|
||||||
|
# clip-shadow-above = []
|
||||||
|
|
||||||
|
# Specify a X geometry that describes the region in which shadow should not
|
||||||
|
# be painted in, such as a dock window region. Use
|
||||||
|
# shadow-exclude-reg = "x10+0+0"
|
||||||
|
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
|
||||||
|
#
|
||||||
|
# shadow-exclude-reg = ""
|
||||||
|
|
||||||
|
# Crop shadow of a window fully on a particular monitor to that monitor. This is
|
||||||
|
# currently implemented using the X RandR extension.
|
||||||
|
# crop-shadow-to-monitor = false
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Fading #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Fade windows in/out when opening/closing and when opacity changes,
|
||||||
|
# unless no-fading-openclose is used.
|
||||||
|
# fading = false
|
||||||
|
fading = true;
|
||||||
|
|
||||||
|
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
|
||||||
|
# fade-in-step = 0.028
|
||||||
|
fade-in-step = 0.03;
|
||||||
|
|
||||||
|
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
|
||||||
|
# fade-out-step = 0.03
|
||||||
|
fade-out-step = 0.03;
|
||||||
|
|
||||||
|
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
|
||||||
|
# fade-delta = 10
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should not be faded.
|
||||||
|
# fade-exclude = []
|
||||||
|
|
||||||
|
# Do not fade on window open/close.
|
||||||
|
# no-fading-openclose = false
|
||||||
|
|
||||||
|
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
|
||||||
|
# no-fading-destroyed-argb = false
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Transparency / Opacity #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
|
||||||
|
inactive-opacity = 1
|
||||||
|
|
||||||
|
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
|
||||||
|
# frame-opacity = 1.0
|
||||||
|
frame-opacity = 0.7;
|
||||||
|
|
||||||
|
# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows.
|
||||||
|
# inactive-opacity-override = true
|
||||||
|
inactive-opacity-override = false;
|
||||||
|
|
||||||
|
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
|
||||||
|
# active-opacity = 1.0
|
||||||
|
|
||||||
|
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
|
||||||
|
# inactive-dim = 0.0
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should never be considered focused.
|
||||||
|
# focus-exclude = []
|
||||||
|
focus-exclude = [ "class_g = 'Cairo-clock'" ];
|
||||||
|
|
||||||
|
# Use fixed inactive dim value, instead of adjusting according to window opacity.
|
||||||
|
# inactive-dim-fixed = 1.0
|
||||||
|
|
||||||
|
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
|
||||||
|
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
|
||||||
|
# Note we don't make any guarantee about possible conflicts with other
|
||||||
|
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
|
||||||
|
# example:
|
||||||
|
# opacity-rule = [ "80:class_g = 'URxvt'" ];
|
||||||
|
#
|
||||||
|
# opacity-rule = []
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Corners #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Sets the radius of rounded window corners. When > 0, the compositor will
|
||||||
|
# round the corners of windows. Does not interact well with
|
||||||
|
# `transparent-clipping`.
|
||||||
|
corner-radius = 0
|
||||||
|
|
||||||
|
# Exclude conditions for rounded corners.
|
||||||
|
rounded-corners-exclude = [
|
||||||
|
"window_type = 'dock'",
|
||||||
|
"window_type = 'desktop'"
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Background-Blurring #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Parameters for background blurring, see the *BLUR* section for more information.
|
||||||
|
# blur-method =
|
||||||
|
# blur-size = 12
|
||||||
|
#
|
||||||
|
# blur-deviation = false
|
||||||
|
#
|
||||||
|
# blur-strength = 5
|
||||||
|
|
||||||
|
# Blur background of semi-transparent / ARGB windows.
|
||||||
|
# Bad in performance, with driver-dependent behavior.
|
||||||
|
# The name of the switch may change without prior notifications.
|
||||||
|
#
|
||||||
|
# blur-background = false
|
||||||
|
|
||||||
|
# Blur background of windows when the window frame is not opaque.
|
||||||
|
# Implies:
|
||||||
|
# blur-background
|
||||||
|
# Bad in performance, with driver-dependent behavior. The name may change.
|
||||||
|
#
|
||||||
|
# blur-background-frame = false
|
||||||
|
|
||||||
|
|
||||||
|
# Use fixed blur strength rather than adjusting according to window opacity.
|
||||||
|
# blur-background-fixed = false
|
||||||
|
|
||||||
|
|
||||||
|
# Specify the blur convolution kernel, with the following format:
|
||||||
|
# example:
|
||||||
|
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
|
||||||
|
#
|
||||||
|
# blur-kern = ""
|
||||||
|
blur-kern = "3x3box";
|
||||||
|
|
||||||
|
|
||||||
|
# Exclude conditions for background blur.
|
||||||
|
# blur-background-exclude = []
|
||||||
|
blur-background-exclude = [
|
||||||
|
"window_type = 'dock'",
|
||||||
|
"window_type = 'desktop'",
|
||||||
|
"_GTK_FRAME_EXTENTS@:c"
|
||||||
|
];
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# General Settings #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Enable remote control via D-Bus. See the man page for more details.
|
||||||
|
# dbus = true
|
||||||
|
|
||||||
|
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
|
||||||
|
# daemon = false
|
||||||
|
|
||||||
|
# Specify the backend to use: `xrender`, `glx`, `egl` or `xr_glx_hybrid`.
|
||||||
|
# `xrender` is the default one.
|
||||||
|
#
|
||||||
|
# backend = "glx"
|
||||||
|
backend = "xrender";
|
||||||
|
|
||||||
|
# Use higher precision during rendering, and apply dither when presenting the
|
||||||
|
# rendered screen. Reduces banding artifacts, but might cause performance
|
||||||
|
# degradation. Only works with OpenGL.
|
||||||
|
dithered-present = false;
|
||||||
|
|
||||||
|
# Enable/disable VSync.
|
||||||
|
# vsync = false
|
||||||
|
vsync = true;
|
||||||
|
|
||||||
|
# Try to detect WM windows (a non-override-redirect window with no
|
||||||
|
# child that has 'WM_STATE') and mark them as active.
|
||||||
|
#
|
||||||
|
# mark-wmwin-focused = false
|
||||||
|
mark-wmwin-focused = true;
|
||||||
|
|
||||||
|
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
|
||||||
|
# mark-ovredir-focused = false
|
||||||
|
mark-ovredir-focused = true;
|
||||||
|
|
||||||
|
# Try to detect windows with rounded corners and don't consider them
|
||||||
|
# shaped windows. The accuracy is not very high, unfortunately.
|
||||||
|
#
|
||||||
|
# detect-rounded-corners = false
|
||||||
|
detect-rounded-corners = true;
|
||||||
|
|
||||||
|
# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers
|
||||||
|
# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
|
||||||
|
#
|
||||||
|
# detect-client-opacity = false
|
||||||
|
detect-client-opacity = true;
|
||||||
|
|
||||||
|
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
|
||||||
|
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
|
||||||
|
# provided that the WM supports it.
|
||||||
|
#
|
||||||
|
# use-ewmh-active-win = false
|
||||||
|
|
||||||
|
# Unredirect all windows if a full-screen opaque window is detected,
|
||||||
|
# to maximize performance for full-screen windows. Known to cause flickering
|
||||||
|
# when redirecting/unredirecting windows.
|
||||||
|
#
|
||||||
|
# unredir-if-possible = false
|
||||||
|
|
||||||
|
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
|
||||||
|
# unredir-if-possible-delay = 0
|
||||||
|
|
||||||
|
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
|
||||||
|
# unredir-if-possible-exclude = []
|
||||||
|
|
||||||
|
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
|
||||||
|
# in the same group focused at the same time.
|
||||||
|
#
|
||||||
|
# detect-transient = false
|
||||||
|
detect-transient = true;
|
||||||
|
|
||||||
|
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
|
||||||
|
# group focused at the same time. This usually means windows from the same application
|
||||||
|
# will be considered focused or unfocused at the same time.
|
||||||
|
# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
|
||||||
|
#
|
||||||
|
# detect-client-leader = false
|
||||||
|
|
||||||
|
# Resize damaged region by a specific number of pixels.
|
||||||
|
# A positive value enlarges it while a negative one shrinks it.
|
||||||
|
# If the value is positive, those additional pixels will not be actually painted
|
||||||
|
# to screen, only used in blur calculation, and such. (Due to technical limitations,
|
||||||
|
# with use-damage, those pixels will still be incorrectly painted to screen.)
|
||||||
|
# Primarily used to fix the line corruption issues of blur,
|
||||||
|
# in which case you should use the blur radius value here
|
||||||
|
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
|
||||||
|
# with a 5x5 one you use `--resize-damage 2`, and so on).
|
||||||
|
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
|
||||||
|
#
|
||||||
|
# resize-damage = 1
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should be painted with inverted color.
|
||||||
|
# Resource-hogging, and is not well tested.
|
||||||
|
#
|
||||||
|
# invert-color-include = []
|
||||||
|
|
||||||
|
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
|
||||||
|
# Might cause incorrect opacity when rendering transparent content (but never
|
||||||
|
# practically happened) and may not work with blur-background.
|
||||||
|
# My tests show a 15% performance boost. Recommended.
|
||||||
|
#
|
||||||
|
# glx-no-stencil = false
|
||||||
|
|
||||||
|
# GLX backend: Avoid rebinding pixmap on window damage.
|
||||||
|
# Probably could improve performance on rapid window content changes,
|
||||||
|
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
|
||||||
|
# Recommended if it works.
|
||||||
|
#
|
||||||
|
# glx-no-rebind-pixmap = false
|
||||||
|
|
||||||
|
# Disable the use of damage information.
|
||||||
|
# This cause the whole screen to be redrawn every time, instead of the part of the screen
|
||||||
|
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
|
||||||
|
# The opposing option is use-damage
|
||||||
|
#
|
||||||
|
# no-use-damage = false
|
||||||
|
use-damage = true;
|
||||||
|
|
||||||
|
# Use X Sync fence to sync clients' draw calls, to make sure all draw
|
||||||
|
# calls are finished before picom starts drawing. Needed on nvidia-drivers
|
||||||
|
# with GLX backend for some users.
|
||||||
|
#
|
||||||
|
# xrender-sync-fence = false
|
||||||
|
|
||||||
|
# GLX backend: Use specified GLSL fragment shader for rendering window
|
||||||
|
# contents. Read the man page for a detailed explanation of the interface.
|
||||||
|
#
|
||||||
|
# window-shader-fg = "default"
|
||||||
|
|
||||||
|
# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar
|
||||||
|
# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg.
|
||||||
|
#
|
||||||
|
# window-shader-fg-rule = [
|
||||||
|
# "my_shader.frag:window_type != 'dock'"
|
||||||
|
# ]
|
||||||
|
|
||||||
|
# Force all windows to be painted with blending. Useful if you
|
||||||
|
# have a glx-fshader-win that could turn opaque pixels transparent.
|
||||||
|
#
|
||||||
|
# force-win-blend = false
|
||||||
|
|
||||||
|
# Do not use EWMH to detect fullscreen windows.
|
||||||
|
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
|
||||||
|
#
|
||||||
|
# no-ewmh-fullscreen = false
|
||||||
|
|
||||||
|
# Dimming bright windows so their brightness doesn't exceed this set value.
|
||||||
|
# Brightness of a window is estimated by averaging all pixels in the window,
|
||||||
|
# so this could comes with a performance hit.
|
||||||
|
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
|
||||||
|
#
|
||||||
|
# max-brightness = 1.0
|
||||||
|
|
||||||
|
# Make transparent windows clip other windows like non-transparent windows do,
|
||||||
|
# instead of blending on top of them.
|
||||||
|
#
|
||||||
|
# transparent-clipping = false
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should never have transparent
|
||||||
|
# clipping applied. Useful for screenshot tools, where you need to be able to
|
||||||
|
# see through transparent parts of the window.
|
||||||
|
#
|
||||||
|
# transparent-clipping-exclude = []
|
||||||
|
|
||||||
|
# Set the log level. Possible values are:
|
||||||
|
# "trace", "debug", "info", "warn", "error"
|
||||||
|
# in increasing level of importance. Case doesn't matter.
|
||||||
|
# If using the "TRACE" log level, it's better to log into a file
|
||||||
|
# using *--log-file*, since it can generate a huge stream of logs.
|
||||||
|
#
|
||||||
|
# log-level = "debug"
|
||||||
|
log-level = "warn";
|
||||||
|
|
||||||
|
# Set the log file.
|
||||||
|
# If *--log-file* is never specified, logs will be written to stderr.
|
||||||
|
# Otherwise, logs will to written to the given file, though some of the early
|
||||||
|
# logs might still be written to the stderr.
|
||||||
|
# When setting this option from the config file, it is recommended to use an absolute path.
|
||||||
|
#
|
||||||
|
# log-file = "/path/to/your/log/file"
|
||||||
|
|
||||||
|
# Show all X errors (for debugging)
|
||||||
|
# show-all-xerrors = false
|
||||||
|
|
||||||
|
# Write process ID to a file.
|
||||||
|
# write-pid-path = "/path/to/your/log/file"
|
||||||
|
|
||||||
|
# Window type settings
|
||||||
|
#
|
||||||
|
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
|
||||||
|
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
|
||||||
|
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
|
||||||
|
# "tooltip", "notification", "combo", and "dnd".
|
||||||
|
#
|
||||||
|
# Following per window-type options are available: ::
|
||||||
|
#
|
||||||
|
# fade, shadow:::
|
||||||
|
# Controls window-type-specific shadow and fade settings.
|
||||||
|
#
|
||||||
|
# opacity:::
|
||||||
|
# Controls default opacity of the window type.
|
||||||
|
#
|
||||||
|
# focus:::
|
||||||
|
# Controls whether the window of this type is to be always considered focused.
|
||||||
|
# (By default, all window types except "normal" and "dialog" has this on.)
|
||||||
|
#
|
||||||
|
# full-shadow:::
|
||||||
|
# Controls whether shadow is drawn under the parts of the window that you
|
||||||
|
# normally won't be able to see. Useful when the window has parts of it
|
||||||
|
# transparent, and you want shadows in those areas.
|
||||||
|
#
|
||||||
|
# clip-shadow-above:::
|
||||||
|
# Controls whether shadows that would have been drawn above the window should
|
||||||
|
# be clipped. Useful for dock windows that should have no shadow painted on top.
|
||||||
|
#
|
||||||
|
# redir-ignore:::
|
||||||
|
# Controls whether this type of windows should cause screen to become
|
||||||
|
# redirected again after been unredirected. If you have unredir-if-possible
|
||||||
|
# set, and doesn't want certain window to cause unnecessary screen redirection,
|
||||||
|
# you can set this to `true`.
|
||||||
|
#
|
||||||
|
wintypes:
|
||||||
|
{
|
||||||
|
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
|
||||||
|
dock = { shadow = false; clip-shadow-above = true; }
|
||||||
|
dnd = { shadow = false; }
|
||||||
|
popup_menu = { opacity = 0.8; }
|
||||||
|
dropdown_menu = { opacity = 0.8; }
|
||||||
|
};
|
|
@ -0,0 +1,176 @@
|
||||||
|
;==========================================================
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
|
||||||
|
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
|
||||||
|
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
|
||||||
|
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
|
||||||
|
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
|
||||||
|
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; To learn more about how to configure Polybar
|
||||||
|
; go to https://github.com/polybar/polybar
|
||||||
|
;
|
||||||
|
; The README contains a lot of information
|
||||||
|
;
|
||||||
|
;==========================================================
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
background = #282a36
|
||||||
|
background-alt = #44475a
|
||||||
|
foreground = #f8f8f2
|
||||||
|
primary = #bd93f9
|
||||||
|
secondary = #ffb86c
|
||||||
|
alert = #ff5555
|
||||||
|
disabled = #6272a4
|
||||||
|
|
||||||
|
[bar/example]
|
||||||
|
width = 100%
|
||||||
|
height = 24pt
|
||||||
|
radius = 6
|
||||||
|
|
||||||
|
; dpi = 96
|
||||||
|
|
||||||
|
background = ${colors.background}
|
||||||
|
foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
line-size = 3pt
|
||||||
|
|
||||||
|
border-size = 4pt
|
||||||
|
border-color = #00000000
|
||||||
|
|
||||||
|
padding-left = 0
|
||||||
|
padding-right = 1
|
||||||
|
|
||||||
|
module-margin = 1
|
||||||
|
|
||||||
|
separator = |
|
||||||
|
separator-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
font-0 = Fira Code;2
|
||||||
|
|
||||||
|
modules-left = xworkspaces systray xwindow
|
||||||
|
modules-right = filesystem pulseaudio xkeyboard memory cpu wlan eth date
|
||||||
|
|
||||||
|
cursor-click = pointer
|
||||||
|
cursor-scroll = ns-resize
|
||||||
|
|
||||||
|
enable-ipc = true
|
||||||
|
|
||||||
|
; wm-restack = generic
|
||||||
|
wm-restack = bspwm
|
||||||
|
; wm-restack = i3
|
||||||
|
|
||||||
|
; override-redirect = true
|
||||||
|
|
||||||
|
[module/systray]
|
||||||
|
type = internal/tray
|
||||||
|
|
||||||
|
format-margin = 8pt
|
||||||
|
tray-spacing = 16pt
|
||||||
|
|
||||||
|
[module/xworkspaces]
|
||||||
|
type = internal/xworkspaces
|
||||||
|
|
||||||
|
label-active = %name%
|
||||||
|
label-active-background = ${colors.background-alt}
|
||||||
|
label-active-underline= ${colors.primary}
|
||||||
|
label-active-padding = 1
|
||||||
|
|
||||||
|
label-occupied = %name%
|
||||||
|
label-occupied-padding = 1
|
||||||
|
|
||||||
|
label-urgent = %name%
|
||||||
|
label-urgent-background = ${colors.alert}
|
||||||
|
label-urgent-padding = 1
|
||||||
|
|
||||||
|
label-empty = %name%
|
||||||
|
label-empty-foreground = ${colors.disabled}
|
||||||
|
label-empty-padding = 1
|
||||||
|
|
||||||
|
[module/xwindow]
|
||||||
|
type = internal/xwindow
|
||||||
|
label = %title:0:60:...%
|
||||||
|
|
||||||
|
[module/filesystem]
|
||||||
|
type = internal/fs
|
||||||
|
interval = 25
|
||||||
|
|
||||||
|
mount-0 = /
|
||||||
|
|
||||||
|
label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%%
|
||||||
|
|
||||||
|
label-unmounted = %mountpoint% not mounted
|
||||||
|
label-unmounted-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
[module/pulseaudio]
|
||||||
|
type = internal/pulseaudio
|
||||||
|
|
||||||
|
format-volume-prefix = "VOL "
|
||||||
|
format-volume-prefix-foreground = ${colors.primary}
|
||||||
|
format-volume = <label-volume>
|
||||||
|
|
||||||
|
label-volume = %percentage%%
|
||||||
|
|
||||||
|
label-muted = muted
|
||||||
|
label-muted-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
[module/xkeyboard]
|
||||||
|
type = internal/xkeyboard
|
||||||
|
blacklist-0 = num lock
|
||||||
|
|
||||||
|
label-layout = %layout%
|
||||||
|
label-layout-foreground = ${colors.primary}
|
||||||
|
|
||||||
|
label-indicator-padding = 2
|
||||||
|
label-indicator-margin = 1
|
||||||
|
label-indicator-foreground = ${colors.background}
|
||||||
|
label-indicator-background = ${colors.secondary}
|
||||||
|
|
||||||
|
[module/memory]
|
||||||
|
type = internal/memory
|
||||||
|
interval = 2
|
||||||
|
format-prefix = "RAM "
|
||||||
|
format-prefix-foreground = ${colors.primary}
|
||||||
|
label = %percentage_used:2%%
|
||||||
|
|
||||||
|
[module/cpu]
|
||||||
|
type = internal/cpu
|
||||||
|
interval = 2
|
||||||
|
format-prefix = "CPU "
|
||||||
|
format-prefix-foreground = ${colors.primary}
|
||||||
|
label = %percentage:2%%
|
||||||
|
|
||||||
|
[network-base]
|
||||||
|
type = internal/network
|
||||||
|
interval = 5
|
||||||
|
format-connected = <label-connected>
|
||||||
|
format-disconnected = <label-disconnected>
|
||||||
|
label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected
|
||||||
|
|
||||||
|
[module/wlan]
|
||||||
|
inherit = network-base
|
||||||
|
interface-type = wireless
|
||||||
|
label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip%
|
||||||
|
|
||||||
|
[module/eth]
|
||||||
|
inherit = network-base
|
||||||
|
interface-type = wired
|
||||||
|
label-connected = %{F#F0C674}%ifname%%{F-} %local_ip%
|
||||||
|
|
||||||
|
[module/date]
|
||||||
|
type = internal/date
|
||||||
|
interval = 1
|
||||||
|
|
||||||
|
date = %H:%M
|
||||||
|
date-alt = %Y-%m-%d %H:%M:%S
|
||||||
|
|
||||||
|
label = %date%
|
||||||
|
label-foreground = ${colors.primary}
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
screenchange-reload = true
|
||||||
|
pseudo-transparency = true
|
||||||
|
|
||||||
|
; vim:ft=dosini
|
|
@ -0,0 +1,133 @@
|
||||||
|
/*Dracula theme based on the Purple official rofi theme*/
|
||||||
|
|
||||||
|
configuration {
|
||||||
|
show-icons: true;
|
||||||
|
display-drun: "";
|
||||||
|
disable-history: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
font: "Fira Code 18";
|
||||||
|
foreground: #f8f8f2;
|
||||||
|
background-color: #282a36;
|
||||||
|
active-background: #6272a4;
|
||||||
|
urgent-background: #ff5555;
|
||||||
|
urgent-foreground: #282a36;
|
||||||
|
selected-background: @active-background;
|
||||||
|
selected-urgent-background: @urgent-background;
|
||||||
|
selected-active-background: @active-background;
|
||||||
|
separatorcolor: @active-background;
|
||||||
|
bordercolor: @active-background;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
background-color: @background-color;
|
||||||
|
border: 3;
|
||||||
|
border-radius: 6;
|
||||||
|
border-color: @bordercolor;
|
||||||
|
padding: 15;
|
||||||
|
}
|
||||||
|
#mainbox {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#message {
|
||||||
|
border: 0px;
|
||||||
|
border-color: @separatorcolor;
|
||||||
|
padding: 1px;
|
||||||
|
}
|
||||||
|
#textbox {
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#listview {
|
||||||
|
fixed-height: 0;
|
||||||
|
border: 0px;
|
||||||
|
border-color: @bordercolor;
|
||||||
|
spacing: 2px ;
|
||||||
|
scrollbar: false;
|
||||||
|
padding: 2px 0px 0px ;
|
||||||
|
}
|
||||||
|
#element {
|
||||||
|
border: 0;
|
||||||
|
padding: 3px ;
|
||||||
|
}
|
||||||
|
#element.normal.normal {
|
||||||
|
background-color: @background-color;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.normal.urgent {
|
||||||
|
background-color: @urgent-background;
|
||||||
|
text-color: @urgent-foreground;
|
||||||
|
}
|
||||||
|
#element.normal.active {
|
||||||
|
background-color: @active-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.selected.normal {
|
||||||
|
background-color: @selected-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.selected.urgent {
|
||||||
|
background-color: @selected-urgent-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.selected.active {
|
||||||
|
background-color: @selected-active-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.alternate.normal {
|
||||||
|
background-color: @background-color;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.alternate.urgent {
|
||||||
|
background-color: @urgent-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#element.alternate.active {
|
||||||
|
background-color: @active-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#scrollbar {
|
||||||
|
width: 2px ;
|
||||||
|
border: 0;
|
||||||
|
handle-width: 8px ;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#sidebar {
|
||||||
|
border: 2px dash 0px 0px ;
|
||||||
|
border-color: @separatorcolor;
|
||||||
|
}
|
||||||
|
#button.selected {
|
||||||
|
background-color: @selected-background;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#inputbar {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: @foreground;
|
||||||
|
padding: 1px ;
|
||||||
|
}
|
||||||
|
#case-indicator {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#entry {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#prompt {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
#inputbar {
|
||||||
|
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
|
||||||
|
}
|
||||||
|
#textbox-prompt-colon {
|
||||||
|
expand: false;
|
||||||
|
str: ">";
|
||||||
|
margin: 0px 0.3em 0em 0em ;
|
||||||
|
text-color: @foreground;
|
||||||
|
}
|
||||||
|
element-text, element-icon {
|
||||||
|
background-color: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
export USER="<username>"
|
||||||
|
export HOME="/home/<username>"
|
||||||
|
|
||||||
|
groups="$(id -Gn "$USER" | tr ' ' ':')"
|
||||||
|
svdir="$HOME/service"
|
||||||
|
|
||||||
|
exec chpst -u "$USER:$groups" runsvdir "$svdir"
|
|
@ -0,0 +1,174 @@
|
||||||
|
#
|
||||||
|
# wm independent hotkeys
|
||||||
|
#
|
||||||
|
|
||||||
|
# terminal emulator
|
||||||
|
super + {alt +,_}Return
|
||||||
|
alacritty{_, --class scratchpad}
|
||||||
|
|
||||||
|
# program launcher
|
||||||
|
super + a
|
||||||
|
rofi -show drun -show-icons > /dev/null 2>&1
|
||||||
|
|
||||||
|
# make sxhkd reload its configuration files:
|
||||||
|
super + Escape
|
||||||
|
pkill -USR1 -x sxhkd
|
||||||
|
|
||||||
|
#
|
||||||
|
# bspwm hotkeys
|
||||||
|
#
|
||||||
|
|
||||||
|
# quit/restart bspwm
|
||||||
|
super + alt + {q,r}
|
||||||
|
bspc {quit,wm -r}
|
||||||
|
|
||||||
|
# close and kill
|
||||||
|
super + {_,shift + }q
|
||||||
|
bspc node -{c,k}
|
||||||
|
|
||||||
|
# browse files
|
||||||
|
super + b
|
||||||
|
alacritty -e ranger
|
||||||
|
|
||||||
|
# alternate between the tiled and monocle layout
|
||||||
|
super + m
|
||||||
|
bspc desktop -l next
|
||||||
|
|
||||||
|
# send the newest marked node to the newest preselected node
|
||||||
|
# super + y
|
||||||
|
# bspc node newest.marked.local -n newest.!automatic.local
|
||||||
|
|
||||||
|
# swap the current node and the biggest window
|
||||||
|
super + g
|
||||||
|
bspc node -s biggest.window
|
||||||
|
|
||||||
|
#
|
||||||
|
# state/flags
|
||||||
|
#
|
||||||
|
|
||||||
|
# set the window state
|
||||||
|
#super + {t,shift + t,s,f}
|
||||||
|
# bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
|
||||||
|
|
||||||
|
super + space
|
||||||
|
bspc node -t \~fullscreen
|
||||||
|
|
||||||
|
super + p
|
||||||
|
bspc node -t \~floating
|
||||||
|
|
||||||
|
# set the node flags
|
||||||
|
#super + ctrl + {m,x,y,z}
|
||||||
|
# bspc node -g {marked,locked,sticky,private}
|
||||||
|
|
||||||
|
#
|
||||||
|
# focus/swap
|
||||||
|
#
|
||||||
|
|
||||||
|
# focus the node in the given direction
|
||||||
|
super + {_,alt + }{Left,Down,Up,Right}
|
||||||
|
bspc node -{f,s} {west,south,north,east}
|
||||||
|
|
||||||
|
# focus the node for the given path jump
|
||||||
|
super + {p,b,comma,period}
|
||||||
|
bspc node -f @{parent,brother,first,second}
|
||||||
|
|
||||||
|
# focus the next/previous window in the current desktop
|
||||||
|
#super + {_,shift + }c
|
||||||
|
# bspc node -f {next,prev}.local.!hidden.window
|
||||||
|
|
||||||
|
# focus the next/previous desktop in the current monitor
|
||||||
|
super + bracket{left,right}
|
||||||
|
bspc desktop -f {prev,next}.local
|
||||||
|
|
||||||
|
# focus the last node/desktop
|
||||||
|
super + {grave,Tab}
|
||||||
|
bspc {node,desktop} -f last
|
||||||
|
|
||||||
|
# focus the older or newer node in the focus history
|
||||||
|
super + {o,i}
|
||||||
|
bspc wm -h off; \
|
||||||
|
bspc node {older,newer} -f; \
|
||||||
|
bspc wm -h on
|
||||||
|
|
||||||
|
# focus or send to the given desktop
|
||||||
|
#super + {_,shift + }{1-9,0}
|
||||||
|
#bspc {desktop -f,node -d} '^{1-9,10}'
|
||||||
|
|
||||||
|
# desktop hotkeys
|
||||||
|
super + {_,alt + }x
|
||||||
|
bspc {desktop -f,node -d} 1
|
||||||
|
|
||||||
|
super + {_,alt + }c
|
||||||
|
bspc {desktop -f,node -d} 2
|
||||||
|
|
||||||
|
super + {_,alt + }v
|
||||||
|
bspc {desktop -f,node -d} 3
|
||||||
|
|
||||||
|
super + {_,alt + }s
|
||||||
|
bspc {desktop -f,node -d} 4
|
||||||
|
|
||||||
|
super + {_,alt + }d
|
||||||
|
bspc {desktop -f,node -d} 5
|
||||||
|
|
||||||
|
super + {_,alt + }f
|
||||||
|
bspc {desktop -f,node -d} 6
|
||||||
|
|
||||||
|
super + {_,alt + }w
|
||||||
|
bspc {desktop -f,node -d} 7
|
||||||
|
|
||||||
|
super + {_,alt + }e
|
||||||
|
bspc {desktop -f,node -d} 8
|
||||||
|
|
||||||
|
super + {_,alt + }r
|
||||||
|
bspc {desktop -f,node -d} 9
|
||||||
|
|
||||||
|
super + {_,alt + }z
|
||||||
|
bspc {desktop -f,node -d} X
|
||||||
|
|
||||||
|
# media keys
|
||||||
|
XF86Audio{Raise,Lower}Volume
|
||||||
|
pamixer {-i,-d} 5
|
||||||
|
|
||||||
|
XF86AudioPlay
|
||||||
|
playerctl play-pause
|
||||||
|
|
||||||
|
|
||||||
|
# utility
|
||||||
|
Print
|
||||||
|
flameshot gui
|
||||||
|
|
||||||
|
#
|
||||||
|
# preselect
|
||||||
|
#
|
||||||
|
|
||||||
|
# preselect the direction
|
||||||
|
super + ctrl + {h,j,k,l}
|
||||||
|
bspc node -p {west,south,north,east}
|
||||||
|
|
||||||
|
# preselect the ratio
|
||||||
|
super + ctrl + {1-9}
|
||||||
|
bspc node -o 0.{1-9}
|
||||||
|
|
||||||
|
# cancel the preselection for the focused node
|
||||||
|
# super + ctrl + space
|
||||||
|
# bspc node -p cancel
|
||||||
|
|
||||||
|
# cancel the preselection for the focused desktop
|
||||||
|
# super + ctrl + shift + space
|
||||||
|
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
|
||||||
|
|
||||||
|
#
|
||||||
|
# move/resize
|
||||||
|
#
|
||||||
|
|
||||||
|
# expand a window by moving one of its side outward
|
||||||
|
super + alt + {h,j,k,l}
|
||||||
|
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
|
||||||
|
|
||||||
|
# contract a window by moving one of its side inward
|
||||||
|
super + alt + shift + {h,j,k,l}
|
||||||
|
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
|
||||||
|
|
||||||
|
# move a floating window
|
||||||
|
#super + {Left,Down,Up,Right}
|
||||||
|
# bspc node -v {-20 0,0 20,0 -20,20 0}
|
Binary file not shown.
After Width: | Height: | Size: 2.4 MiB |
|
@ -0,0 +1,97 @@
|
||||||
|
#!/usr/bin/env bb
|
||||||
|
|
||||||
|
(require
|
||||||
|
'[babashka.fs :as fs]
|
||||||
|
'[clojure.string :as str]
|
||||||
|
'[clojure.tools.cli :refer [parse-opts]])
|
||||||
|
|
||||||
|
(def parsed-params (parse-opts *command-line-args* {}))
|
||||||
|
(def script-base-dir (first (:arguments parsed-params)))
|
||||||
|
|
||||||
|
(if (nil? script-base-dir)
|
||||||
|
(throw (Exception. "error: script base dir needs to be provided as first arg!")))
|
||||||
|
|
||||||
|
(def user (System/getenv "SUDO_USER"))
|
||||||
|
(if (nil? user)
|
||||||
|
(throw (Exception. "error: script needs to be executed with sudo!")))
|
||||||
|
|
||||||
|
(def home (str "/home/" user))
|
||||||
|
|
||||||
|
;;todo: import from base.clj
|
||||||
|
(defn- safe-sh [& commands]
|
||||||
|
(as-> (apply shell/sh commands) $
|
||||||
|
(if (= (:exit $) 0) $ (throw (Exception. (:err $))))))
|
||||||
|
|
||||||
|
(defn- safe-sh-as-user [& commands]
|
||||||
|
(safe-sh "su" "-c" (str/join " " (map #(if (str/includes? % " ") (str "\"" % "\"") %) commands)) user))
|
||||||
|
|
||||||
|
(defn- setup-spacemacs []
|
||||||
|
;; installing spacemacs
|
||||||
|
(println "setting up spacemacs..")
|
||||||
|
(-> (fs/file (str home "/.emacs.d")) (fs/delete-tree))
|
||||||
|
(safe-sh-as-user "git" "clone" "https://github.com/syl20bnr/spacemacs" (str home "/.emacs.d"))
|
||||||
|
(println "spacemacs set up"))
|
||||||
|
|
||||||
|
(defn- setup-android-scripts []
|
||||||
|
(let [android-scripts-dir (str home "/Projects/android-scripts")]
|
||||||
|
(-> (fs/file android-scripts-dir) (fs/delete-tree))
|
||||||
|
(fs/create-dirs android-scripts-dir)
|
||||||
|
(safe-sh "chown" "-R" (str user ":" user) android-scripts-dir)
|
||||||
|
(safe-sh-as-user "git" "clone" "ssh://git@git.schro.fi:4242/schrofi/android-scripts.git" android-scripts-dir)))
|
||||||
|
|
||||||
|
(defn- link-config-file [src dest]
|
||||||
|
;; make sure the parent directory of destination file exists
|
||||||
|
(->> (fs/file dest) (fs/parent) (fs/path) (safe-sh-as-user "mkdir" "-p"))
|
||||||
|
(safe-sh-as-user "ln" "-fs" src dest))
|
||||||
|
|
||||||
|
(defn- link-config-files []
|
||||||
|
(println "setting gtk theme..")
|
||||||
|
(safe-sh-as-user "ln" "-fs" (str script-base-dir "/configs/config-files/gtk-config") "~/.gtkrc-2.0")
|
||||||
|
(println "linking wallpaper..")
|
||||||
|
(link-config-file (str script-base-dir "/configs/config-files/wallpaper.jpg") "~/Pictures/wallpaper.jpg")
|
||||||
|
(println "linking config files..")
|
||||||
|
(link-config-file (str script-base-dir "/configs/config-files/bspwm-config") "~/.config/bspwm/bspwmrc")
|
||||||
|
(link-config-file (str script-base-dir "/configs/config-files/picom-config") "~/.config/picom/picom.conf")
|
||||||
|
(link-config-file (str script-base-dir "/configs/config-files/alacritty-config") "~/.config/alacritty/alacritty.toml")
|
||||||
|
(link-config-file (str script-base-dir "/configs/config-files/sxhkd-config") "~/.config/sxhkd/sxhkdrc")
|
||||||
|
(link-config-file (str script-base-dir "/configs/config-files/rofi-config") "~/.config/rofi/config.rasi")
|
||||||
|
(link-config-file (str script-base-dir "/configs/config-files/polybar-config") "~/.config/polybar/config.ini"))
|
||||||
|
|
||||||
|
(defn- setup-system-services []
|
||||||
|
(println "setting up system services..")
|
||||||
|
;;todo: user services
|
||||||
|
(safe-sh "ln" "-fs" "/etc/sv/bluetoothd" "/var/service")
|
||||||
|
(safe-sh "usermod" "-a" "-G" "bluetooth" user))
|
||||||
|
|
||||||
|
(defn- install-fish-functions []
|
||||||
|
;;todo: symlink files in fish-functions to .config/fish/functions
|
||||||
|
)
|
||||||
|
|
||||||
|
(println "applying configuration..")
|
||||||
|
(setup-spacemacs)
|
||||||
|
|
||||||
|
;;change shell to fish
|
||||||
|
(safe-sh "chsh" "-s" "/usr/bin/fish" user)
|
||||||
|
(println "changed shell to fish")
|
||||||
|
|
||||||
|
(println "setting up fish functions..")
|
||||||
|
(install-fish-functions)
|
||||||
|
|
||||||
|
(safe-sh-as-user "git" "config" "--global" "user.name" "Florian Schrofner")
|
||||||
|
(safe-sh-as-user "git" "config" "--global" "user.email" "florian@schro.fi")
|
||||||
|
(println "changed git user data")
|
||||||
|
|
||||||
|
;;creating projects dir
|
||||||
|
(let [projects-dir (str home "/Projects")]
|
||||||
|
(fs/create-dirs projects-dir)
|
||||||
|
(safe-sh "chown" (str user ":" user) "-R" projects-dir)
|
||||||
|
(println "created project directory"))
|
||||||
|
|
||||||
|
(setup-android-scripts)
|
||||||
|
(println "set up android scripts")
|
||||||
|
|
||||||
|
(setup-system-services)
|
||||||
|
(println "set up system services")
|
||||||
|
|
||||||
|
(link-config-files)
|
||||||
|
(println "configuration applied")
|
|
@ -0,0 +1,89 @@
|
||||||
|
#!/usr/bin/env bb
|
||||||
|
|
||||||
|
(require
|
||||||
|
'[babashka.fs :as fs])
|
||||||
|
|
||||||
|
;;todo: import from base.clj
|
||||||
|
(defn- safe-sh [& commands]
|
||||||
|
(as-> (apply shell/sh commands) $
|
||||||
|
(if (= (:exit $) 0) $ (throw (Exception. (:err $))))))
|
||||||
|
|
||||||
|
(def user (System/getenv "SUDO_USER"))
|
||||||
|
(def home (str "/home/" user))
|
||||||
|
|
||||||
|
(safe-sh "xbps-install" "-Sy" "void-repo-nonfree")
|
||||||
|
(safe-sh "xbps-install" "-Sy" "void-repo-multilib")
|
||||||
|
(safe-sh "xbps-install" "-Sy" "void-repo-multilib-nonfree")
|
||||||
|
(safe-sh "xbps-install" "-S")
|
||||||
|
|
||||||
|
(def packages {
|
||||||
|
:base ["atool" "alacritty" "alsa-firmware" "avahi" "bind-utils" "bluez" "bspwm" "chromium" "clojure" "curl" "cups" "cups-filters" "dragon" "emacs-gtk3" "fish-shell" "firefox" "flameshot" "flatpak" "font-firacode" "foomatic-db" "foomatic-db-nonfree" "fuse-exfat" "gimp" "git" "git-annex" "gparted" "guvcview" "htop" "intel-ucode" "inxi" "leiningen" "libgcc-32bit" "libstdc++-32bit" "libdrm-32bit" "libglvnd-32bit" "mtools" "nitrogen" "nss-mdns" "pamixer" "pass" "picom" "playerctl" "polybar" "ranger" "rofi" "Signal-Desktop" "sof-firmware" "sox" "ssr" "steam" "sysfsutils" "sxhkd" "the_silver_searcher" "udevil" "unzip" "wget" "xbindkeys" "xclip" "xz"]
|
||||||
|
:work ["android-udev-rules" "filezilla" "git-lfs" "kotlin-bin" "libcxx" "libbsd" "libcxxabi" "scrcpy"]
|
||||||
|
:intel ["mesa-intel-dri" "libva-intel-driver" "mesa-dri-32bit"]
|
||||||
|
:amd ["mesa-dri-32bit" "mesa-vulkan-radeon" "mesa-vaapi" "mesa-vdpau" "vulkan-loader"]
|
||||||
|
})
|
||||||
|
|
||||||
|
(def flatpak-packages {
|
||||||
|
:work ["com.getpostman.Postman" "com.slack.Slack"]
|
||||||
|
:game ["com.discordapp.Discord"]
|
||||||
|
})
|
||||||
|
|
||||||
|
;;todo: allow to pick specific package sets later
|
||||||
|
|
||||||
|
;;installing normal xbps packages
|
||||||
|
(println "installing packages..")
|
||||||
|
(let [packages-to-install (flatten (vals packages))]
|
||||||
|
(apply safe-sh (concat ["xbps-install" "-y"] packages-to-install)))
|
||||||
|
(println "packages installed")
|
||||||
|
|
||||||
|
;;installing flatpak packages
|
||||||
|
(println "installing flatpak packages..")
|
||||||
|
(safe-sh "flatpak" "remote-add" "--if-not-exists" "flathub" "https://dl.flathub.org/repo/flathub.flatpakrepo")
|
||||||
|
(let [packages-to-install (flatten (vals flatpak-packages))]
|
||||||
|
(apply safe-sh (concat ["flatpak" "install" "flathub" "--noninteractive"] packages-to-install)))
|
||||||
|
(println "flatpak packages installed")
|
||||||
|
|
||||||
|
|
||||||
|
(def toolbox-link "https://download-cdn.jetbrains.com/toolbox/jetbrains-toolbox-2.2.3.20090.tar.gz")
|
||||||
|
|
||||||
|
(def http-toolkit-version "1.19.1")
|
||||||
|
(def http-toolkit-link (str "https://github.com/httptoolkit/httptoolkit-desktop/releases/download/v" http-toolkit-version "/HttpToolkit-linux-x64-" http-toolkit-version ".zip"))
|
||||||
|
|
||||||
|
(defn- install-application [link filename target-directory extract-command]
|
||||||
|
(let [download-file-path (str home "/Downloads/" filename)
|
||||||
|
download-file (fs/file download-file-path)]
|
||||||
|
(safe-sh "wget" "-O" download-file-path link)
|
||||||
|
(fs/delete-tree target-directory)
|
||||||
|
(fs/create-dirs target-directory)
|
||||||
|
(extract-command download-file-path target-directory)
|
||||||
|
(fs/delete download-file)
|
||||||
|
(safe-sh "chown" (str user ":" user) "-R" target-directory)))
|
||||||
|
|
||||||
|
;;installing jetbrains toolbox
|
||||||
|
(defn- install-jetbrains-toolbox []
|
||||||
|
(println "installing jetbrains toolbox..")
|
||||||
|
(let [target-directory (str home "/Applications/JetbrainsToolbox")]
|
||||||
|
(install-application
|
||||||
|
toolbox-link
|
||||||
|
"toolbox.tar.gz"
|
||||||
|
target-directory
|
||||||
|
#(safe-sh "tar" "-xzf" %1 "-C" %2)))
|
||||||
|
(println "jetbrains toolbox installed"))
|
||||||
|
|
||||||
|
;;installing http toolkit
|
||||||
|
(defn- install-http-toolkit []
|
||||||
|
(println "installing http toolkit..")
|
||||||
|
(let [target-directory (str home "/Applications/HttpToolkit")]
|
||||||
|
(install-application
|
||||||
|
http-toolkit-link
|
||||||
|
"httptoolkit.zip"
|
||||||
|
target-directory
|
||||||
|
#(safe-sh "unzip" %1 "-d" %2)))
|
||||||
|
(println "http toolkit installed"))
|
||||||
|
|
||||||
|
(let [applications-dir (str home "/Applications")]
|
||||||
|
(fs/create-dirs applications-dir)
|
||||||
|
(safe-sh "chown" (str user ":" user) "-R" applications-dir))
|
||||||
|
|
||||||
|
(install-jetbrains-toolbox)
|
||||||
|
(install-http-toolkit)
|
40
readme.md
40
readme.md
|
@ -1,40 +0,0 @@
|
||||||
# schrofi's system configuration
|
|
||||||
My personal system configuration using cdist on a Manjaro system, specifically tailored towards me and nobody else ¯\_(ツ)_/¯
|
|
||||||
You can use it for inspiration though.
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
1. Install cdist
|
|
||||||
```
|
|
||||||
git clone https://code.ungleich.ch/ungleich-public/cdist.git
|
|
||||||
cd cdist
|
|
||||||
export PATH=$PATH:$(pwd -P)/bin
|
|
||||||
./bin/cdist-build-helper version
|
|
||||||
make install
|
|
||||||
sudo python setup.py install
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Setup SSH root access
|
|
||||||
Add the following line into your `/etc/ssh/sshd_config`
|
|
||||||
```
|
|
||||||
PermitRootLogin yes
|
|
||||||
```
|
|
||||||
|
|
||||||
Then copy your SSH key to the root user at localhost.
|
|
||||||
```
|
|
||||||
ssh-copy-id root@localhost
|
|
||||||
```
|
|
||||||
|
|
||||||
And change the root login back to
|
|
||||||
```
|
|
||||||
PermitRootLogin without-password
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, start the ssh daemon if it is not running
|
|
||||||
```
|
|
||||||
sudo systemctl start sshd
|
|
||||||
```
|
|
||||||
|
|
||||||
3. CD into this repository and execute the following command:
|
|
||||||
```
|
|
||||||
cdist config -vv -c ./cdist localhost
|
|
||||||
```
|
|
Loading…
Reference in New Issue