Cleaner, more flexible install process after re-installating

master
Quentin Duchemin 2023-02-18 22:29:26 +01:00
parent 042eef68f8
commit 34d5596a67
Signed by: Chosto
GPG Key ID: 96AB8AE7DFEA3D74
50 changed files with 552 additions and 1439 deletions

1
.Xresources 120000
View File

@ -0,0 +1 @@
/home/.Xresources.desk

View File

@ -1,11 +1,11 @@
[A2J] [A2J]
AutoExport=true AutoExport=false
AutoStart=true AutoStart=false
ExportHW=true ExportHW=true
[ALSA-Audio] [ALSA-Audio]
BridgeChannels=2 BridgeChannels=2
BridgeIndexType=1 BridgeIndexType=2
BridgeTool=zita BridgeTool=zita
[JACK] [JACK]

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
hamster-time-tracker
realtime-privileges
zita-ajbridge

View File

@ -0,0 +1,53 @@
arc-gtk-theme
arc-icon-theme
autojump
cadence
docker
dunst
feh
firefox
flameshot
i3-wm
i3lock-color
jq
libusb-compat
maim
mlocate
nemo
neofetch
network-manager-applet
networkmanager
noto-fonts-emoji
obsidian
oh-my-zsh-git
pacman-contrib
pass
picom
playerctl
polybar
powerline-fonts
python-pip
python-pygments
rofi
rsync
signal-desktop
telegram-desktop
terminator
thunderbird
ttf-dejavu
ttf-font-awesome-5
ttf-material-icons-git
ttf-symbola
ttf-weather-icons
usb_modeswitch
vim
vscodium-bin
wget
xautolock
xdg-user-dirs
xdotool
xorg-server
xorg-xinit
xsel
yay-bin
zsh

View File

@ -0,0 +1,54 @@
arc-gtk-theme
arc-icon-theme
autojump
cadence
docker
dunst
feh
firefox
flameshot
i3-wm
i3lock-color
jq
libusb-compat
maim
mlocate
nemo
neofetch
network-manager-applet
networkmanager
noto-fonts-emoji
numlockx
obsidian
oh-my-zsh-git
pacman-contrib
pass
picom
playerctl
polybar
powerline-fonts
python-pip
python-pygments
rofi
rsync
signal-desktop
telegram-desktop
terminator
thunderbird
ttf-dejavu
ttf-font-awesome-5
ttf-material-icons-git
ttf-symbola
ttf-weather-icons
usb_modeswitch
vim
vscodium-bin
wget
xautolock
xdg-user-dirs
xdotool
xorg-server
xorg-xinit
xsel
yay-bin
zsh

View File

@ -25,6 +25,7 @@ bindsym XF86AudioNext exec --no-startup-id playerctl next
# PROGRAMS STARTED AUTOMATICALLY # PROGRAMS STARTED AUTOMATICALLY
################################## ##################################
# Time tracking
exec hamster exec hamster
# cadence will take care of all we need : # cadence will take care of all we need :
@ -57,7 +58,7 @@ exec --no-startup-id amixer -D hw:PCH -M sset Headphone 100%
# Scratchpad # Scratchpad
## For Hamster, moving to SP automatically is problematic. Do it only by hand. ## For Hamster, moving to SP automatically is problematic. Do it only by hand.
for_window [class="Hamster" window_type="normal"] floating enable for_window [class="Hamster" window_type="normal"] floating enable, move scratchpad
for_window [class="Non-Mixer"] mark "mixer", move scratchpad for_window [class="Non-Mixer"] mark "mixer", move scratchpad
for_window [class="Catia*"] mark "jack", move scratchpad for_window [class="Catia*"] mark "jack", move scratchpad
bindsym $mod+Shift+j [con_mark="jack"] scratchpad show, move position center bindsym $mod+Shift+j [con_mark="jack"] scratchpad show, move position center

View File

@ -1,138 +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 Mod1
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:Roboto, Bold 10
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
bindsym $mod+Return exec i3-sensible-terminal
# kill focused window
bindsym $mod+q kill
# start dmenu (a program launcher)
bindsym $mod+d exec rofi -show run
# 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
# 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+z 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+Shift+q focus parent
# switch to workspace
bindsym $mod+ampersand workspace 1
bindsym $mod+eacute workspace 2
bindsym $mod+quotedbl workspace 3
bindsym $mod+apostrophe workspace 4
bindsym $mod+parenleft workspace 5
bindsym $mod+minus workspace 6
bindsym $mod+egrave workspace 7
bindsym $mod+underscore workspace 8
bindsym $mod+ccedilla workspace 9
bindsym $mod+agrave workspace 10
# move focused container to workspace
bindsym $mod+Shift+ampersand move container to workspace 1
bindsym $mod+Shift+eacute move container to workspace 2
bindsym $mod+Shift+quotedbl move container to workspace 3
bindsym $mod+Shift+apostrophe move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+minus move container to workspace 6
bindsym $mod+Shift+egrave move container to workspace 7
bindsym $mod+Shift+underscore move container to workspace 8
bindsym $mod+Shift+ccedilla move container to workspace 9
bindsym $mod+Shift+agrave move container to workspace 10
# 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'"
# all windows (except non-float) have a 1px border
new_window pixel 1
# hide borders when touching edges
hide_edge_borders both
# 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 windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
# 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
bindsym Return mode "default"
bindsym Escape 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
#}
#put workspace 1 on main screen
workspace 1 output DVI-D-0
#press the same combinaison for changing workspace to get back to old workspace (like cd -)
workspace_auto_back_and_forth yes
#start compositor
exec compton -b

View File

@ -42,20 +42,17 @@ smart_gaps on
# PROGRAMS STARTED AUTOMATICALLY # PROGRAMS STARTED AUTOMATICALLY
################################## ##################################
#start compositor # Start compositor
exec --no-startup-id picom --config ~/.config/picom.conf exec --no-startup-id picom --config ~/.config/picom.conf
#start NetworkManager applet # Start NetworkManager applet
exec --no-startup-id nm-applet exec --no-startup-id nm-applet
#start polybar # Start polybar
exec_always --no-startup-id $HOME/.config/polybar/scripts/launch_polybar.sh exec_always --no-startup-id $HOME/.config/polybar/scripts/launch_polybar.sh
# configure keyboard layout
exec setxkbmap fr
# set numlock on # set numlock on
exec numlockx on exec --no-startup-id numlockx on
# turn to black screen after 9 minutes of doing nothing # turn to black screen after 9 minutes of doing nothing
exec --no-startup-id xset dpms 600 exec --no-startup-id xset dpms 600
@ -69,28 +66,24 @@ exec dunst
# set ALSA initial volume # set ALSA initial volume
exec --no-startup-id amixer -D hw:PCH -M sset Master 50% exec --no-startup-id amixer -D hw:PCH -M sset Master 50%
# standard apps for working # standard apps
exec standardnotes-desktop exec --no-startup-id i3-msg 'workspace 1; exec i3-sensible-terminal'
exec --no-startup-id i3-msg 'workspace 3; exec firefox' exec firefox
exec thunderbird exec thunderbird
exec signal-desktop exec signal-desktop
exec telegram-desktop exec telegram-desktop
exec obsidian exec obsidian
exec --no-startup-id i3-msg 'workspace number 1; exec i3-sensible-terminal'
# fetch keys from HSM # fetch keys from HSM
exec --no-startup-id gpg --card-status exec --no-startup-id gpg --card-status
# nextcloud sync client # ensure keyboard layout
exec nextcloud exec --no-startup-id setxkbmap fr
################################## ##################################
# BINDINGS FOR STARTING PROGRAMS # BINDINGS FOR STARTING PROGRAMS
################################## ##################################
# start a terminal # start a terminal
bindsym $mod+Return exec i3-sensible-terminal bindsym $mod+Return exec --no-startup-id i3-sensible-terminal
# start SSH connexion to all VMs
bindsym $mod+Shift+Return exec terminator -l picasoft
# start rofi (a program launcher) # start rofi (a program launcher)
bindsym $mod+d exec rofi -show run -theme sidebar bindsym $mod+d exec rofi -show run -theme sidebar
@ -99,11 +92,11 @@ bindsym $mod+Shift+d exec ~/.config/rofi/emoji-picker.py
# just lock the screen # just lock the screen
bindsym $mod+l exec --no-startup-id $Locker && sleep 1 bindsym $mod+l exec --no-startup-id $Locker && sleep 1
# lock and suspend to RAM # lock and suspend to SWAP
bindsym $mod+Shift+l exec --no-startup-id $Locker && systemctl suspend bindsym $mod+Shift+l exec --no-startup-id $Locker && systemctl hibernate
# open Explorer # open Explorer
bindsym Mod4+e exec nemo bindsym $mod+e exec --no-startup-id nemo
# screenshot and save to file # screenshot and save to file
bindsym Shift+Print exec ~/.config/i3/scripts/screenshot.py -s bindsym Shift+Print exec ~/.config/i3/scripts/screenshot.py -s
@ -127,6 +120,7 @@ bindsym $mod+p exec passmenu
bindsym Mod4+p exec playerctl play-pause bindsym Mod4+p exec playerctl play-pause
bindsym Mod4+Right exec playerctl next bindsym Mod4+Right exec playerctl next
bindsym Mod4+Left exec playerctl previous bindsym Mod4+Left exec playerctl previous
################################## ##################################
# BINDINGS FOR STANDARD OPERATIONS # BINDINGS FOR STANDARD OPERATIONS
################################## ##################################
@ -154,9 +148,6 @@ bindsym $mod+v split v
# enter fullscreen mode for the focused container # enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+e layout toggle splith splitv tabbed
# toggle tiling / floating # toggle tiling / floating
bindsym $mod+space floating toggle bindsym $mod+space floating toggle
@ -187,9 +178,6 @@ bindsym $mod+Shift+underscore move container to workspace 8
bindsym $mod+Shift+ccedilla move container to workspace 9 bindsym $mod+Shift+ccedilla move container to workspace 9
bindsym $mod+Shift+agrave move container to workspace 10 bindsym $mod+Shift+agrave move container to workspace 10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart bindsym $mod+Shift+r restart
@ -208,7 +196,7 @@ bindsym $mod+r mode "$resize_mode"
# BINDINGS FOR NOTIFICATIONS # BINDINGS FOR NOTIFICATIONS
################################## ##################################
bindsym Ctrl+Shift+space exec dunstctl close-all bindsym Ctrl+Shift+BackSpace exec dunstctl close-all
bindsym Ctrl+$mod+space exec dunstctl history-pop bindsym Ctrl+$mod+space exec dunstctl history-pop
bindsym Shift+BackSpace exec dunstctl close bindsym Shift+BackSpace exec dunstctl close
@ -218,7 +206,6 @@ bindsym Shift+BackSpace exec dunstctl close
# some windows will float automatically # some windows will float automatically
for_window [class="(?i)Thunderbird"] floating enable for_window [class="(?i)Thunderbird"] floating enable
for_window [window_role="Steam"] floating enable
for_window [window_role="About"] floating enable for_window [window_role="About"] floating enable
for_window [window_role="Organizer"] floating enable for_window [window_role="Organizer"] floating enable
for_window [title="^Terminator *"] floating enable for_window [title="^Terminator *"] floating enable
@ -241,9 +228,9 @@ bindsym $mod+Shift+s [class="Signal"] scratchpad show, move position center
bindsym $mod+Shift+t [class="Telegram"] scratchpad show, move position center bindsym $mod+Shift+t [class="Telegram"] scratchpad show, move position center
bindsym Mod4+ampersand [title="(?i)perso.*obsidian"] scratchpad show, move container to workspace 4, workspace 4, floating disable bindsym Mod4+ampersand [title="(?i)perso.*obsidian"] scratchpad show, move container to workspace 4, workspace 4, floating disable
bindsym Mod4+eacute [title="(?i)tech.*obsidian"] scratchpad show, move container to workspace 4, workspace 4, floating disable bindsym Mod4+eacute [title="(?i)tech.*obsidian"] scratchpad show, move container to workspace 4, workspace 4, floating disable
bindsym Mod4+quotedbl [title="(?i)identibat.*obsidian"] scratchpad show, move container to workspace 4, workspace 4, floating disable
bindsym Mod4+apostrophe [title="(?i).*isorédu.*obsidian"] scratchpad show, move container to workspace 4, workspace 4, floating disable
# automatic workspace # automatic workspace
assign [class="(?i)Obsidian"] → number 4 assign [class="(?i)Obsidian"] → number 4
assign [class="(?i)Tor Browser"] → number 5 assign [class="(?i)Tor Browser"] → number 5
assign [class="(?i)Firefox"] → number 3
assign [class="(?i)VSCodium"] → number 2

