add i3 config and start theming
This commit is contained in:
		
							parent
							
								
									ef48062929
								
							
						
					
					
						commit
						53d6e2d75e
					
				
					 7 changed files with 246 additions and 7 deletions
				
			
		
							
								
								
									
										3
									
								
								base/base.clj
									
										
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										3
									
								
								base/base.clj
									
										
									
									
									
										
										
										Normal file → Executable file
									
								
							| 
						 | 
				
			
			@ -3,6 +3,8 @@
 | 
			
		|||
(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) $
 | 
			
		||||
| 
						 | 
				
			
			@ -11,3 +13,4 @@
 | 
			
		|||
;;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))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										3
									
								
								configs/config-files/gtk-config
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								configs/config-files/gtk-config
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
gtk-icon-theme-name = "Mint-Y"
 | 
			
		||||
gtk-theme-name = "Dracula-alt-style"
 | 
			
		||||
gtk-font-name = "Fira Code Regular 10"
 | 
			
		||||
							
								
								
									
										201
									
								
								configs/config-files/i3-config
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										201
									
								
								configs/config-files/i3-config
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,201 @@
 | 
			
		|||
# 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:monospace 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
 | 
			
		||||
 | 
			
		||||
# set desktop wallpaper
 | 
			
		||||
# exec --no-startup-id feh --bg-scale ~/Pictures/wallpaper.jpg
 | 
			
		||||
 | 
			
		||||
# Start XDG autostart .desktop files using dex. See also
 | 
			
		||||
# https://wiki.archlinux.org/index.php/XDG_Autostart
 | 
			
		||||
exec --no-startup-id dex --autostart --environment i3
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
 | 
			
		||||
# move tiling windows via drag & drop by left-clicking into the title bar,
 | 
			
		||||
# or left-clicking anywhere into the window while holding the floating modifier.
 | 
			
		||||
tiling_drag modifier titlebar
 | 
			
		||||
 | 
			
		||||
# start a terminal
 | 
			
		||||
bindsym $mod+Return exec i3-sensible-terminal
 | 
			
		||||
 | 
			
		||||
# start emacs
 | 
			
		||||
bindsym $mod+q exec emacsclient
 | 
			
		||||
 | 
			
		||||
# take screenshot
 | 
			
		||||
bindsym Print exec flameshot gui
 | 
			
		||||
 | 
			
		||||
# kill focused window
 | 
			
		||||
bindsym $mod+minus kill
 | 
			
		||||
 | 
			
		||||
# start rofi (a program launcher)
 | 
			
		||||
bindsym $mod+a exec --no-startup-id rofi -show drun
 | 
			
		||||
 | 
			
		||||
# There also is i3-dmenu-desktop which only displays applications shipping a
 | 
			
		||||
# .desktop file. It is a wrapper around dmenu, so you need that installed.
 | 
			
		||||
# bindcode $mod+40 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+semicolon 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+semicolon move right
 | 
			
		||||
 | 
			
		||||
# alternatively, you can use the cursor keys:
 | 
			
		||||
bindsym $mod+Mod1+Left move left
 | 
			
		||||
bindsym $mod+Mod1+Down move down
 | 
			
		||||
bindsym $mod+Mod1+Up move up
 | 
			
		||||
bindsym $mod+Mod1+Right move right
 | 
			
		||||
 | 
			
		||||
# window splitting
 | 
			
		||||
bindsym $mod+Tab split toggle
 | 
			
		||||
#bindsym $mod+v split v
 | 
			
		||||
#bindsym $mod+h split h
 | 
			
		||||
 | 
			
		||||
# 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+x workspace number $ws1
 | 
			
		||||
bindsym $mod+c workspace number $ws2
 | 
			
		||||
bindsym $mod+v workspace number $ws3
 | 
			
		||||
bindsym $mod+s workspace number $ws4
 | 
			
		||||
bindsym $mod+d workspace number $ws5
 | 
			
		||||
bindsym $mod+f workspace number $ws6
 | 
			
		||||
bindsym $mod+w workspace number $ws7
 | 
			
		||||
bindsym $mod+e workspace number $ws8
 | 
			
		||||
bindsym $mod+r workspace number $ws9
 | 
			
		||||
bindsym $mod+z workspace number $ws10
 | 
			
		||||
 | 
			
		||||
# move focused container to workspace
 | 
			
		||||
bindsym $mod+Mod1+x move container to workspace number $ws1
 | 
			
		||||
bindsym $mod+Mod1+c move container to workspace number $ws2
 | 
			
		||||
bindsym $mod+Mod1+v move container to workspace number $ws3
 | 
			
		||||
bindsym $mod+Mod1+s move container to workspace number $ws4
 | 
			
		||||
bindsym $mod+Mod1+d move container to workspace number $ws5
 | 
			
		||||
