Compare commits
No commits in common. "master" and "8a5f9b8131339f94a735390185e7105a2b9de799" have entirely different histories.
master
...
8a5f9b8131
|
@ -1,16 +0,0 @@
|
|||
#!/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))
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
# once there are more types, this should be handled by a parameter
|
||||
__manjaro_desktop
|
|
@ -0,0 +1,16 @@
|
|||
#!/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.*;"
|
|
@ -0,0 +1,11 @@
|
|||
#!/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
|
|
@ -0,0 +1,2 @@
|
|||
user
|
||||
directory
|
|
@ -0,0 +1,209 @@
|
|||
# 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
|
|
@ -0,0 +1,18 @@
|
|||
[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"
|
|
@ -0,0 +1,105 @@
|
|||
#!/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
|
|
@ -1,78 +0,0 @@
|
|||
[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"
|
|
@ -1,51 +0,0 @@
|
|||
#!/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
|
||||
(bspc "wm" "-O" "HDMI-A-0" "DisplayPort-2")
|
||||
|
||||
(->> (range 1 10)
|
||||
(map str)
|
||||
(concat ["monitor" "DisplayPort-2" "-d"])
|
||||
(apply bspc))
|
||||
|
||||
(bspc "monitor" "HDMI-A-0" "-d" "X")
|
||||
|
||||
(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")
|
|
@ -1,3 +0,0 @@
|
|||
function dhu
|
||||
/home/schrofi/Android/Sdk/extras/google/auto/desktop-head-unit $argv
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
function dm
|
||||
/home/schrofi/Projects/android-scripts/drawable-mover/dm.clj -s $(pwd) -n $argv[1] -d $argv[2]
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
function erp
|
||||
/home/schrofi/Projects/android-scripts/enterprise-release-publisher/erp.clj -k /home/schrofi/.ssh/loop $argv
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
function pap
|
||||
/home/schrofi/Projects/android-scripts/playstore-apk-puller/pap.clj $argv
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
function waht
|
||||
/home/schrofi/Projects/android-scripts/wireless-adb-helper-tool/waht.clj $argv
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
gtk-icon-theme-name = "Mint-Y"
|
||||
gtk-theme-name = "Dracula-alt-style"
|
||||
gtk-font-name = "Fira Code Regular 10"
|
|
@ -1,430 +0,0 @@
|
|||
#################################
|
||||
# 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; }
|
||||
};
|
|
@ -1,9 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
export USER="<username>"
|
||||
export HOME="/home/<username>"
|
||||
|
||||
groups="$(id -Gn "$USER" | tr ' ' ':')"
|
||||
svdir="$HOME/service"
|
||||
|
||||
exec chpst -u "$USER:$groups" runsvdir "$svdir"
|
|
@ -1,174 +0,0 @@
|
|||
#
|
||||
# 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.
Before Width: | Height: | Size: 2.4 MiB |
|
@ -1,95 +0,0 @@
|
|||
#!/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"))
|
||||
|
||||
(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")
|
|
@ -1,89 +0,0 @@
|
|||
#!/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)
|
|
@ -0,0 +1,40 @@
|
|||
# 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