View File

@ -34,7 +34,4 @@ i3lock \
--indicator \ --indicator \
--time-str="%H:%M:%S" \ --time-str="%H:%M:%S" \
\ \
--verif-text="Chosto ?" \ --radius=110
--wrong-text="LEURRE" \
--radius=110 \
--noinput-text="OH DIS DONC" \

View File

@ -4,41 +4,40 @@ JACK settings, as persisted by D-Bus object.
You probably don't want to edit this because You probably don't want to edit this because
it will be overwritten next time jackdbus saves. it will be overwritten next time jackdbus saves.
--> -->
<!-- Thu Jun 21 19:58:08 2018 --> <!-- Sat Feb 18 21:25:33 2023 -->
<jack> <jack>
<engine> <engine>
<option name="driver">alsa</option> <option name="driver">alsa</option>
<option name="self-connect-mode">e</option> <option name="verbose">true</option>
</engine> </engine>
<drivers> <drivers>
<driver name="loopback">
</driver>
<driver name="dummy">
</driver>
<driver name="firewire">
</driver>
<driver name="alsarawmidi">
</driver>
<driver name="proxy">
</driver>
<driver name="alsa"> <driver name="alsa">
<option name="capture">hw:PCH,0</option> <option name="capture">hw:PCH,0</option>
<option name="playback">hw:PCH,0</option> <option name="playback">hw:PCH,0</option>
<option name="nperiods">3</option> <option name="inchannels">2</option>
<option name="outchannels">2</option>
</driver> </driver>
<driver name="net"> <driver name="alsarawmidi">
</driver>
<driver name="dummy">
</driver>
<driver name="proxy">
</driver>
<driver name="loopback">
</driver> </driver>
<driver name="netone"> <driver name="netone">
</driver> </driver>
<driver name="net">
</driver>
</drivers> </drivers>
<internals> <internals>
<internal name="profiler"> <internal name="netmanager">
</internal> </internal>
<internal name="netadapter"> <internal name="profiler">
</internal> </internal>
<internal name="audioadapter"> <internal name="audioadapter">
</internal> </internal>
<internal name="netmanager"> <internal name="netadapter">
</internal> </internal>
</internals> </internals>
</jack> </jack>

View File

@ -1 +0,0 @@
/etc/lightdm

View File

@ -1,65 +0,0 @@
# LightDM GTK+ Configuration
# Available configuration options listed below.
#
# Appearance:
# theme-name = GTK+ theme to use
# icon-theme-name = Icon theme to use
# cursor-theme-name = Cursor theme to use
# cursor-theme-size = Cursor size to use
# background = Background file to use, either an image path or a color (e.g. #772953)
# user-background = false|true ("true" by default) Display user background (if available)
# transition-duration = Length of time (in milliseconds) to transition between background images ("500" by default)
# transition-type = ease-in-out|linear|none ("ease-in-out" by default)
#
# Fonts:
# font-name = Font to use
# xft-antialias = false|true Whether to antialias Xft fonts
# xft-dpi = Resolution for Xft in dots per inch (e.g. 96)
# xft-hintstyle = none|slight|medium|hintfull What degree of hinting to use
# xft-rgba = none|rgb|bgr|vrgb|vbgr Type of subpixel antialiasing
#
# Login window:
# active-monitor = Monitor to display greeter window (name or number). Use #cursor value to display greeter at monitor with cursor. Can be a semicolon separated list
# position = x y ("50% 50%" by default) Login window position
# default-user-image = Image used as default user icon, path or #icon-name
# hide-user-image = false|true ("false" by default)
#
# Panel:
# panel-position = top|bottom ("top" by default)
# clock-format = strftime-format string, e.g. %H:%M
# indicators = semi-colon ";" separated list of allowed indicator modules. Built-in indicators include "~a11y", "~language", "~session", "~power", "~clock", "~host", "~spacer". Unity indicators can be represented by short name (e.g. "sound", "power"), service file name, or absolute path
#
# Accessibility:
# a11y-states = states of accessibility features: "name" - save state on exit, "-name" - disabled at start (default value for unlisted), "+name" - enabled at start. Allowed names: contrast, font, keyboard, reader.
# keyboard = command to launch on-screen keyboard (e.g. "onboard")
# keyboard-position = x y[;width height] ("50%,center -0;50% 25%" by default) Works only for "onboard"
# reader = command to launch screen reader (e.g. "orca")
#
# Security:
# allow-debugging = false|true ("false" by default)
# screensaver-timeout = Timeout (in seconds) until the screen blanks when the greeter is called as lockscreen
#
# Template for per-monitor configuration:
# [monitor: name]
# background = overrides default value
# user-background = overrides default value
# laptop = false|true ("false" by default) Marks monitor as laptop display
# transition-duration = overrides default value
#
[greeter]
active-monitor=0
background=/usr/share/pixmaps/totoro.jpg
#user-background=
theme-name=Arc
icon-theme-name=Arc
font-name=Roboto 10
#xft-antialias=
#xft-dpi=
#xft-hintstyle=
#xft-rgba=
indicators= ~host;~spacer;~clock;~spacer;
#clock-format=
#keyboard=
#reader=
#position=
#screensaver-timeout=

View File

@ -1,169 +0,0 @@
# General configuration
#
# start-default-seat = True to always start one seat if none are defined in the configuration
# greeter-user = User to run greeter as
# minimum-display-number = Minimum display number to use for X servers
# minimum-vt = First VT to run displays on
# lock-memory = True to prevent memory from being paged to disk
# user-authority-in-system-dir = True if session authority should be in the system location
# guest-account-script = Script to be run to setup guest account
# logind-check-graphical = True to on start seats that are marked as graphical by logind
# log-directory = Directory to log information to
# run-directory = Directory to put running state in
# cache-directory = Directory to cache to
# sessions-directory = Directory to find sessions
# remote-sessions-directory = Directory to find remote sessions
# greeters-directory = Directory to find greeters
# backup-logs = True to move add a .old suffix to old log files when opening new ones
# dbus-service = True if LightDM provides a D-Bus service to control it
#
[LightDM]
#start-default-seat=true
#greeter-user=lightdm
#minimum-display-number=0
#minimum-vt=7 # Setting this to a value < 7 implies security issues, see FS#46799
#lock-memory=true
#user-authority-in-system-dir=false
#guest-account-script=guest-account
#logind-check-graphical=false
log-directory=/var/log/lightdm
run-directory=/run/lightdm
#cache-directory=/var/cache/lightdm
#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions
#remote-sessions-directory=/usr/share/lightdm/remote-sessions
#greeters-directory=$XDG_DATA_DIRS/lightdm/greeters:$XDG_DATA_DIRS/xgreeters
#backup-logs=true
#dbus-service=true
#
# Seat configuration
#
# Seat configuration is matched against the seat name glob in the section, for example:
# [Seat:*] matches all seats and is applied first.
# [Seat:seat0] matches the seat named "seat0".
# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client".
#
# type = Seat type (local, xremote, unity)
# pam-service = PAM service to use for login
# pam-autologin-service = PAM service to use for autologin
# pam-greeter-service = PAM service to use for greeters
# xserver-backend = X backend to use (mir)
# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option)
# xserver-config = Config file to pass to X server
# xserver-layout = Layout to pass to X server
# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
# xserver-share = True if the X server is shared for both greeter and session
# xserver-hostname = Hostname of X server (only for type=xremote)
# xserver-display-number = Display number of X server (only for type=xremote)
# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
# xdmcp-port = XDMCP UDP/IP port to communicate on
# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
# unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option)
# unity-compositor-timeout = Number of seconds to wait for compositor to start
# greeter-session = Session to load for greeter
# greeter-hide-users = True to hide the user list
# greeter-allow-guest = True if the greeter should show a guest login option
# greeter-show-manual-login = True if the greeter should offer a manual login option
# greeter-show-remote-login = True if the greeter should offer a remote login option
# user-session = Session to load for users
# allow-user-switching = True if allowed to switch users
# allow-guest = True if guest login is allowed
# guest-session = Session to load for guests (overrides user-session)
# session-wrapper = Wrapper script to run session with
# greeter-wrapper = Wrapper script to run greeter with
# guest-wrapper = Wrapper script to run guest sessions with
# display-setup-script = Script to run when starting a greeter session (runs as root)
# display-stopped-script = Script to run after stopping the display server (runs as root)
# greeter-setup-script = Script to run when starting a greeter (runs as root)
# session-setup-script = Script to run when starting a user session (runs as root)
# session-cleanup-script = Script to run when quitting a user session (runs as root)
# autologin-guest = True to log in as guest by default
# autologin-user = User to log in with by default (overrides autologin-guest)
# autologin-user-timeout = Number of seconds to wait before loading default user
# autologin-session = Session to load for automatic login (overrides user-session)
# autologin-in-background = True if autologin session should not be immediately activated
# exit-on-failure = True if the daemon should exit if this seat fails
#
[Seat:*]
#type=local
#pam-service=lightdm
#pam-autologin-service=lightdm-autologin
#pam-greeter-service=lightdm-greeter
#xserver-backend=
xserver-command=X -ardelay 300 -arinterval 30
#xmir-command=Xmir
#xserver-config=
#xserver-layout=
#xserver-allow-tcp=false
#xserver-share=true
#xserver-hostname=
#xserver-display-number=
#xdmcp-manager=
#xdmcp-port=177
#xdmcp-key=
#unity-compositor-command=unity-system-compositor
#unity-compositor-timeout=60
#greeter-session=example-gtk-gnome
#greeter-hide-users=false
#greeter-allow-guest=true
#greeter-show-manual-login=false
#greeter-show-remote-login=true
user-session=xinitrc
#allow-user-switching=true
#allow-guest=true
#guest-session=
session-wrapper=/etc/lightdm/Xsession
#greeter-wrapper=
#guest-wrapper=
display-setup-script=/usr/bin/setxkbmap fr
#display-stopped-script=
#greeter-setup-script=
#session-setup-script=
#session-cleanup-script=
#autologin-guest=false
#autologin-user=
#autologin-user-timeout=0
#autologin-in-background=false
#autologin-session=
#exit-on-failure=false
#
# XDMCP Server configuration
#
# enabled = True if XDMCP connections should be allowed
# port = UDP/IP port to listen for connections on
# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present)
# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)
# hostname = Hostname to report to XDMCP clients (defaults to system hostname if unset)
#
# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn. Alternatively
# it can be a word and the first 7 characters are used as the key.
#
[XDMCPServer]
#enabled=false
#port=177
#listen-address=
#key=
#hostname=
#
# VNC Server configuration
#
# enabled = True if VNC connections should be allowed
# command = Command to run Xvnc server with
# port = TCP/IP port to listen for connections on
# listen-address = Host/address to listen for VNC connections (use all addresses if not present)
# width = Width of display to use
# height = Height of display to use
# depth = Color depth of display to use
#
[VNCServer]
#enabled=false
#command=Xvnc
#port=5900
#listen-address=
#width=1024
#height=768
#depth=8

View File

@ -1 +0,0 @@
.lock

View File

@ -1,6 +0,0 @@
created by
The Non-Mixer 1.2.0
created on
Mon Jun 18 22:54:08 2018
version
1

View File

@ -1,5 +0,0 @@
Settings
Rows
One
Learn
By Strip Name

View File

@ -1,34 +0,0 @@
{
Spatialization_Console 0x14 create :range 1.000000 :projection 1 :shown 0
Group 0xD create :name "Home"
Mixer_Strip 0x1 create :name "Firefox" :width "narrow" :tab "fader" :color 424238335 :gain_mode 0 :mute_mode 0 :group 0xD :auto_input "" :manual_connection 0
Chain 0x2 create :strip 0x1 :tab "controls"
JACK_Module 0x3 create :parameter_values "0.000000:2.000000" :is_default 1 :chain 0x2 :active 1
Gain_Module 0x4 create :parameter_values "1.250000:0.000000" :is_default 1 :chain 0x2 :active 1
Meter_Module 0x5 create :is_default 1 :chain 0x2 :active 1
JACK_Module 0x6 create :parameter_values "2.000000:0.000000" :is_default 1 :chain 0x2 :active 1
Mixer_Strip 0x1B create :name "PianoTeq" :width "narrow" :tab "fader" :color 1350490027 :gain_mode 0 :mute_mode 0 :group 0xD :auto_input "" :manual_connection 0
Chain 0x1C create :strip 0x1B :tab "chain"
JACK_Module 0x1D create :parameter_values "0.000000:2.000000" :is_default 1 :chain 0x1C :active 1
Gain_Module 0x1E create :parameter_values "0.000000:0.000000" :is_default 1 :chain 0x1C :active 1
Meter_Module 0x1F create :is_default 1 :chain 0x1C :active 1
JACK_Module 0x20 create :parameter_values "2.000000:0.000000" :is_default 1 :chain 0x1C :active 1
Mixer_Strip 0x21 create :name "VLC" :width "narrow" :tab "fader" :color 783368690 :gain_mode 0 :mute_mode 0 :group 0xD :auto_input "" :manual_connection 0
Chain 0x22 create :strip 0x21 :tab "chain"
JACK_Module 0x23 create :parameter_values "0.000000:2.000000" :is_default 1 :chain 0x22 :active 1
Gain_Module 0x24 create :parameter_values "0.000000:0.000000" :is_default 1 :chain 0x22 :active 1
Meter_Module 0x25 create :is_default 1 :chain 0x22 :active 1
JACK_Module 0x26 create :parameter_values "2.000000:0.000000" :is_default 1 :chain 0x22 :active 1
Mixer_Strip 0x28 create :name "Audacity" :width "narrow" :tab "fader" :color 1957747793 :gain_mode 0 :mute_mode 0 :group 0xD :auto_input "" :manual_connection 0
Chain 0x29 create :strip 0x28 :tab "chain"
JACK_Module 0x2A create :parameter_values "0.000000:2.000000" :is_default 1 :chain 0x29 :active 1
Gain_Module 0x2B create :parameter_values "0.000000:0.000000" :is_default 1 :chain 0x29 :active 1
Meter_Module 0x2C create :is_default 1 :chain 0x29 :active 1
JACK_Module 0x2D create :parameter_values "2.000000:0.000000" :is_default 1 :chain 0x29 :active 1
Mixer_Strip 0x2E create :name "Mumble" :width "narrow" :tab "fader" :color 1957747793 :gain_mode 0 :mute_mode 0 :group 0xD :auto_input "" :manual_connection 0
Chain 0x2F create :strip 0x2E :tab "chain"
JACK_Module 0x30 create :parameter_values "0.000000:1.000000" :is_default 1 :chain 0x2F :active 1
Gain_Module 0x31 create :parameter_values "0.000000:0.000000" :is_default 1 :chain 0x2F :active 1
Meter_Module 0x32 create :is_default 1 :chain 0x2F :active 1
JACK_Module 0x33 create :parameter_values "1.000000:0.000000" :is_default 1 :chain 0x2F :active 1
}

View File

@ -1 +0,0 @@
/etc/smtpd

View File

@ -1,10 +0,0 @@
# This is the smtpd server system-wide configuration file.
# See smtpd.conf(5) for more information.
# To accept external mail, replace with: listen on all
listen on localhost
# If you edit the file, you have to run "smtpctl update table aliases"
table aliases file:/etc/smtpd/aliases
table secrets file:/etc/mail/secrets
accept from local for any relay via smtps+auth://utc@smtps.utc.fr:465 auth <secrets> as "quentin.duchemin@hds.utc.fr"

View File