bindsym $mod+Mod1+f move container to workspace number $ws6
 | 
			
		||||
bindsym $mod+Mod1+w move container to workspace number $ws7
 | 
			
		||||
bindsym $mod+Mod1+e move container to workspace number $ws8
 | 
			
		||||
bindsym $mod+Mod1+r move container to workspace number $ws9
 | 
			
		||||
bindsym $mod+Mod1+z move container to workspace number $ws1
 | 
			
		||||
 | 
			
		||||
# 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 semicolon 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"
 | 
			
		||||
 | 
			
		||||
# Start i3bar to display a workspace bar (plus the system information i3status
 | 
			
		||||
# finds out, if available)
 | 
			
		||||
bar {
 | 
			
		||||
        status_command i3status
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# theming
 | 
			
		||||
# class                 border  backgr. text    indicator child_border
 | 
			
		||||
client.focused          #786396 #786396 #ffffff #786396   #534070
 | 
			
		||||
							
								
								
									
										9
									
								
								configs/config-files/runsvdir-USER
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								configs/config-files/runsvdir-USER
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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"
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								configs/config-files/wallpaper.jpg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								configs/config-files/wallpaper.jpg
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 2.4 MiB  | 
| 
						 | 
				
			
			@ -2,9 +2,19 @@
 | 
			
		|||
 | 
			
		||||
(require 
 | 
			
		||||
  '[babashka.fs :as fs]
 | 
			
		||||
  '[clojure.string :as str])
 | 
			
		||||
  '[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
 | 
			
		||||
| 
						 | 
				
			
			@ -20,14 +30,13 @@
 | 
			
		|||
  (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"))
 | 
			
		||||
  (safe-sh "chown" (str user ":" user) "-R" (str home "/.emacs.d"))
 | 
			
		||||
  (println "spacemacs set up"))
 | 
			
		||||
 | 
			
		||||
(defn- setup-android-scripts []
 | 
			
		||||
  (let [android-scripts-dir (str home "/Projects/android-scripts")]
 | 
			
		||||
    (fs/create-dirs android-scripts-dir)
 | 
			
		||||
    (safe-sh "git" "clone" "ssh://git@git.schro.fi:4242/schrofi/android-scripts.git" android-scripts-dir)
 | 
			
		||||
    (safe-sh "chown" (str user ":" user) "-R" 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- setup-i3 []
 | 
			
		||||
  (println "setting up i3..")
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +50,18 @@
 | 
			
		|||
  (safe-sh-as-user "gsettings" "set" "org.mate.interface" "document-font-name" "Fira Code Regular 10.0")
 | 
			
		||||
  (safe-sh-as-user "gsettings" "set" "org.mate.interface" "monospace-font-name" "Fira Code Regular 10.0")
 | 
			
		||||
  (safe-sh-as-user "gsettings" "set" "org.mate.Marco.general" "titlebar-font" "Fira Code Bold 10.0")
 | 
			
		||||
  (safe-sh-as-user "gsettings" "set" "org.mate.caja.desktop" "font" "Fira Code Regular 10.0"))
 | 
			
		||||
  (safe-sh-as-user "gsettings" "set" "org.mate.caja.desktop" "font" "Fira Code Regular 10.0")
 | 
			
		||||
  (safe-sh-as-user "ln" "-fs" (str script-base-dir "/configs/config-files/gtk-config") "~/.gtkrc-2.0")
 | 
			
		||||
  (safe-sh-as-user "ln" "-fs" (str script-base-dir "/configs/config-files/i3-config") "~/.config/i3/config")
 | 
			
		||||
  (println "linking wallpaper..")
 | 
			
		||||
  (safe-sh-as-user "ln" "-fs" (str script-base-dir "/configs/config-files/wallpaper.jpg") "~/Pictures/wallpaper.jpg")
 | 
			
		||||
  (safe-sh-as-user "gsettings" "set" "org.mate.background" "picture-filename" "~/Pictures/wallpaper.jpg"))
 | 
			
		||||
 | 
			
		||||
(defn- setup-system-services []
 | 
			
		||||
  (println "setting up system services..")
 | 
			
		||||
  ;;todo
 | 
			
		||||
  ;;(fs/file ())
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
;;todo: fetch spacemacs
 | 
			
		||||
;;todo: disable locking when closing lid on ac
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										7
									
								
								setup.sh
									
										
									
									
									
								
							
							
						
						
									
										7
									
								
								setup.sh
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,7 +1,10 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# first install babashka which is required for the other scripts
 | 
			
		||||
xbps-install -y babashka;
 | 
			
		||||
 | 
			
		||||
# gets the path of this script
 | 
			
		||||
__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 | 
			
		||||
 | 
			
		||||
./packages/packages.clj;
 | 
			
		||||
./configs/configs.clj;
 | 
			
		||||
./configs/configs.clj ${__dir};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue