diff --git a/.Xresources b/.Xresources new file mode 100644 index 0000000..d1bf60c --- /dev/null +++ b/.Xresources @@ -0,0 +1,21 @@ +xterm*background: #000000 +xterm*foreground: #ffffff + +URxvt*.depth: 32 +URxvt*.background: [95]#000000 +URxvt*.foreground: #ffffff +URxvt*.scrollBar: false +URxvt*.perl-ext-common: default,clipboard,url-select,keyboard-select +URxvt*.url-select.launcher: firefox +URxvt*.url-select.underline: true +URxvt*.keysym.M-u: perl:url-select:select_next +URxvt*.keysym.M-Escape: perl:keyboard-select:activate +URxvt*.keysym.M-s: perl:keyboard-select:search +URxvt*.font: xft:inconsolata:size=9 +URxvt*.letterSpace: -1 + +Xft.dpi: 96 +Xft.antialias: true +Xft.rgba: rgb +Xft.hinting: true +Xft.hintstyle: hintslight diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index 67e221d..5754a2a 100644 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -5,18 +5,13 @@ # # See https://wiki.hyprland.org/Configuring/Monitors/ -# List monitors: -# $ hyprctl monitors -monitor = ,highres,auto,1 -# Enable or disable eDP-1 depending on the lid switch -bindl = ,switch:off:Lid Switch,exec,hyprctl keyword monitor "eDP-1,highres,auto,1" -bindl = ,switch:on:Lid Switch,exec,hyprctl keyword monitor "eDP-1, disable" +monitor=,preferred,auto,auto +monitor=eDP-1,1920x1080@60,0x0,1 # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Execute your favorite apps at launch # exec-once = waybar & hyprpaper & firefox -exec-once = ~/.local/bin/set_wallpaper exec-once = hyprpaper exec-once = waybar @@ -31,9 +26,8 @@ input { kb_layout = us kb_variant = kb_model = - #kb_rules = - # Example compose keys: menu, ralt, rwin - kb_options = compose:rwin + kb_options = + kb_rules = follow_mouse = 1 @@ -171,12 +165,12 @@ bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow # Media keys -binde = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+ -bindl = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- -bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle -bindl = , XF86AudioPlay, exec, playerctl --player rhythmbox play-pause -bindl = , XF86AudioPrev, exec, playerctl --player rhythmbox previous -bindl = , XF86AudioNext, exec, playerctl --player rhythmbox next -bindl = , XF86MonBrightnessUp, exec, brightnessctl set +5% -bindl = , XF86MonBrightnessDown, exec, brightnessctl set 5%- -bindl = , Print, exec, grim +binde=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+ +bindl=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindl=, XF86AudioPlay, exec, playerctl --player rhythmbox play-pause +bindl=, XF86AudioPrev, exec, playerctl --player rhythmbox previous +bindl=, XF86AudioNext, exec, playerctl --player rhythmbox next +bindl=, XF86MonBrightnessUp, exec, brightnessctl set +5% +bindl=, XF86MonBrightnessDown, exec, brightnessctl set 5%- +bindl=, Print, exec, grim diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..f58c33d --- /dev/null +++ b/.config/hypr/hyprpaper.conf @@ -0,0 +1,4 @@ +preload = /home/rodolphe/pictures/wallpapers/2018-06-03_Komona-sunset_by-David-Revoy.jpg + +wallpaper = monitor1,/home/rodolphe/pictures/wallpapers/2018-06-03_Komona-sunset_by-David-Revoy.jpg +wallpaper = eDP-1,/home/rodolphe/pictures/wallpapers/2018-06-03_Komona-sunset_by-David-Revoy.jpg diff --git a/.gitignore b/.gitignore index 300d96d..9230d78 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,3 @@ __pycache__/ # Emacs .emacs.d/auto-save-list/ - -# Auto-generated hyprpaper configuration file -.config/hypr/hyprpaper.conf diff --git a/.xinitrc b/.xinitrc new file mode 100755 index 0000000..bdeeaa0 --- /dev/null +++ b/.xinitrc @@ -0,0 +1,32 @@ +[ -f ~/.xprofile ] && . ~/.xprofile + +AUTHORISED_WM="qtile i3" +AVAILABLE_WM="" +REQUESTED_WM="$1" + +for wm in $AUTHORISED_WM; do + if hash "$wm" 2>/dev/null; then + if [ "$AVAILABLE_WM" ]; then + AVAILABLE_WM="$AVAILABLE_WM $wm" + else + AVAILABLE_WM="$wm" + fi + fi +done +if [ ! "$AVAILABLE_WM" ]; then + >&2 echo "Error: No window manager found. Please install one of the following:" + >&2 echo "$AUTHORISED_WM" + exit 1 +fi + +WM=$(echo "$AVAILABLE_WM" | tr ' ' '\n' | head -n1) +if [ "$REQUESTED_WM" ]; then + found=$(echo "$AVAILABLE_WM" | tr ' ' '\n' | grep -w "$REQUESTED_WM") + if [ "$found" ]; then + WM="$found" + else + >&2 echo "Warning: $REQUESTED_WM not found, starting the default window manager." + fi +fi + +exec "$WM" 2>/tmp/xinit.err.log diff --git a/.xprofile b/.xprofile new file mode 100644 index 0000000..54cd048 --- /dev/null +++ b/.xprofile @@ -0,0 +1,8 @@ +[ -f /etc/xprofile ] && . /etc/xprofile +[ -f ~/.Xresources ] && xrdb -merge ~/.Xresources +[ -f "$MY_CONFIG/.set_compose_key.sh" ] && . "$MY_CONFIG/.set_compose_key.sh" + +hash xcompmgr 2>/dev/null && xcompmgr & +hash xscreensaver 2>/dev/null && xscreensaver -no-splash & +hash gpg-agent 2>/dev/null && eval $(gpg-agent --daemon --enable-ssh-support) +hash set_wallpaper 2>/dev/null && set_wallpaper feh diff --git a/.xscreensaver b/.xscreensaver new file mode 100644 index 0000000..eb93d0c --- /dev/null +++ b/.xscreensaver @@ -0,0 +1,272 @@ +# XScreenSaver Preferences File +# Written by xscreensaver-demo 5.33 for rodolphe on Wed Aug 12 16:37:20 2015. +# http://www.jwz.org/xscreensaver/ + +timeout: 0:10:00 +cycle: 0:10:00 +lock: True +lockTimeout: 0:00:00 +passwdTimeout: 0:00:30 +visualID: default +installColormap: True +verbose: False +timestamp: True +splash: True +splashDuration: 0:00:05 +demoCommand: xscreensaver-demo +prefsCommand: xscreensaver-demo -prefs +nice: 10 +memoryLimit: 0 +fade: True +unfade: False +fadeSeconds: 0:00:03 +fadeTicks: 20 +captureStderr: True +ignoreUninstalledPrograms:False +font: *-medium-r-*-140-*-m-* +dpmsEnabled: False +dpmsQuickOff: False +dpmsStandby: 2:00:00 +dpmsSuspend: 2:00:00 +dpmsOff: 4:00:00 +grabDesktopImages: True +grabVideoFrames: False +chooseRandomImages: False +imageDirectory: + +mode: blank +selected: 146 + +textMode: file +textLiteral: XScreenSaver +textFile: +textProgram: fortune +textURL: http://twitter.com/statuses/public_timeline.atom + +programs: \ + maze -root \n\ + GL: superquadrics -root \n\ + attraction -root \n\ + blitspin -root \n\ + greynetic -root \n\ + helix -root \n\ + hopalong -root \n\ + imsmap -root \n\ +- noseguy -root \n\ +- pyro -root \n\ + qix -root \n\ +- rocks -root \n\ + rorschach -root \n\ + decayscreen -root \n\ + flame -root \n\ + halo -root \n\ + slidescreen -root \n\ + pedal -root \n\ + bouboule -root \n\ +- braid -root \n\ + coral -root \n\ + deco -root \n\ + drift -root \n\ +- fadeplot -root \n\ + galaxy -root \n\ + goop -root \n\ + grav -root \n\ + ifs -root \n\ + GL: jigsaw -root \n\ + julia -root \n\ +- kaleidescope -root \n\ + GL: moebius -root \n\ + moire -root \n\ + GL: morph3d -root \n\ + mountain -root \n\ + munch -root \n\ + penrose -root \n\ + GL: pipes -root \n\ + rd-bomb -root \n\ + GL: rubik -root \n\ +- sierpinski -root \n\ + slip -root \n\ + GL: sproingies -root \n\ + starfish -root \n\ + strange -root \n\ + swirl -root \n\ + triangle -root \n\ + xjack -root \n\ + xlyap -root \n\ + GL: atlantis -root \n\ + bsod -root \n\ + GL: bubble3d -root \n\ + GL: cage -root \n\ +- crystal -root \n\ + cynosure -root \n\ + discrete -root \n\ + distort -root \n\ + epicycle -root \n\ + flow -root \n\ +- GL: glplanet -root \n\ + interference -root \n\ + kumppa -root \n\ + GL: lament -root \n\ + moire2 -root \n\ + GL: sonar -root \n\ + GL: stairs -root \n\ + truchet -root \n\ +- vidwhacker -root \n\ + blaster -root \n\ + bumps -root \n\ + ccurve -root \n\ + compass -root \n\ + deluxe -root \n\ +- demon -root \n\ +- GL: extrusion -root \n\ +- loop -root \n\ + penetrate -root \n\ + petri -root \n\ + phosphor -root \n\ + GL: pulsar -root \n\ + ripples -root \n\ + shadebobs -root \n\ + GL: sierpinski3d -root \n\ + spotlight -root \n\ + squiral -root \n\ + wander -root \n\ +- webcollage -root \n\ + xflame -root \n\ + xmatrix -root \n\ + GL: gflux -root \n\ +- nerverot -root \n\ + xrayswarm -root \n\ + xspirograph -root \n\ + GL: circuit -root \n\ + GL: dangerball -root \n\ +- GL: dnalogo -root \n\ + GL: engine -root \n\ + GL: flipscreen3d -root \n\ + GL: gltext -root \n\ + GL: menger -root \n\ + GL: molecule -root \n\ + rotzoomer -root \n\ + speedmine -root \n\ + GL: starwars -root \n\ + GL: stonerview -root \n\ + vermiculate -root \n\ + whirlwindwarp -root \n\ + zoom -root \n\ + anemone -root \n\ + apollonian -root \n\ + GL: boxed -root \n\ + GL: cubenetic -root \n\ + GL: endgame -root \n\ + euler2d -root \n\ + fluidballs -root \n\ + GL: flurry -root \n\ +- GL: glblur -root \n\ + GL: glsnake -root \n\ + halftone -root \n\ + GL: juggler3d -root \n\ + GL: lavalite -root \n\ +- polyominoes -root \n\ + GL: queens -root \n\ +- GL: sballs -root \n\ + GL: spheremonics -root \n\ +- thornbird -root \n\ + twang -root \n\ +- GL: antspotlight -root \n\ + apple2 -root \n\ + GL: atunnel -root \n\ + barcode -root \n\ + GL: blinkbox -root \n\ + GL: blocktube -root \n\ + GL: bouncingcow -root \n\ + cloudlife -root \n\ + GL: cubestorm -root \n\ + eruption -root \n\ + GL: flipflop -root \n\ + GL: flyingtoasters -root \n\ + fontglide -root \n\ + GL: gleidescope -root \n\ + GL: glknots -root \n\ + GL: glmatrix -root \n\ +- GL: glslideshow -root \n\ + GL: hypertorus -root \n\ +- GL: jigglypuff -root \n\ + metaballs -root \n\ + GL: mirrorblob -root \n\ + piecewise -root \n\ + GL: polytopes -root \n\ + pong -root \n\ + popsquares -root \n\ + GL: surfaces -root \n\ + xanalogtv -root \n\ +- abstractile -root \n\ + anemotaxis -root \n\ +- GL: antinspect -root \n\ + fireworkx -root \n\ + fuzzyflakes -root \n\ + interaggregate -root \n\ + intermomentary -root \n\ + memscroller -root \n\ + GL: noof -root \n\ + pacman -root \n\ + GL: pinion -root \n\ + GL: polyhedra -root \n\ +- GL: providence -root \n\ + substrate -root \n\ + wormhole -root \n\ +- GL: antmaze -root \n\ + GL: boing -root \n\ + boxfit -root \n\ + GL: carousel -root \n\ + celtic -root \n\ + GL: crackberg -root \n\ + GL: cube21 -root \n\ + fiberlamp -root \n\ + GL: fliptext -root \n\ + GL: glhanoi -root \n\ + GL: tangram -root \n\ + GL: timetunnel -root \n\ + GL: glschool -root \n\ + GL: topblock -root \n\ + GL: cubicgrid -root \n\ + cwaves -root \n\ + GL: gears -root \n\ + GL: glcells -root \n\ + GL: lockward -root \n\ + m6502 -root \n\ + GL: moebiusgears -root \n\ + GL: voronoi -root \n\ + GL: hypnowheel -root \n\ + GL: klein -root \n\ +- lcdscrub -root \n\ + GL: photopile -root \n\ + GL: skytentacles -root \n\ + GL: rubikblocks -root \n\ + GL: companioncube -root \n\ + GL: hilbert -root \n\ + GL: tronbit -root \n\ + electricsheep --root 1 \n\ + GL: geodesic -root \n\ + hexadrop -root \n\ + GL: kaleidocycle -root \n\ + GL: quasicrystal -root \n\ + GL: unknownpleasures -root \n\ + binaryring -root \n\ + GL: cityflow -root \n\ + GL: geodesicgears -root \n\ + GL: projectiveplane -root \n\ + GL: romanboy -root \n\ + tessellimage -root \n\ + GL: winduprobot -root \n\ + GL: splitflap -root \n\ + + +pointerPollTime: 0:00:05 +pointerHysteresis: 10 +windowCreationTimeout:0:00:30 +initialDelay: 0:00:00 +GetViewPortIsFullOfLies:False +procInterrupts: True +xinputExtensionDev: False +overlayStderr: True +authWarningSlack: 20 + diff --git a/bin/lock b/bin/lock new file mode 100755 index 0000000..f9bcbc6 --- /dev/null +++ b/bin/lock @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -euo pipefail +IFS=$'\n\t' + +LOCK_BG_FILE="/tmp/lock_screen.png" + +rm -f "$LOCK_BG_FILE" +scrot "$LOCK_BG_FILE" +mogrify -filter Gaussian -resize 50% -define filter:sigma=2.5 -resize 200% "$LOCK_BG_FILE" +mogrify -font Liberation-Sans -fill white -undercolor '#00000080' -pointsize 30 -gravity South -annotate +0+200 "Screen locked" "$LOCK_BG_FILE" +i3lock -e -i "$LOCK_BG_FILE" diff --git a/bin/set_wallpaper b/bin/set_wallpaper index 687a1f8..7502ece 100755 --- a/bin/set_wallpaper +++ b/bin/set_wallpaper @@ -4,15 +4,13 @@ set -euo pipefail IFS=$'\n\t' WALLPAPER_DIRECTORY="$HOME/pictures/wallpapers/enabled" -HYPRPAPER_CNF="$HOME/.config/hypr/hyprpaper.conf" +WALLPAPER_FILE="$(find "$WALLPAPER_DIRECTORY" -type l -print | shuf | head -n 1)" -if [ -d "$WALLPAPER_DIRECTORY" ]; then - WALLPAPER_FILE="$(find "$WALLPAPER_DIRECTORY" -type l -print | shuf | head -n 1)" - if [ -L "$WALLPAPER_FILE" ]; then - WALLPAPER_FILE="$(readlink -f "$WALLPAPER_FILE")" - fi - cat >"$HYPRPAPER_CNF" << EOF -preload = $WALLPAPER_FILE -wallpaper = ,$WALLPAPER_FILE -EOF -fi +case "$1" in + sway) + swaymsg --quiet output "*" bg "$WALLPAPER_FILE" fill + ;; + *) + hash feh 2>/dev/null && feh --bg-scale "$WALLPAPER_FILE" + ;; +esac diff --git a/bin/sway b/bin/sway new file mode 100755 index 0000000..891262c --- /dev/null +++ b/bin/sway @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +set -euo pipefail +IFS=$'\n\t' + +COMPOSE_KEY_FILE="$HOME/.compose_key" + +if [ -f "$COMPOSE_KEY_FILE" ]; then + COMPOSE_KEY=$(cat "$COMPOSE_KEY_FILE") + export XKB_DEFAULT_OPTIONS="compose:$COMPOSE_KEY" +fi + +/usr/bin/sway "$@" diff --git a/bin/vid2twitter b/bin/vid2twitter new file mode 100755 index 0000000..0a001bb --- /dev/null +++ b/bin/vid2twitter @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +INPUT="$1" +OUTPUT="${INPUT%.*}.mp4" + +if [ $# -ne 1 ]; then + echo "Usage: vid2twitter [source_video_file]" >&2 + exit 1 +fi + +if [ -f "$OUTPUT" ]; then + echo -n "$OUTPUT: file exists, overwrite? (y|N) " + read -r overwrite + case "${overwrite,,}" in + "y" | "yes") ;; + *) + exit 0 + ;; + esac +fi + +ffmpeg -i "$INPUT" -vcodec libx264 -pix_fmt yuv420p -strict -2 -acodec aac "$OUTPUT" diff --git a/bin/xplorer b/bin/xplorer new file mode 100755 index 0000000..8ed2920 --- /dev/null +++ b/bin/xplorer @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +set -euo pipefail +IFS=$'\n\t' + +for name in 'pcmanfm' 'thunar'; do + if hash "$name" 2>/dev/null; then + "$name" + break + fi +done diff --git a/compose/menu b/compose/menu new file mode 100644 index 0000000..e4a6a56 --- /dev/null +++ b/compose/menu @@ -0,0 +1 @@ +menu \ No newline at end of file diff --git a/compose/ralt b/compose/ralt new file mode 100644 index 0000000..b5159b5 --- /dev/null +++ b/compose/ralt @@ -0,0 +1 @@ +ralt \ No newline at end of file diff --git a/compose/rwin b/compose/rwin new file mode 100644 index 0000000..2618a89 --- /dev/null +++ b/compose/rwin @@ -0,0 +1 @@ +rwin \ No newline at end of file