From dfd55851515bc3869b47d429ab3a6be675b5fa58 Mon Sep 17 00:00:00 2001 From: Snorky Date: Mon, 22 Sep 2025 21:36:45 +0200 Subject: [PATCH] First commit --- dialogrc | 7 + i3/config | 249 ++++++++++++++++++++++++++ i3/config.b | 214 +++++++++++++++++++++++ i3status/.mytopbar.sh.swp | Bin 0 -> 20480 bytes i3status/click_time.sh | 7 + i3status/click_vpn.sh | 12 ++ i3status/mybottombar.sh | 171 ++++++++++++++++++ i3status/mytopbar.sh | 357 ++++++++++++++++++++++++++++++++++++++ i3status/wezterm_date.lua | 20 +++ i3status/wezterm_htop.lua | 20 +++ wezterm.lua | 29 ++++ 11 files changed, 1086 insertions(+) create mode 100644 dialogrc create mode 100644 i3/config create mode 100644 i3/config.b create mode 100644 i3status/.mytopbar.sh.swp create mode 100755 i3status/click_time.sh create mode 100755 i3status/click_vpn.sh create mode 100755 i3status/mybottombar.sh create mode 100755 i3status/mytopbar.sh create mode 100644 i3status/wezterm_date.lua create mode 100644 i3status/wezterm_htop.lua create mode 100644 wezterm.lua diff --git a/dialogrc b/dialogrc new file mode 100644 index 0000000..915f9df --- /dev/null +++ b/dialogrc @@ -0,0 +1,7 @@ +aspect = 0 +separate_widget = "" +tab_len = 0 +visit_items = OFF +use_shadow = OFF +use_colors = ON +screen_color = (WHITE,DEFAULT,OFF) diff --git a/i3/config b/i3/config new file mode 100644 index 0000000..2e58c74 --- /dev/null +++ b/i3/config @@ -0,0 +1,249 @@ +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! +# +# This config file uses keycodes (bindsym) and was written for the QWERTY +# layout. +# +# To get a config file with the same key positions, but for your current +# layout, use the i3-config-wizard +# + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:GohuFont uni14 Nerd Font Mono Bold 9 +#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 + +# 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 + +bindsym XF86MonBrightnessUp exec xbacklight -inc 10 +bindsym XF86MonBrightnessDown exec xbacklight -inc 10 + +bindsym Ctrl+e exec element-desktop +bindsym Ctrl+f exec simpleX-desktop +bindsym Ctrl+Mod4+l exec "i3lock -c 000000" +# use these keys for focus, movement, and resize directions when reaching for +# the arrows is not convenient +set $up l +set $down k +set $left j +set $right semicolon + +# use Mouse+Mod4 to drag floating windows to their wanted position +floating_modifier Mod4 + +# 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 Mod4+Return exec wezterm +bindsym Mod4+Shift+Return exec wezterm -e --class term_date +#bindsym Mod4+Return exec i3-sensible-terminal + +# kill focused window +bindsym Mod4+Shift+q kill + +# start dmenu (a program launcher) +#bindsym Mod4+d exec --no-startup-id i3-dmenu-desktop +bindsym Mod4+d exec --no-startup-id dmenu_run +# A more modern dmenu replacement is rofi: +# bindsym Mod4+d exec "rofi -modi drun,run -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. +# bindsym Mod4+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym Mod4+$left focus left +bindsym Mod4+$down focus down +bindsym Mod4+$up focus up +bindsym Mod4+$right focus right + +# alternatively, you can use the cursor keys: +bindsym Mod4+Left focus left +bindsym Mod4+Down focus down +bindsym Mod4+Up focus up +bindsym Mod4+Right focus right + +# move focused window +bindsym Mod4+Shift+$left move left +bindsym Mod4+Shift+$down move down +bindsym Mod4+Shift+$up move up +bindsym Mod4+Shift+$right move right + +# alternatively, you can use the cursor keys: +bindsym Mod4+Shift+Left move left +bindsym Mod4+Shift+Down move down +bindsym Mod4+Shift+Up move up +bindsym Mod4+Shift+Right move right + +# split in horizontal orientation +bindsym Mod4+h split h + +# split in vertical orientation +bindsym Mod4+v split v + +# enter fullscreen mode for the focused container +bindsym Mod4+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym Mod4+s layout stacking +bindsym Mod4+w layout tabbed +bindsym Mod4+e layout toggle split + +# toggle tiling / floating +bindsym Mod4+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym Mod4+space focus mode_toggle + +# default_border pixel 1 +for_window [class="^.*"] border pixel 1 +for_window [class="term_date"] floating enable +#default_floating_border pixel 1 +#gaps inner 1px +# focus the parent container +bindsym Mod4+a focus parent + +# focus the child container +#bindsym Mod4+d focus child + +# move the currently focused window to the scratchpad +bindsym Mod4+Shift+minus move scratchpad + +# Show the next scratchpad window or hide the focused scratchpad window. +# If there are multiple scratchpad windows, this command cycles through them. +bindsym Mod4+minus scratchpad show + +# 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 Mod4+1 workspace number $ws1 +bindsym Mod4+2 workspace number $ws2 +bindsym Mod4+3 workspace number $ws3 +bindsym Mod4+4 workspace number $ws4 +bindsym Mod4+5 workspace number $ws5 +bindsym Mod4+6 workspace number $ws6 +bindsym Mod4+7 workspace number $ws7 +bindsym Mod4+8 workspace number $ws8 +bindsym Mod4+9 workspace number $ws9 +bindsym Mod4+0 workspace number $ws10 + +# move focused container to workspace +bindsym Mod4+Shift+1 move container to workspace number $ws1 +bindsym Mod4+Shift+2 move container to workspace number $ws2 +bindsym Mod4+Shift+3 move container to workspace number $ws3 +bindsym Mod4+Shift+4 move container to workspace number $ws4 +bindsym Mod4+Shift+5 move container to workspace number $ws5 +bindsym Mod4+Shift+6 move container to workspace number $ws6 +bindsym Mod4+Shift+7 move container to workspace number $ws7 +bindsym Mod4+Shift+8 move container to workspace number $ws8 +bindsym Mod4+Shift+9 move container to workspace number $ws9 +bindsym Mod4+Shift+0 move container to workspace number $ws10 + +# reload the configuration file +bindsym Mod4+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym Mod4+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym Mod4+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 $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 + + # 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 Mod4+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym Mod4+r mode "default" +} + +bindsym Mod4+r mode "resize" + +#class border backgr. text indicator child_border +client.focused #9C7907 #444303 #ffffff #9C7907 #9C7907 +client.focused_inactive #111111 #000000 #ffffff #484e50 #5f676a +client.unfocused #333333 #222222 #888888 #292d2e #222222 +client.urgent #2f343a #900000 #ffffff #900000 #900000 +client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c + +client.background #ffffff + + + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + position top + status_command exec /home/pierre/.config/i3status/mytopbar.sh + workspace_buttons no + tray_output primary +} + +bar { + position bottom + status_command exec /home/pierre/.config/i3status/mybottombar.sh + tray_output none +} +####################################################################### +# automatically start i3-config-wizard to offer the user to create a +# keysym-based config which used their favorite modifier (alt or windows) +# +# i3-config-wizard will not launch if there already is a config file +# in ~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set) or +# ~/.i3/config. +# +# Please remove the following exec line: +####################################################################### +#exec i3-config-wizard diff --git a/i3/config.b b/i3/config.b new file mode 100644 index 0000000..40076ca --- /dev/null +++ b/i3/config.b @@ -0,0 +1,214 @@ +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! +# +# This config file uses keycodes (bindsym) and was written for the QWERTY +# layout. +# +# To get a config file with the same key positions, but for your current +# layout, use the i3-config-wizard +# + +# 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 + +# 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 these keys for focus, movement, and resize directions when reaching for +# the arrows is not convenient +set $up l +set $down k +set $left j +set $right semicolon + +# use Mouse+Mod1 to drag floating windows to their wanted position +floating_modifier Mod1 + +# 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 Mod1+Return exec i3-sensible-terminal + +# kill focused window +bindsym Mod1+Shift+q kill + +# start dmenu (a program launcher) +bindsym Mod1+d exec --no-startup-id dmenu_run +# A more modern dmenu replacement is rofi: +# bindsym Mod1+d exec "rofi -modi drun,run -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. +# bindsym Mod1+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym Mod1+$left focus left +bindsym Mod1+$down focus down +bindsym Mod1+$up focus up +bindsym Mod1+$right focus right + +# alternatively, you can use the cursor keys: +bindsym Mod1+Left focus left +bindsym Mod1+Down focus down +bindsym Mod1+Up focus up +bindsym Mod1+Right focus right + +# move focused window +bindsym Mod1+Shift+$left move left +bindsym Mod1+Shift+$down move down +bindsym Mod1+Shift+$up move up +bindsym Mod1+Shift+$right move right + +# alternatively, you can use the cursor keys: +bindsym Mod1+Shift+Left move left +bindsym Mod1+Shift+Down move down +bindsym Mod1+Shift+Up move up +bindsym Mod1+Shift+Right move right + +# split in horizontal orientation +bindsym Mod1+h split h + +# split in vertical orientation +bindsym Mod1+v split v + +# enter fullscreen mode for the focused container +bindsym Mod1+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym Mod1+s layout stacking +bindsym Mod1+w layout tabbed +bindsym Mod1+e layout toggle split + +# toggle tiling / floating +bindsym Mod1+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym Mod1+space focus mode_toggle + +# focus the parent container +bindsym Mod1+a focus parent + +# focus the child container +#bindsym Mod1+d focus child + +# move the currently focused window to the scratchpad +bindsym Mod1+Shift+minus move scratchpad + +# Show the next scratchpad window or hide the focused scratchpad window. +# If there are multiple scratchpad windows, this command cycles through them. +bindsym Mod1+minus scratchpad show + +# 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 Mod1+1 workspace number $ws1 +bindsym Mod1+2 workspace number $ws2 +bindsym Mod1+3 workspace number $ws3 +bindsym Mod1+4 workspace number $ws4 +bindsym Mod1+5 workspace number $ws5 +bindsym Mod1+6 workspace number $ws6 +bindsym Mod1+7 workspace number $ws7 +bindsym Mod1+8 workspace number $ws8 +bindsym Mod1+9 workspace number $ws9 +bindsym Mod1+0 workspace number $ws10 + +# move focused container to workspace +bindsym Mod1+Shift+1 move container to workspace number $ws1 +bindsym Mod1+Shift+2 move container to workspace number $ws2 +bindsym Mod1+Shift+3 move container to workspace number $ws3 +bindsym Mod1+Shift+4 move container to workspace number $ws4 +bindsym Mod1+Shift+5 move container to workspace number $ws5 +bindsym Mod1+Shift+6 move container to workspace number $ws6 +bindsym Mod1+Shift+7 move container to workspace number $ws7 +bindsym Mod1+Shift+8 move container to workspace number $ws8 +bindsym Mod1+Shift+9 move container to workspace number $ws9 +bindsym Mod1+Shift+0 move container to workspace number $ws10 + +# reload the configuration file +bindsym Mod1+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym Mod1+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym Mod1+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 $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 + + # 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 Mod1+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym Mod1+r mode "default" +} + +bindsym Mod1+r mode "resize" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + status_command i3status +} + +####################################################################### +# automatically start i3-config-wizard to offer the user to create a +# keysym-based config which used their favorite modifier (alt or windows) +# +# i3-config-wizard will not launch if there already is a config file +# in ~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set) or +# ~/.i3/config. +# +# Please remove the following exec line: +####################################################################### +exec i3-config-wizard diff --git a/i3status/.mytopbar.sh.swp b/i3status/.mytopbar.sh.swp new file mode 100644 index 0000000000000000000000000000000000000000..ab2e366faa7aaa10d70c820a267909138cc1072f GIT binary patch literal 20480 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 literal 0 HcmV?d00001 diff --git a/i3status/click_time.sh b/i3status/click_time.sh new file mode 100755 index 0000000..48fb040 --- /dev/null +++ b/i3status/click_time.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# show year calendar with week numbers +# and press any key to exit +dialog --date-format %Y/%m/%d --calendar "Select a date" 0 0 $(date +'%d %m %Y') +#cal -yw +#read -n 1 -r -s diff --git a/i3status/click_vpn.sh b/i3status/click_vpn.sh new file mode 100755 index 0000000..d52187e --- /dev/null +++ b/i3status/click_vpn.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +# Actually works for ProtonVPN +# we are connected if the directory exists +if [ -d /proc/sys/net/ipv4/conf/wg0 ]; then + # we are connected, so propose disconnexion + echo "Disconnect VPN" + sudo wg-quick down wg0 +else + echo "Connect VPN" + sudo wg-quick up wg0 +fi diff --git a/i3status/mybottombar.sh b/i3status/mybottombar.sh new file mode 100755 index 0000000..781f3ce --- /dev/null +++ b/i3status/mybottombar.sh @@ -0,0 +1,171 @@ +#!/bin/sh + +# i3 config in ~/.config/i3/config : +# bar { +# status_command exec /home/you/.config/i3status/mybar.sh +# } + +bg_bar_color="#282A36" + +# Print a left caret separator +# @params {string} $1 text color, ex: "#FF0000" +# @params {string} $2 background color, ex: "#FF0000" +separator() { + echo -n "{" + echo -n "\"full_text\":\"\"," # CTRL+Ue0b2 + echo -n "\"separator\":false," + echo -n "\"separator_block_width\":0," + echo -n "\"border\":\"$bg_bar_color\"," + echo -n "\"border_left\":0," + echo -n "\"border_right\":0," + echo -n "\"border_top\":2," + echo -n "\"border_bottom\":2," + echo -n "\"color\":\"$1\"," + echo -n "\"background\":\"$2\"" + echo -n "}" +} + +common() { + echo -n "\"border\": \"$bg_bar_color\"," + echo -n "\"separator\":false," + echo -n "\"separator_block_width\":0," + echo -n "\"border_top\":2," + echo -n "\"border_bottom\":2," + echo -n "\"border_left\":0," + echo -n "\"border_right\":0" +} + +myip_public_text() { + local bg="#000000" + local text_color="#D48F06" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"ip_public_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\" $(echo -n "Public Ip:") \"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +myip_public() { + local bg="#000000" + local text_color="#00A300" + separator $bg "#FFFFFF" + echo -n ",{" + echo -n "\"name\":\"ip_public\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\"$(curl -4 ip.me)\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +myip_local_text() { + local bg="#000000" + local text_color="#D48F06" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"ip_local_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\" $(echo -n "Local Ip:")\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +mygeo_text() { + local bg="#000000" + local text_color="#00A300" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"mygeo_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\" ($(/home/pierre/bin/goiplookup $(curl -s4 ip.me) | cut -d" " -f4-))\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +myip_local() { + local bg="#000000" # vert + separator $bg $bg_separator_previous + local text_color="#00A300" + echo -n ",{" + echo -n "\"color\":\"$text_color\"," + echo -n "\"name\":\"ip_local\"," + echo -n "\"full_text\":\"$(ip route get 1 | sed -n 's/.*src \([0-9.]\+\).*/\1/p')\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +vpn_text() { + local bg="#000000" + local text_color="#D48F06" + local icon="" + if [ ! -d /proc/sys/net/ipv4/conf/wg0 ]; then + icon="" + fi + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"vpn_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\" $(echo -n "VPN:")\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +myvpn_on() { + local bg="#000000" # grey darken-3 + local icon="" + text_color="#00A300" + text="ON" + if [ ! -d /proc/sys/net/ipv4/conf/wg0 ]; then + text_color="#E53935" # rouge + text="OFF" + icon="" + fi + separator $bg "#1976D2" # background left previous block + bg_separator_previous=$bg + echo -n ",{" + echo -n "\"color\":\"$text_color\"," + echo -n "\"name\":\"id_vpn\"," + echo -n "\"full_text\":\" ${icon} ${text} \"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}" +} + +# https://github.com/i3/i3/blob/next/contrib/trivial-bar-script.sh +echo '{ "version": 1, "click_events":true }' # Send the header so that i3bar knows we want to use JSON: +echo '[' # Begin the endless array. +echo '[]' # We send an empty first array of blocks to make the loop simpler: + +# Now send blocks with information forever: +(while :; +do + echo -n ",[" + myip_public_text + myip_public + mygeo_text + myip_local_text + myip_local + vpn_text + myvpn_on + echo "]" + sleep 5 +done) & + +# click events +while read line; +do + # echo $line > /home/you/gitclones/github/i3/tmp.txt + # {"name":"id_vpn","button":1,"modifiers":["Mod2"],"x":2982,"y":9,"relative_x":67,"relative_y":9,"width":95,"height":22} + + # VPN click + if [[ $line == *"name"*"id_vpn"* ]]; then + mate-terminal -e /home/pierre/.config/i3status/click_vpn.sh & + fi +done diff --git a/i3status/mytopbar.sh b/i3status/mytopbar.sh new file mode 100755 index 0000000..af1a4c7 --- /dev/null +++ b/i3status/mytopbar.sh @@ -0,0 +1,357 @@ +#!/bin/sh + +# i3 config in ~/.config/i3/config : +# bar { +# status_command exec /home/you/.config/i3status/mybar.sh +# } + +bg_bar_color="#282A36" + +# Print a left caret separator +# @params {string} $1 text color, ex: "#FF0000" +# @params {string} $2 background color, ex: "#FF0000" +separator() { + echo -n "{" + echo -n "\"full_text\":\"\"," # CTRL+Ue0b2 + echo -n "\"separator\":false," + echo -n "\"separator_block_width\":0," + echo -n "\"border\":\"$bg_bar_color\"," + echo -n "\"border_left\":0," + echo -n "\"border_right\":0," + echo -n "\"border_top\":2," + echo -n "\"border_bottom\":2," + echo -n "\"color\":\"$1\"," + echo -n "\"background\":\"$2\"" + echo -n "}" +} + +common() { + echo -n "\"border\": \"$bg_bar_color\"," + echo -n "\"separator\":false," + echo -n "\"separator_block_width\":0," + echo -n "\"border_top\":2," + echo -n "\"border_bottom\":2," + echo -n "\"border_left\":0," + echo -n "\"border_right\":0" +} + +root_text() { + local bg="#000000" + local text_color="#D48F06" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"id_root_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\" $(echo -n 'Root:')\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +root_usage() { + local bg="#000000" + local text_color="#00A300" + separator $bg "#2E7D32" + echo -n ",{" + echo -n "\"name\":\"id_root_usage\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\"$(df --output=pcent / | grep -v Uti)\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +home_text() { + local bg="#000000" + local text_color="#D48F06" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"id_home_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\" $(echo -n 'Home:')\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +home_usage() { + local bg="#000000" + local text_color="#00A300" + separator $bg "#2E7D32" + echo -n ",{" + echo -n "\"name\":\"id_home_usage\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\"$(df --output=pcent /home | grep -v Uti)\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +src_usage() { + local bg="#000000" + local text_color="#00A300" + separator $bg "#2E7D32" + echo -n ",{" + echo -n "\"name\":\"id_src_usage\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\"$(df --output=pcent /usr/src | grep -v Uti)\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +src_text() { + local bg="#000000" + local text_color="#D48F06" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"id_src_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\" $(echo -n 'Src:')\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +seclists_usage() { + local bg="#000000" + local text_color="#00A300" + separator $bg "#2E7D32" + echo -n ",{" + echo -n "\"name\":\"id_seclists_usage\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\"$(df --output=pcent /usr/share/seclists | grep -v Uti)\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +seclists_text() { + local bg="#000000" + local text_color="#D48F06" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"id_boot_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\" $(echo -n 'Sec:')\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +boot_usage() { + local bg="#000000" + local text_color="#00A300" + separator $bg "#2E7D32" + echo -n ",{" + echo -n "\"name\":\"id_boot_usage\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\"$(df --output=pcent /boot | grep -v Uti)\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +boot_text() { + local bg="#000000" + local text_color="#D48F06" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"id_boot_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\" $(echo -n 'Boot:')\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +memory_text() { + local bg="#000000" + local text_color="#D48F06" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"id_memory_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\" $(echo -n ' Mem: ')\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +memory() { + local bg="#000000" + local text_color="#00A300" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"color\":\"$text_color\"," + echo -n "\"name\":\"id_memory\"," + echo -n "\"full_text\":\"$(free | awk '/^Mem/ { printf("%.2f", $3/$2 * 100.0) }')%\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +cpu_usage() { + local text_color="#00A300" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"color\":\"$text_color\"," + echo -n "\"name\":\"id_cpu_usage\"," + echo -n "\"full_text\":\"$(ps -A -o pcpu | tail -n+2 | paste -sd+ | bc)% \"," + echo -n "\"background\":\"#000000\"," + common + echo -n "}," +} + +cpu_text() { + local bg="#000000" + local text_color="#D48F06" + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"id_cpu_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\" $(echo -n ' CPU: ')\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +mydate() { + local bg="#000000" + separator $bg "#FFD190" + echo -n ",{" + echo -n "\"name\":\"id_time\"," + echo -n "\"full_text\":\"  $(date "+%a %d/%m %H:%M") \"," + echo -n "\"color\":\"#D48F06\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +bat_text() { + local bg="#000000" + local text_color="#D48F06" + charging=$(cat /sys/class/power_supply/BAT0/uevent | grep "POWER_SUPPLY_STATUS" | cut -d'=' -f2) # POWER_SUPPLY_STATUS=Discharging|Charging + icon="" + if [ "$charging" == "Charging" ]; then + icon="" + fi + separator $bg "#FFD180" + echo -n ",{" + echo -n "\"name\":\"id_bat_text\"," + echo -n "\"color\":\"$text_color\"," + echo -n "\"full_text\":\"${icon}$(echo -n ' Bat: ')\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," +} + +battery0() { + if [ -f /sys/class/power_supply/BAT0/uevent ]; then + local bg="#000000" + separator $bg "#E0E0E0" + bg_separator_previous=$bg + prct=$(cat /sys/class/power_supply/BAT0/uevent | grep "POWER_SUPPLY_CAPACITY=" | cut -d'=' -f2) + echo -n ",{" + echo -n "\"name\":\"battery0\"," + echo -n "\"full_text\":\"${prct}% \"," + echo -n "\"color\":\"#00A300\"," + echo -n "\"background\":\"$bg\"," + common + echo -n "}," + else + bg_separator_previous="#E0E0E0" + fi +} + +volume() { + local bg="#000000" + local text_color="#D48F06" + separator $bg $bg_separator_previous + vol=$(pulsemixer --get-volume) + echo -n ",{" + echo -n "\"name\":\"id_volume\"," + echo -n "\"color\":\"$text_color\"," + if [ $vol -le 0 ]; then + echo -n "\"full_text\":\"  ${vol}% \"," + else + echo -n "\"full_text\":\"  ${vol}% \"," + fi + echo -n "\"background\":\"$bg\"," + common + echo -n "}," + separator $bg_bar_color $bg +} + +systemupdate() { + local nb=$(checkupdates | wc -l) + if (( $nb > 0)); then + echo -n ",{" + echo -n "\"name\":\"id_systemupdate\"," + echo -n "\"full_text\":\"  ${nb}\"" + echo -n "}" + fi +} + +logout() { + echo -n ",{" + echo -n "\"name\":\"id_logout\"," + echo -n "\"full_text\":\"  \"" + echo -n "}" +} + +# https://github.com/i3/i3/blob/next/contrib/trivial-bar-script.sh +echo '{ "version": 1, "click_events":true }' # Send the header so that i3bar knows we want to use JSON: +echo '[' # Begin the endless array. +echo '[]' # We send an empty first array of blocks to make the loop simpler: + +# Now send blocks with information forever: +(while :; +do + echo -n ",[" + root_text + root_usage + home_text + home_usage + boot_text + boot_usage + src_text + src_usage + seclists_text + seclists_usage + memory_text + memory + cpu_text + cpu_usage + mydate + bat_text + battery0 + volume + logout + echo "]" + sleep 1 +done) & + +# click events +while read line; +do + # echo $line > /home/you/gitclones/github/i3/tmp.txt + # {"name":"id_vpn","button":1,"modifiers":["Mod2"],"x":2982,"y":9,"relative_x":67,"relative_y":9,"width":95,"height":22} + + # CPU + if [[ $line == *"name"*"id_cpu_usage"* ]]; then + wezterm --config-file /home/pierre/.config/i3status/wezterm_htop.lua -e --class term_date htop & + + # TIME + elif [[ $line == *"name"*"id_time"* ]]; then + wezterm --config-file /home/pierre/.config/i3status/wezterm_date.lua -e --position screen:1582,21 --class term_date /home/pierre/.config/i3status/click_time.sh & + + # VOLUME + elif [[ $line == *"name"*"id_volume"* ]]; then + wezterm -e --class term_date -e pulsemixer & + + # LOGOUT + elif [[ $line == *"name"*"id_logout"* ]]; then + i3-nagbar -t warning -m 'Log out ?' -b 'yes' 'i3-msg exit' > /dev/null & + fi +done diff --git a/i3status/wezterm_date.lua b/i3status/wezterm_date.lua new file mode 100644 index 0000000..9f8640c --- /dev/null +++ b/i3status/wezterm_date.lua @@ -0,0 +1,20 @@ +-- Pull in the wezterm API +local wezterm = require 'wezterm' + +-- This will hold the configuration. +local config = wezterm.config_builder() + +config.enable_tab_bar= false +config.window_background_opacity = 0.8 + +-- For example, changing the initial geometry for new windows: +config.initial_cols = 40 +config.initial_rows = 18 +config.color_scheme_dirs = { '~/.config/iTerm2-Color-Schemes' } + +-- or, changing the font size and color scheme. +config.font_size = 10 +config.color_scheme = 'Ollie' + +-- Finally, return the configuration to wezterm: +return config diff --git a/i3status/wezterm_htop.lua b/i3status/wezterm_htop.lua new file mode 100644 index 0000000..3e836e1 --- /dev/null +++ b/i3status/wezterm_htop.lua @@ -0,0 +1,20 @@ +-- Pull in the wezterm API +local wezterm = require 'wezterm' + +-- This will hold the configuration. +local config = wezterm.config_builder() + +config.enable_tab_bar= false +config.window_background_opacity = 0.8 + +-- For example, changing the initial geometry for new windows: +config.initial_cols = 150 +config.initial_rows = 40 +config.color_scheme_dirs = { '~/.config/iTerm2-Color-Schemes' } + +-- or, changing the font size and color scheme. +config.font_size = 10 +config.color_scheme = 'Ollie' + +-- Finally, return the configuration to wezterm: +return config diff --git a/wezterm.lua b/wezterm.lua new file mode 100644 index 0000000..7099963 --- /dev/null +++ b/wezterm.lua @@ -0,0 +1,29 @@ +-- Pull in the wezterm API +local wezterm = require 'wezterm' + +-- This will hold the configuration. +local config = wezterm.config_builder() + +config.enable_tab_bar= false +config.scrollback_lines = 3500 +config.default_cursor_style = 'BlinkingUnderline' +config.window_background_opacity = 0.8 +config.window_padding = { + left = 2, + right = 2, + top = 0, + bottom = 0, +} + +-- For example, changing the initial geometry for new windows: +--config.initial_cols = 45 +--config.initial_rows = 24 +config.enable_scroll_bar = true +config.color_scheme_dirs = { '~/.config/iTerm2-Color-Schemes' } + +-- or, changing the font size and color scheme. +config.font_size = 10 +config.color_scheme = 'Ollie' + +-- Finally, return the configuration to wezterm: +return config