@ -124,9 +124,6 @@ inactive-opacity = 1.0;
# frame-opacity = 1.0 # frame-opacity = 1.0
frame-opacity = 0.7; frame-opacity = 0.7;
# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
menu-opacity = 0.9
# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows. # Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
# inactive-opacity-override = true # inactive-opacity-override = true
inactive-opacity-override = false; inactive-opacity-override = false;
@ -241,12 +238,6 @@ detect-rounded-corners = true;
# detect-client-opacity = false # detect-client-opacity = false
detect-client-opacity = true; detect-client-opacity = true;
# Specify refresh rate of the screen. If not specified or 0, picom will
# try detecting this with X RandR extension.
#
# refresh-rate = 60
refresh-rate = 0
# Limit picom to repaint at most once every 1 / 'refresh_rate' second to # Limit picom to repaint at most once every 1 / 'refresh_rate' second to
# boost performance. This should not be used with # boost performance. This should not be used with
# vsync drm/opengl/opengl-oml # vsync drm/opengl/opengl-oml

View File

@ -1,29 +1,6 @@
[variables] [variables]
dpi = 90 dpi = 90
height = 27 height = 27
wireless_interface = wlp8s0
top_left = powermenu system-uptime-pretty top_left = powermenu system-uptime-pretty
top_center = xwindow top_center = xwindow
top_right = system-usb-udev alsa date top_right = system-usb-udev alsa date
[module/alsa]
type = internal/alsa
master-soundcard = hw:PCH
speaker-soundcard = hw:PCH
headphone-soundcard = hw:PCH
master-mixer = Master
format-volume = <ramp-volume> <label-volume>
label-muted = 🔇 muted
label-muted-foreground = #66
ramp-volume-0 = 🔈
ramp-volume-1 = 🔉
ramp-volume-2 = 🔊
ramp-headphones-0 = 
ramp-headphones-1 = 
interval = 3

View File

@ -1,44 +1,6 @@
[variables] [variables]
dpi = 150 dpi = 150
height = 54 height = 54
wireless_interface = wlp2s0
top_left = powermenu system-uptime-pretty battery top_left = powermenu system-uptime-pretty battery
top_center = xwindow top_center = xwindow
top_right = system-usb-udev backlight pulseaudio date top_right = system-usb-udev backlight pulseaudio date
[module/backlight]
type = internal/backlight
card = intel_backlight
label = %{F#77dd77}☀️%{F#ddd} %percentage%%
bar-width = 10
bar-indicator = |
bar-fill = ─
bar-empty = ─
[module/pulseaudio]
type = internal/pulseaudio
interval = 5
format-volume = <ramp-volume> <label-volume>
label-muted = 🔇 muted
label-muted-foreground = #666
ramp-volume-0 = 🔈
ramp-volume-1 = 🔉
ramp-volume-2 = 🔊
ramp-headphones-0 = 
ramp-headphones-1 = 
[module/battery]
type = internal/battery
full-at = 100
battery = BAT0
adapter = AC0
poll-interval = 5
format-charging = <label-charging>
format-discharging = <label-discharging>
format-full = <label-full>
label-charging =  %percentage%%
label-discharging =  %percentage%%
label-full = %{F#77dd77}

View File

@ -1,5 +1,6 @@
[colors] [colors]
background = #bb2f343f ; First two letter of background are for transparency
background = #cc2f343f
foreground = #eee foreground = #eee
foreground-alt = #555 foreground-alt = #555
secondary = #e60053 secondary = #e60053
@ -12,9 +13,9 @@ margin-top=50
; Common to top and bottom bars ; Common to top and bottom bars
[bar/common] [bar/common]
width = 100% width = 100%
dpi = ${variables.dpi} dpi = ${variables.dpi:90}
enable-ipc = true enable-ipc = true
height = ${variables.height} height = ${variables.height:30}
foreground = ${colors.foreground} foreground = ${colors.foreground}
background = ${colors.background} background = ${colors.background}
line-size = 3 line-size = 3
@ -41,9 +42,9 @@ padding-right = 10
module-margin-left = 4 module-margin-left = 4
module-margin-right = 4 module-margin-right = 4
modules-left = ${variables.top_left} modules-left = ${variables.top_left:powermenu system-uptime-pretty}
modules-center = ${variables.top_center} modules-center = ${variables.top_center:xwindow}
modules-right = ${variables.top_right} modules-right = ${variables.top_right:system-usb-udev alsa date}
tray-position = right tray-position = right
@ -70,7 +71,7 @@ font-4 = Font Awesome 5 Free:style=solid:size=10;2
modules-left = i3 modules-left = i3
;modules-center = ;modules-center =
modules-right = wireless-network updates-arch-combined temperature cpu memory filesystem-custom modules-right = wired-network wireless-network updates-arch-combined temperature cpu memory filesystem-custom
[module/xwindow] [module/xwindow]
type = internal/xwindow type = internal/xwindow
@ -79,9 +80,18 @@ label-maxlen=100
[module/wireless-network] [module/wireless-network]
type = internal/network type = internal/network
interface = ${variables.wireless_interface} interface-type = wireless
interval = 1 interval = 1
label-connected = %{F#ddd}%essid%  %local_ip% %{F#77dd77}%{F-} %downspeed% %{F#dd7777}%{F-} %upspeed% label-connected = %{F#ddd}%essid%  %local_ip% %{F#77dd77}%{F-} %downspeed% %{F#dd7777}%{F-} %upspeed%
label-disconnected = Wireless disconnected
label-disconnected-foreground = #66
[module/wired-network]
type = internal/network
interface =
interface-type = wired
interval = 1
label-connected = %{F#ddd}%ifname%  %local_ip% %{F#77dd77}%{F-} %downspeed% %{F#dd7777}%{F-} %upspeed%
label-disconnected = Ethernet disconnected label-disconnected = Ethernet disconnected
label-disconnected-foreground = #66 label-disconnected-foreground = #66
@ -91,8 +101,8 @@ format = <label-state> <label-mode>
index-sort = true index-sort = true
ws-icon-0 = 2; ws-icon-0 = 1;
ws-icon-1 = 1; ws-icon-1 = 2;
ws-icon-2 = 3; ws-icon-2 = 3;
ws-icon-3 = 4; ws-icon-3 = 4;
ws-icon-4 = 5; ws-icon-4 = 5;
@ -215,9 +225,9 @@ label-open = %{F#dd7777}%{F#ddd}
label-close = %{F#dd7777}%{F#ddd} label-close = %{F#dd7777}%{F#ddd}
label-separator = " · " label-separator = " · "
menu-0-0 = Terminate WM menu-0-0 = Exit i3
menu-0-0-foreground = ${colors.accent} menu-0-0-foreground = ${colors.accent}
menu-0-0-exec = bspc quit -1 menu-0-0-exec = i3-msg exit
menu-0-1 = Reboot menu-0-1 = Reboot
menu-0-1-foreground = ${colors.accent} menu-0-1-foreground = ${colors.accent}
menu-0-1-exec = menu-open-1 menu-0-1-exec = menu-open-1
@ -260,3 +270,62 @@ interval = 60
type = custom/script type = custom/script
exec = ~/.config/polybar/scripts/system-uptime-pretty.sh exec = ~/.config/polybar/scripts/system-uptime-pretty.sh
interval = 30 interval = 30
[module/backlight]
type = internal/backlight
card = intel_backlight
label = %{F#77dd77}☀️%{F#ddd} %percentage%%
bar-width = 10
bar-indicator = |
bar-fill = ─
bar-empty = ─
[module/pulseaudio]
type = internal/pulseaudio
interval = 5
format-volume = <ramp-volume> <label-volume>
label-muted = 🔇 muted
label-muted-foreground = #666
ramp-volume-0 = 🔈
ramp-volume-1 = 🔉
ramp-volume-2 = 🔊
ramp-headphones-0 = 
ramp-headphones-1 = 
[module/battery]
type = internal/battery
full-at = 100
battery = BAT0
adapter = AC0
poll-interval = 5
format-charging = <label-charging>
format-discharging = <label-discharging>
format-full = <label-full>
label-charging =  %percentage%%
label-discharging =  %percentage%%
label-full = %{F#77dd77}
[module/alsa]
type = internal/alsa
master-soundcard = hw:PCH
speaker-soundcard = hw:PCH
headphone-soundcard = hw:PCH
master-mixer = Master
format-volume = <ramp-volume> <label-volume>
label-muted = 🔇 muted
label-muted-foreground = #66
ramp-volume-0 = 🔈
ramp-volume-1 = 🔉
ramp-volume-2 = 🔊
ramp-headphones-0 = 
ramp-headphones-1 = 
interval = 3

View File

@ -0,0 +1,4 @@
#icons=(  )
icons=( )
#parts=(/ /home /mnt/backup)
parts=(/ /home)

View File

@ -0,0 +1,2 @@
icons=()
parts=(/)

View File

@ -1,7 +1,6 @@
#/bin/sh #/bin/sh
icons=(  ) source $(dirname $0)/filesystem.data
parts=(/ /mnt/data /mnt/backup)
output="" output=""
for i in "${!parts[@]}"; do for i in "${!parts[@]}"; do
avail=$(df -h ${parts[$i]} | tail -1 | tr -s ' ' | cut -d' ' -f4) avail=$(df -h ${parts[$i]} | tail -1 | tr -s ' ' | cut -d' ' -f4)

View File

@ -1,25 +0,0 @@
#/bin/sh
icons=()
parts=(/)
output=""
for i in "${!parts[@]}"; do
avail=$(df -h ${parts[$i]} | tail -1 | tr -s ' ' | cut -d' ' -f4)
used=$(df -h ${parts[$i]} | tail -1 | tr -s ' ' | cut -d' ' -f5)
num=$(echo ${used} | cut -d'%' -f1)
if [ "$num" -gt 80 ] ; then
color="#dd7777"
elif [ "$num" -gt 50 ] ; then
color="#fba922"
else
color="#77dd77"
fi
output=$output"%{F${color}}${icons[$i]} $used%{F#555} · $avail%{F-}"
if [ $(($i + 1)) -ne "${#parts[@]}" ] ; then
output=$output" "
fi
done
echo "$output"

View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
names=("chostybottombar" "chostytopbar")
killall -q polybar
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
monitor=$(xrandr --query | grep "connected" | grep "primary" | cut -d" " -f1)
for name in ${names[@]}; do
MONITOR=${monitor} polybar -q --reload ${name} &
done

View File

@ -1,14 +0,0 @@
#!/usr/bin/env bash
names=("chostybottombar" "chostytopbar")
killall -q polybar
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
if type "xrandr"; then
monitors=$(xrandr --query | grep " connected" | cut -d" " -f1)
monarray=($monitors)
for name in ${names[@]}; do
MONITOR=${monarray[0]} polybar -q --reload ${name} &
done
else
polybar --reload ${name} &
fi

View File

@ -1,16 +0,0 @@
#!/usr/bin/env bash
names=("chostybottombar" "chostytopbar")
killall -q polybar
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
if type "xrandr"; then
monitors=$(xrandr --query | grep " connected" | cut -d" " -f1)
monarray=($monitors)
for name in ${names[@]}; do
for mon in ${monarray[@]}; do
MONITOR=${mon} polybar -q --reload ${name} &
done
done
else
polybar --reload ${name} &
fi

View File

@ -3,7 +3,8 @@
connect=$(ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` &> /dev/null) connect=$(ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` &> /dev/null)
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
updates_arch=$(/usr/bin/checkupdates | wc -l) updates_arch=$(/usr/bin/checkupdates | wc -l)
updates_aur=$(/usr/bin/checkupdates-aur | wc -l) # a restricts to AUR packages
updates_aur=$(yay -Qua | wc -l)
updates=$(("$updates_arch" + "$updates_aur")) updates=$(("$updates_arch" + "$updates_aur"))
if [ "$updates" -gt 0 ]; then if [ "$updates" -gt 0 ]; then
echo "%{F#dd7777}%{F#ddd} $updates_arch | $updates_aur" echo "%{F#dd7777}%{F#ddd} $updates_arch | $updates_aur"

View File

@ -0,0 +1,5 @@
[Service]
Type=simple
ExecStart=
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin chosto %I $TERM

View File

@ -1 +0,0 @@
/home/chosty/.config/systemd/notify-backup-failure.service.desk

View File

@ -2,14 +2,8 @@
borderless = True borderless = True
use_custom_url_handler = True use_custom_url_handler = True
custom_url_handler = firefox custom_url_handler = firefox
title_hide_sizetext = True
title_transmit_bg_color = "#adbce6"
title_receive_bg_color = "#adbce6"
title_inactive_bg_color = "#C0BEBF"
enabled_plugins = TerminalShot, LaunchpadCodeURLHandler, APTURLHandler, LaunchpadBugURLHandler enabled_plugins = TerminalShot, LaunchpadCodeURLHandler, APTURLHandler, LaunchpadBugURLHandler
suppress_multiple_term_dialog = True suppress_multiple_term_dialog = True
title_use_system_font = False
title_font = Noto Sans Medium 10
[keybindings] [keybindings]
go_next = <Primary><Shift>n go_next = <Primary><Shift>n
go_prev = <Primary><Shift>p go_prev = <Primary><Shift>p
@ -30,13 +24,15 @@
layout_launcher = <Shift><Alt>l layout_launcher = <Shift><Alt>l
[profiles] [profiles]
[[default]] [[default]]
background_darkness = 0.85 icon_bell = False
background_darkness = 0.87
background_type = transparent background_type = transparent
cursor_color = "#aaaaaa"
font = DejaVu Sans Mono 11 font = DejaVu Sans Mono 11
scrollbar_position = hidden scrollbar_position = hidden
scrollback_infinite = True scrollback_infinite = True
use_system_font = False use_system_font = False
title_transmit_fg_color = "#000000"
title_transmit_bg_color = "#ffffff"
[layouts] [layouts]
[[default]] [[default]]
[[[child0]]] [[[child0]]]
@ -54,101 +50,4 @@
order = 0 order = 0
profile = default profile = default
uuid = 498cd758-0193-4b69-b40a-9743e0b080a7 uuid = 498cd758-0193-4b69-b40a-9743e0b080a7
[[picasoft]]
[[[child0]]]
type = Window
parent = ""
order = 0
position = 0:55
maximised = False
fullscreen = False
size = 3200, 1691
title = chosto@chosto: ~
last_active_term = a2704452-a79d-4da7-8e26-02006a653f4b
last_active_window = True
[[[child1]]]
type = VPaned
parent = child0
order = 0
position = 843
ratio = 0.5
[[[child2]]]
type = VPaned
parent = child1
order = 0
position = 419
ratio = 0.5
[[[child3]]]
type = HPaned
parent = child2
order = 0
position = 1598
ratio = 0.5001564945226917
[[[terminal4]]]
type = Terminal
parent = child3
order = 0
profile = default
uuid = 498cd758-0193-4b69-b40a-9743e0b080a7
command = ssh qduchemi@bob.picasoft.net
[[[terminal5]]]
type = Terminal
parent = child3
order = 1
profile = default
uuid = be52c063-b71d-48d9-bf5f-1087e8a5021e
command = ssh qduchemi@alice.picasoft.net
[[[child6]]]
type = HPaned
parent = child2
order = 1
position = 1598
ratio = 0.5001564945226917
[[[terminal7]]]
type = Terminal
parent = child6
order = 0
profile = default
uuid = 459f8f25-6f92-46a7-86bc-a591f86cbfb8
command = ssh qduchemi@media.picasoft.net
[[[terminal8]]]
type = Terminal
parent = child6
order = 1
profile = default
uuid = 0da29a47-442a-42e6-bfeb-5519e11781cc
command = ssh qduchemi@monitoring.picasoft.net
[[[child9]]]
type = HPaned
parent = child1
order = 1
position = 1598
ratio = 0.5001564945226917
[[[child10]]]
type = VPaned
parent = child9
order = 0
position = 421
ratio = 0.5
[[[terminal11]]]
type = Terminal
parent = child10
order = 0
profile = default
uuid = a2704452-a79d-4da7-8e26-02006a653f4b
command = ssh qduchemi@pica02.picasoft.net
[[[terminal12]]]
type = Terminal
parent = child10
order = 1
profile = default
uuid = c949ff4d-c156-4444-b8f6-5ccda3a39a0a
command = ssh qduchemi@pica01-test.picasoft.net
[[[terminal13]]]
type = Terminal
parent = child9
order = 1
profile = default
uuid = c63ef1d8-085d-4b7a-8e1d-89bc09a2d5bb
command = ssh qduchemi@pica01.picasoft.net
[plugins] [plugins]

View File

@ -0,0 +1,15 @@
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/documents/xdg/desktop"
XDG_DOWNLOAD_DIR="$HOME/downloads"
XDG_TEMPLATES_DIR="$HOME/documents/xdg/templates"
XDG_PUBLICSHARE_DIR="$HOME/documents/xdg/public"
XDG_DOCUMENTS_DIR="$HOME/documents"
XDG_MUSIC_DIR="$HOME/music"
XDG_PICTURES_DIR="$HOME/images"
XDG_VIDEOS_DIR="$HOME/videos"

View File

@ -0,0 +1 @@
en_US

View File

@ -0,0 +1 @@
enable-ssh-support

View File

@ -0,0 +1 @@
8870E499C64EEB7720EBA5A442F4FE90129BFAE3

View File

@ -1,14 +1,34 @@
#!/bin/bash #!/bin/bash
# Environments
LAPTOP="laptop" LAPTOP="laptop"
DESKTOP="desk" DESKTOP="desk"
ENV_EXT_REGEXP=".*\.${LAPTOP}|.*\.${DESKTOP}"
# Special filename for external config path
DEST_FILENAME="dest" DEST_FILENAME="dest"
# Special configuration filename
BASE_CONFIG="config_common"
MERGE_CONFIG_FOLDER="config.d"
FINAL_CONFIG="config"
# Special directories with per-environment configuration merge
I3_CONFIG="i3"
POLYBAR_CONFIG="polybar"
ARCH_PACKAGES="bootstrap"
MERGE_DIRS="${I3_CONFIG} ${POLYBAR_CONFIG} ${ARCH_PACKAGES}"
# Check if a file has been modified and deleted since last commit, if so perform an action # Check if a file has been modified and deleted since last commit, if so perform an action
# $1 : path of file # $1 : path of file
# $2 : command to launch if file has been created of modifed # $2 : command to launch if file has been created of modifed
# $3 : command to launch if file has been deleted # $3 : command to launch if file has been deleted
function check_copy() { function check_copy() {
# When initializing, always copy files
if [ ! -z ${INIT} ]; then
echo -e "* Running \"$2\"" && eval "$2"
return
fi
echo "$changed_files" | grep --quiet "${1#$HOME/}" echo "$changed_files" | grep --quiet "${1#$HOME/}"
if [ $? == "0" ]; then if [ $? == "0" ]; then
echo "$changed_files" | cut -f 1 | grep --quiet "D" echo "$changed_files" | cut -f 1 | grep --quiet "D"
@ -19,42 +39,74 @@ function check_copy() {
echo "* Changes detected in $1" echo "* Changes detected in $1"
echo -e "* Running \"$2\"" && eval "$2" echo -e "* Running \"$2\"" && eval "$2"
fi fi
else
echo "$1 not modified, no need to copy"
fi
}
# Generates a `config` file in $1, by merging a required $1/{MERGE_CONFIG_FOLDER} file
# with an optional `$1/config.d/$2` file. This is useful for having
# a common base for multiple computer, and per-computer stuff.
# $1 : path of the folder
# $2 : optional current environment
function merge_config() {
echo -e "\n=== Generate ${m} config file ==="
rm -f ${CONFIG}/${m}/${FINAL_CONFIG}
# Copy common config
cp ${CONFIG}/${m}/${BASE_CONFIG} ${CONFIG}/${m}/${FINAL_CONFIG}
echo "${CONFIG}/${m}/${FINAL_CONFIG} created"
# If there is an override folder, merge given env
if [ ! -z ${2} ] && [ -d ${CONFIG}/${m}/${MERGE_CONFIG_FOLDER} ]; then
for f in `find ${CONFIG}/${m}/config.d -type f -path "*${2}"`; do
echo "Found ${f}, add to regular config file"
cat "${f}" >> ${CONFIG}/${m}/${FINAL_CONFIG}
done
fi fi
} }
function usage() { function usage() {
echo "$0: creates symlink for divergent config between laptop and desktop (e.g. battery management...) and copy configuration to external locations" echo "${0}: manage package installation, environment divergence and external location for config, see README."
echo "usage: $0 [${LAPTOP}|${DESKTOP}]" echo "usage: [WM_RESTART=1] [INIT=1] $0 [${ENVIRONMENTS}]"
exit 0 exit 0
} }
# Use XDG_CONFIG_HOME if defined, default otherwise # Use XDG_CONFIG_HOME if defined, default otherwise
CONFIG=${XDG_CONFIG_HOME:-$HOME/.config} CONFIG=${XDG_CONFIG_HOME:-$HOME/.config}
# Check that there is one matching argument ENV=${1}
if [ -z "{$1}" ] || [ "$#" -ne 1 ]; then
usage
fi
if [ "${1}" != "${LAPTOP}" ] && [ "${1}" != "${DESKTOP}" ]; then changed_files="$(git --git-dir=$HOME/.cfg/ --work-tree=$HOME diff-tree -r --name-status --no-commit-id HEAD^1 HEAD)"
usage
fi
changed_files="$(git --git-dir=$HOME/.cfg/ --work-tree=$HOME diff-tree -r --name-status --no-commit-id HEAD@{1} HEAD)" for m in ${MERGE_DIRS}; do
merge_config $m ${ENV}
echo "=== Create symlink to *.${1} regular files ==="
# Take all specific files and create a symlink pointing to it without the extension
# This file will be used by applications
for f in `find ${CONFIG} -type f -name "*.${1}"`; do
echo "Create symlink to ${f}..."
ln -sf ${f} ${f%.*}
done done
# Take care of config files at home level, outside ${CONFIG} (e.g. Xresources) if [ ! -z "$INIT" ]; then
for f in `find ${HOME} -maxdepth 1 -mindepth 1 -type f -name "*.${1}"`; do echo -e "* Installing base Arch packages..."
echo "Create symlink to ${f}..." yay -Syu --needed --noconfirm - < ${CONFIG}/${ARCH_PACKAGES}/${FINAL_CONFIG}
ln -sf ${f} ${f%.*} echo -e "* Changing shell to ZSH..."
done chsh -s $(which zsh)
# https://man.archlinux.org/man/rofi-dmenu.5
echo -e "* Symlink dmenu → rofi..."
sudo ln -s /usr/bin/rofi /usr/bin/dmenu
echo -e "* Enabling NetworkManager..."
sudo systemctl enable --now NetworkManager
fi
if [ ! -z ${ENV} ]; then
echo -e "\n=== Create symlink to *.${ENV} regular files ==="
# Take all specific files and create a symlink pointing to it without the extension
# This file will be used by applications
for f in `find ${CONFIG} -type f -name "*.${ENV}"`; do
echo "${f%.*}${f}"
ln -sf ${f} ${f%.*}
done
# Take care of config files at home level, outside ${CONFIG} (e.g. Xresources)
for f in `find ${HOME} -maxdepth 1 -mindepth 1 -type f -name "*.${ENV}"`; do
echo "${f%.*}${f}"
ln -sf ${f} ${f%.*}
done
fi
echo -e "\n=== Copy changed configuration which resides in outer directory ===" echo -e "\n=== Copy changed configuration which resides in outer directory ==="
# Destination files are regular files # Destination files are regular files
@ -63,27 +115,19 @@ for f in `find ${CONFIG} -type f -name ${DEST_FILENAME}`; do
DEST=`cat ${f}` DEST=`cat ${f}`
# Get all files, either regular files or symlinks, which are not the destination file nor specific desktop/laptop files # Get all files, either regular files or symlinks, which are not the destination file nor specific desktop/laptop files
# This is because if desktop/laptop files exist, they already have a symlink pointing to them at this stage # This is because if desktop/laptop files exist, they already have a symlink pointing to them at this stage
for config_file in `find ${DIR} -maxdepth 1 -mindepth 1 -not \( -name "*.${LAPTOP}" -o -name "*.${DESKTOP}" -o -name "${DEST_FILENAME}" \)`; do for config_file in `find ${DIR} -regextype emacs -mindepth 1 -type f -not \( -regex "*.${ENV_EXT_REGEXP}" -o -name "${DEST_FILENAME}" \)`; do
# Now copy to destination # Now copy to destination
sudo mkdir -p ${DEST} sudo mkdir -p ${DEST}
check_copy "${config_file}" "sudo cp ${config_file} ${DEST}" "sudo rm ${DEST}/${config_file##*/}" check_copy "${config_file}" "sudo cp ${config_file} ${DEST}" "sudo rm ${DEST}/${config_file##*/}"
done done
done done
merge_config="polybar i3" if [ ! -z "${WM_RESTART}" ]; then
for m in $merge_config; do echo -e "\n=== Restart graphical environment ==="
echo -e "\n=== Generate ${m} config file ===" # Reload i3 configuration
rm -f ${CONFIG}/${m}/config i3-msg reload
cp ${CONFIG}/${m}/config_common ${CONFIG}/${m}/config
for f in `find ${CONFIG}/${m}/config.d -type f -name "${1}"`; do
echo "Found ${f}, add to regular config file"
cat "${f}" >> ${CONFIG}/${m}/config
done
done
# Reload i3 configuration # Restart picom due to this bug https://github.com/yshui/picom/issues/166
i3-msg reload && echo "Successfully reloaded i3 config" killall picom; picom &>/dev/null &
fi
# Restart picom due to this bug https://github.com/yshui/picom/issues/166
killall picom; picom &>/dev/null &

View File

@ -1 +0,0 @@
*.bak

36
.taskrc
View File

@ -1,36 +0,0 @@
# [Created by task 2.5.1 6/15/2018 21:04:54]
# Taskwarrior program configuration file.
# For more documentation, see http://taskwarrior.org or try 'man task', 'man task-color',
# 'man task-sync' or 'man taskrc'
# Here is an example of entries that use the default, override and blank values
# variable=foo -- By specifying a value, this overrides the default
# variable= -- By specifying no value, this means no default
# #variable=foo -- By commenting out the line, or deleting it, this uses the default
# Use the command 'task show' to see all defaults and overrides
# Files
data.location=~/.task
# Color theme (uncomment one to use)
#include /usr/share/doc/task/rc/light-16.theme
#include /usr/share/doc/task/rc/light-256.theme
#include /usr/share/doc/task/rc/dark-16.theme
#include /usr/share/doc/task/rc/dark-256.theme
#include /usr/share/doc/task/rc/dark-red-256.theme
#include /usr/share/doc/task/rc/dark-green-256.theme
#include /usr/share/doc/task/rc/dark-blue-256.theme
#include /usr/share/doc/task/rc/dark-violets-256.theme
#include /usr/share/doc/task/rc/dark-yellow-green.theme
#include /usr/share/doc/task/rc/dark-gray-256.theme
include /usr/share/doc/task/rc/dark-gray-blue-256.theme
#include /usr/share/doc/task/rc/solarized-dark-256.theme
#include /usr/share/doc/task/rc/solarized-light-256.theme
#include /usr/share/doc/task/rc/no-color.theme
taskd.server=freecinc.com:53589
taskd.key=\/home\/chosty\/.task\/freecinc_d4e7fbb1.key.pem
taskd.certificate=\/home\/chosty\/.task\/freecinc_d4e7fbb1.cert.pem
taskd.ca=\/home\/chosty\/.task\/freecinc_d4e7fbb1.ca.pem
taskd.credentials=<censored>

View File

@ -1,4 +0,0 @@
# No need to run xmodmap as /etc/lightdm/Xsession wrapper does so with $HOME/.Xmodmap
xrandr --output eDP-1 --auto --output HDMI-2 --auto --scale 2x2 --above eDP-1
xrdb -merge ~/.Xresources
exec i3

1
.zprofile 100644
View File

@ -0,0 +1 @@
exec startx

134
.zshrc
View File

@ -1,5 +1,5 @@
# Path to your oh-my-zsh installation. # Path to your oh-my-zsh installation.
export ZSH=$HOME/.oh-my-zsh export ZSH=/usr/share/oh-my-zsh
# Set name of the theme to load. Optionally, if you set this to "random" # Set name of the theme to load. Optionally, if you set this to "random"
# it'll load a random theme each time that oh-my-zsh is loaded. # it'll load a random theme each time that oh-my-zsh is loaded.
@ -9,137 +9,65 @@ ZSH_THEME="agnoster"
# Uncomment the following line to use case-sensitive completion. # Uncomment the following line to use case-sensitive completion.
CASE_SENSITIVE="true" CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion. Case # Disable auto-update
# sensitive completion must be off. _ and - will be interchangeable. zstyle ':omz:update' mode disabled
# HYPHEN_INSENSITIVE="true"
# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"
# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion. # Uncomment the following line to display red dots whilst waiting for completion.
COMPLETION_WAITING_DOTS="true" COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time # Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output. # stamp shown in the history command output.
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" # The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
HIST_STAMPS="dd.mm.yyyy" HIST_STAMPS="dd.mm.yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse) # Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup. # Add wisely, as too many plugins slow down shell startup.
plugins=( plugins=(
git # acs command → print aliases by group
aliases
# `j` to go to an already used directory by partial name
autojump
colored-man-pages colored-man-pages
command-not-found # cat with colors → ccat or cless
copydir colorize
# commands to copy file content or absolute path to clipboard
copyfile
copypath
# cpv command which uses rsync
cp cp
extract # docker autocomplete
fzf
history
docker docker
rand-quote # unique command for most archives
taskwarrior extract
systemd # aliases
git
# password-store autocomplete
pass
) )
# Enable option stacking in autocomplete, i.e. docker run -it <TAB>
zstyle ':completion:*:*:docker:*' option-stacking yes
zstyle ':completion:*:*:docker-*:*' option-stacking yes
# Load ZSH
source $ZSH/oh-my-zsh.sh source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions # Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then export EDITOR=vim
export EDITOR='nano'
else
export EDITOR='nano'
fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# ssh
# export SSH_KEY_PATH="~/.ssh/rsa_id"
# Do not print user@hostname if user is myself # Do not print user@hostname if user is myself
DEFAULT_USER=`whoami` DEFAULT_USER=`whoami`
# Set personal aliases, overriding those provided by oh-my-zsh libs, # Aliases
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
alias cp="cpv" alias cp="cpv"
alias lt='ls -lath'
# To use when .cfg contains a bare git repo. # To use when .cfg contains a bare git repo.
# See this https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/ # See this https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/
alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME' alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
config config --local status.showUntrackedFiles no
# Mount VPS as FUSE # GPG with SSH auth capabilities
alias ovh='mkdir -p ~/sshfs/ovh && sshfs chosto@51.178.182.35:/home/chosto ~/sshfs/ovh -p 2220' export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
alias pica01='mkdir -p ~/sshfs/pica01 && sshfs qduchemi@pica01.picasoft.net:/DATA/docker ~/sshfs/pica01'
alias pica02='mkdir -p ~/sshfs/pica02 && sshfs qduchemi@pica02.picasoft.net:/DATA/docker ~/sshfs/pica02'
alias pica_test='mkdir -p ~/sshfs/pica01-test && sshfs qduchemi@pica01-test.picasoft.net:/DATA/docker ~/sshfs/pica01-test'
# Start ssh-agent and retain passphrase for 1 hour
# ssh-add is not used for convenience
# Instead "AddKeysToAgent yes" option in ~/.ssh/config for "Host *"
eval "$(ssh-agent -s -t 3600)" &>/dev/null
alias lt='ls -lath'
export PATH=${PATH}:~/doc/picasoft/pass:$HOME/go/bin/:$HOME/.local/bin:/opt/feather:/opt/resolve/bin:/opt
source <(mmctl completion zsh)
## fzf conf
_fzf_compgen_path() {
fd --hidden --follow --exclude ".git" . "$1"
}
# Use fd to generate the list for directory completion
_fzf_compgen_dir() {
fd --type d --hidden --follow --exclude ".git" . "$1"
}
export FZF_COMPLETION_OPTS='-m'
eval $(thefuck --alias)
alias cb="xclip -selection clipboard"
[[ $commands[kubectl] ]] && source <(kubectl completion zsh)
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
alias code=vscodium
alias k=kubectl
alias kk="kubectl -n identibat-back"
alias kx="kubectl -n identibat-back exec -it"
export SCENARI_SSH_USER=qduchemin
export SCENARI_SSH_KEY_PATH=$HOME/.ssh/id_rsa

249
README.md
View File

@ -1,136 +1,207 @@
# dotfiles # dotfiles
<!-- MarkdownTOC autolink="true" --> ## Generic todo
- [What is this, Chosto ?](#what-is-this-chosto-) Would be great to have a real people-agnostic base, separated from my own customization. Right now, base configuration still have personal path and stuff, making it unusable as-is for other people.
- [Contents](#contents)
- [Requirements](#requirements)
- [Usage](#usage)
- [Bare repository trick](#bare-repository-trick)
- [Divergence betwteen laptop and desktop](#divergence-betwteen-laptop-and-desktop)
- [Configuration outside XDG_CONFIG_HOME, e.g. /etc](#configuration-outside-xdgconfighome-eg-etc)
- [Git Hook](#git-hook)
- [Screenshots](#screenshots)
<!-- /MarkdownTOC -->
## What is this, Chosto ? ## What is this, Chosto ?
Basically, a way to bootstrap and keep track of my machines' configuration, that can realistically be used as a base for other people.
## Context and content
I used a lot Debian/Ubuntu with Gnome. So a full Desktop Manager with a stacking Windows Manager. I used a lot Debian/Ubuntu with Gnome. So a full Desktop Manager with a stacking Windows Manager.
A friend of mine showed me i3, a great and customizable tiling Windows Manager (i.e. no windows stack, just divide the scren and take all empty space). A friend of mine showed me i3, a great and customizable tiling Windows Manager (i.e. no windows stack, just divide the scren and take all empty space).
With some customization and additionnal component (in this repo), I managed to get a functional and pleasant yet lightweight environment (for me, no brag). With some customization and additionnal component (in this repo), I managed to get a functional and pleasant yet lightweight environment. While initially I used low footprint software like `netctl` for networks, I gave up and choose heavier but simpler option like NetworkManager.
So basically, what I like about this setup is that there is no "useless" menu bar anywhere and no border. Just windows with gaps between them when multiple windows are on the same screen, and keybord shortcuts for productivity. So basically, what I like about this setup is that there is no "useless" menu bar anywhere and no border. Just windows with gaps between them when multiple windows are on the same screen and keyboard shortcuts.
I added to the classic Arch/i3 : In brief this is the classic Arch/i3 combo with :
* A notification daemon (urgency-aware), Dunst, controlled by shortcuts (but possibly with mouse).
* A fancy lock screen, with optionnal suspend-to-RAM, either triggered by hotkey or when there is no activity for X minutes.
* A Display Manager (LightDM), for login and X starting.
* A great File Explorer (Nemo), with hotkey / command-line / screen-split / protocol handlers / events support.
* ZSH with Oh My ZSH and excellent community plugins (Git aliases, Docker autocomplete, FASD bindings, cat and man coloration...)
* Some mappings to control ALSA volume from dedicated keyboards buttons, to play/plause players compatible with MPRIS D-Bus Interface spec ; some changes to key speed (X settings) ; Smooth and dark theme for GTK and for Sublime-Text...
## Contents
Setup for :
* [i3](http://i3wm.org/), a great tiling windows manager
* In fact i3-gaps, to add margins between windows
* And i3-lock-color, an improved lock screen
* [LightDM](https://wiki.ubuntu.com/LightDM) with custom theme and background
* Sublime Text 3
* [Polybar](https://github.com/jaagr/polybar/), a great replacement for i3-bar with easy custom plugins and [system tray](https://specifications.freedesktop.org/systemtray-spec/systemtray-spec-0.3.html) * [Polybar](https://github.com/jaagr/polybar/), a great replacement for i3-bar with easy custom plugins and [system tray](https://specifications.freedesktop.org/systemtray-spec/systemtray-spec-0.3.html)
* Terminator * A notification daemon (urgency-aware), [Dunst](https://github.com/dunst-project/dunst), controlled by shortcuts (but possibly with mouse)
* ZSH with Oh My ZSH! * [Rofi](https://github.com/DaveDavenport/rofi), a full-customizable app launcher
* [Dunst](https://github.com/dunst-project/dunst), a great and lightweight notification daemon * Automatic login (drives are encrypted)
* [Rofi](https://github.com/DaveDavenport/rofi), a full-customizable app launcher/windows * Automatic backups
switcher * A fancy lock screen, with optional hibernation, either triggered by hotkey or when there is no activity for X minutes
* Sound setup (total beginner there btw) : * ZSH with Oh My ZSH
* JACK, a sound server, without PA support ; * Mappings to control ALSA volume from dedicated keyboards buttons, to play/plause players compatible with MPRIS D-Bus Interface spec
* PianoTeq, a virtual synth ; * Do-not-disturb mode
* Cadence and Claudia, JACK and LADISH front-ends ;
* Non-Mixer, a mixer.
* Ardour, a DAW.
* Random things (GTK3+ theme Arc, Redshift, taskwarrior...)
* A custom script to take screenshots and save them or upload them
* Screenshots (area or windows), with saving or uploading to a Lychee server ([custom script here](.config/i3/scripts/screenshot.py)) * Screenshots (area or windows), with saving or uploading to a Lychee server ([custom script here](.config/i3/scripts/screenshot.py))
* A curated list of software for daily usage (browser, mail client, messaging, network manager, password manager etc)
* Fonts I like, used in i3, polybar, etc
Here is a screenshot of the rendition i3-gaps/polybar. ## Screenshots
![Screenshot of i3/polybar](https://pic.chosty.fr/uploads/big/111928c68c111dbcd357a69cf13589d6.jpg)
#TODO
## Requirements ## Requirements
Configuration makes use of these things, just to record but not exhaustive : * A working [Arch installation](https://wiki.archlinux.org/title/installation_guide)
* Login with a `sudoer` user
* [yay](https://github.com/Jguer/yay) AUR wrapper
* Python 3 and Pip
* Git
* [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) ## Installation
* [fasd](https://github.com/clvv/fasd)
* [Pygments](http://pygments.org/) (with `pygmentize` command)
* [Powerline Fonts](https://github.com/powerline/fonts)
* `sudo pip install --upgrade google-api-python-client`
* [SpaceFM](https://ignorantguru.github.io/spacefm/)
* [PlayerCTL](https://github.com/acrisci/playerctl)
* [GTK Arc Theme](https://github.com/horst3180/arc-theme)
* Fonts : Noto Sans, Noto Emoji, DejaVu Sans, MaterialIcons, Symbola, [ttc-iosevka](https://archlinux.org/packages/?q=ttc-iosevka)
* xdotool, xsel
* gnupg
* maim, for screenshot + `pip install pyperclip`
* Python 3.7
* arc-gtk-theme
## Usage
Please note : on my system `XDG_CONFIG_HOME` is empty and default to `$HOME/.config`. Please note : on my system `XDG_CONFIG_HOME` is empty and default to `$HOME/.config`.
### Bare repository trick ### Clone the repository
* Clone in bare repository : `git clone --bare https://github.com/Chostakovitch/dotfiles.git $HOME/.cfg`. A bare repository does not have a working tree (basically it is just `.git` content). So we avoid conflicts with another git repository. * Clone in bare repository : `git clone --bare https://github.com/Chostakovitch/dotfiles.git $HOME/.cfg`. A bare repository does not have a working tree (basically it is just `.git` content). So we avoid conflicts with another git repository.
* Create a working tree outside `.cfg` : `git --git-dir=$HOME/.cfg/ --work-tree=$HOME checkout`. * Create a working tree outside `.cfg` : `git --git-dir=$HOME/.cfg/ --work-tree=$HOME checkout`.
* Adjust `DEFAUT_USER` in `~/.zshrc`.
* Adjust other environment variables, such as `SCREENSHOT_PATH`.
* Source `~/.zshrc` and use provided `config` alias to pull.
* `config config --local status.showUntrackedFiles no` to ignore untracked files in status (better as it is home dir).
Credits to [this great article](https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/) for the trick. Credits to [this article](https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/) for the trick.
### Divergence betwteen laptop and desktop ### Configure for your system
As desktop machine and laptop don't have configuration conflicts (e.g. laptop uses PulseAudio and desktop uses ALSA/Jack), some files have `.desk` extension and others `.laptop`. Configuration files that works on both systems have no extension. #### Polybar
Launch `~/.init_config.sh` to create symlinks (e.g. `~/.config/i3/config` will be symlinked to `~/.config/i3/config.laptop` if I launch `~/.init_config.sh laptop`). The bottom bar will work for every machine.
However, depending on your machine you may want slightly different modules loaded on the top bar, e.g. battery for laptop. Available modules are listed in [.config/polybar/config_common](.config/polybar/config_common). You also may want to adjust bars' height and DPI.
This can be done in `~/.config/polybar/conf.d/<env>` (see [explanation for env](#managing-divergences-between-environments)).
This is optional for now as by default, polybar will use this fallback values :
```ini
[variables]
dpi = 90
height = 27
top_left = powermenu system-uptime-pretty
top_center = xwindow
top_right = system-usb-udev alsa date
```
The bottom bar also reports disk usage, which cannot be configured generically. You can set the partitions you want to track in [config/polybar/scripts/filesystem.data](config/polybar/scripts/filesystem.data) with the following format :
```sh
# Each mount point (parts) will be associated with the icon
# (icons) having the same array index.
# You can add as many mount point as you want.
icons=( )
parts=(/ /home)
```
#### Wallpaper
You can put an optional wallpaper in `~/.local/share/backgrounds/wallpaper.jpg`.
#### Autologin
Adjust your login in [.config/systemd/getty@tty1.service.d/autologin.conf](.config/systemd/getty@tty1.service.d/autologin.conf).
#### Default user directories
Configure in [.config/user-dirs.dirs](./config/user-dirs.dirs).
#### Backups
Adjust backup script and timer in [.config/systemd](.config/systemd/)
#### Keybinding and started programs
Well... keybindings and programs started automatically are documented in [./.config/i3/config_common](.config/i3/config_common), but you probably want to change almost everything in that file because it is very specific to my setup.
Just note the existence of :
* A film mode (or do-not-disturb), which disable locking and notifications
* A [screenshot custom script](#screenshots)
### Get the system ready
```sh
INIT=1 ~/.init_config.sh [<env>]
```
This will install all needed software and configuration. If you want to re-use my setup, I highly recommand **not to pass `env`**, which are specific overrides for my hardware. You should provide you own adaptations, see [explanations section](#explanations).
In actual setup `env` can be :
* `desk` is currently adjusted for my home setup, i.e. two screens, a keyboard with media keys and [JACK Audio Connection Kit](https://wiki.archlinux.org/title/JACK_Audio_Connection_Kit).
* `laptop` is adjusted for a basic, single and high-DPI screen laptop, with a simple keyboard.
You can now reboot.
### Install Git Hook
You want to add files named `post-merge` **and** `pre-push` in `~/.cfg/hooks` with contains :
```sh
#!/bin/sh
exec WM_RESTART=1 ~/.init_config.sh <env>
```
And then `chmod +x ~/.cfg/hooks/{post-merge,pre-push}`.
`WM_RESTART` controls whether `i3`, `polybar` and `picom` are restarted.
That way, each time you commit or pull, changes are applied automagically, including configuration deletion detection.
### Git alias
[.zshrc](.zshrc) provides a `config` alias that you can use for manipulating the repository, e.g.
```sh
config add -u
config commit
config push
```
## Explanations
### Managing divergences between environments
This repository is used on several machines, called *environements* and defined at the beginning of [the init script](./.init_config.sh). In my example I have a desktop and a laptop, and envs are called `desk` or `laptop`.
Sometimes, you want a configuration file to be present only in a specific environment. Just add `.<env>` extension to this file and the init script will create symlinks without `.<env>` if running on a matching environment.
Other times, you have a base configuration for all environment with specific additions par-environment. This is called **merging**. The following scheme is used :
```
<config_subdir>
|__config_common
|__config.d
|__[desk]
|__[laptop]
```
In that case, the script will create a `<config_subdir>/config` file, which contains the concatenation of `config_common` and `config.d/<env>`, the later being optional. Filenames and path are hardcoded for now.
### Configuration outside XDG_CONFIG_HOME, e.g. /etc ### Configuration outside XDG_CONFIG_HOME, e.g. /etc
Some configuration files reside in `/etc` directory, but I want to keep track of them. Some configuration files reside in `/etc` directory, but I want to keep track of them.
Just create a folder in `XDG_CONFIG_HOME` and a file named `dest`. In this file, write the destination path. Then, copy the configuration files that you want to track and add them to the repository. You can also use `.desk` and `.laptop` extensions for specific configuration. To do so, you need to add *a special text file* named `dest`. In this file, write the destination path. Then, copy the configuration files that you want to track and add them to the repository.
The `~/.init_config.sh` script will copy relevant files (laptop or desktop) in the directory specified by `dest` file. Now you just modify the files tracked by Git and run `~/.init_config.sh`. You can combine with `.<env>` extensions or config merging for specific configuration : only the "final files" will be copied, e.g.
Example : see `~/.config/lightdm` directory. ```
<config_subdir>
### Git Hook |__dest = /etc/foo
|__subfolder
You may want to add a file named `post-merge` **and** `pre-push` in `~/.cfg/hooks` with contains something like : |__bar.desk
```bash
#!/bin/sh
exec ~/.init_config.sh <whatever you environment is>
``` ```
And then `chmod +x ~/.cfg/hooks/{post-merge,pre-push}`. At the end, you will have a `/etc/foo/subfolder/bar` file, *iff* the environment is `desk`.
When you pull, changes are applied automagically.
Note this is a quick and quite dirty solution. If `INIT` variable is set, files are copied anyway. Otherwise they are copied only if they have changed since the latest commit. The script also ensures that deleted files upstream are also deleted in destination paths.
### Bootstrap
The folder `$XDG_CONFIG_HOME/boostrap` is a special folder used to help launching a fresh system. It uses the [merging system](#managing-divergence-between-environments) to list the Arch packages to install (including AUR ones) in `yay` folder.
These packages are intented to provide reasonable defaults so the configuration just works out-of-the-box.
These packages are not to specific too my usage but still include messaging app for example, you can remove them if you want.
### Screenshots ### Screenshots
Todo : move it on another repo #TODO : move it on another repo
A small script inside [.config/i3/scripts](.config/i3/scripts) uses `maim` to take screenshots.
A small script inside `~/.config/i3/scripts/` uses `maim` to take screenshots.
Then, a flag can either save locally the image or upload it (now, only on a Lychee server using the API). Then, a flag can either save locally the image or upload it (now, only on a Lychee server using the API).
The `~/.config/i3/scripts/config.py` contains the default configuration. `~/.config/i3/scripts/config.py` should contains credentials, adapted from [.config/i3/scripts/config.py.example](.config/i3/scripts/config.py.example).
In either case, the link or path is copied to clipboard and a notification is triggered. In either case, the link or path is copied to clipboard and a notification is triggered.