i3 config
							parent
							
								
									84afb34cee
								
							
						
					
					
						commit
						3b8ef2383f
					
				|  | @ -0,0 +1,45 @@ | ||||||
|  | # vim: set fs=i3config | ||||||
|  | 
 | ||||||
|  | #get auth work with polkit-gnome | ||||||
|  | exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 | ||||||
|  | # Run setup script | ||||||
|  | exec --no-startup-id ~/.config/i3/startup.sh | ||||||
|  | # Bluetooth applet | ||||||
|  | exec --no-startup-id blueman-tray | ||||||
|  | # Nextcloud sync | ||||||
|  | exec --no-startup-id nextcloud | ||||||
|  | # Compositor | ||||||
|  | exec --no-startup-id picom -b --config ~/.config/picom.conf | ||||||
|  | # Network Manager applet | ||||||
|  | exec --no-startup-id nm-applet | ||||||
|  | #set powersavings for display | ||||||
|  | exec --no-startup-id xset s 480 dpms 600 600 600 | ||||||
|  | # Desktop notifications | ||||||
|  | exec --no-startup-id /usr/bin/dunst | ||||||
|  | # screen lock | ||||||
|  | exec --no-startup-id /usr/bin/light-locker | ||||||
|  | # Mail notifications | ||||||
|  | # exec --no-startup-id thunderbird | ||||||
|  | # Joplin sync | ||||||
|  | exec --no-startup-id joplin-desktop | ||||||
|  | exec --no-startup-id nheko | ||||||
|  | exec --no-startup-id signal-desktop | ||||||
|  | 
 | ||||||
|  | # File sync | ||||||
|  | exec --no-startup-id syncthing --no-browser | ||||||
|  | 
 | ||||||
|  | # set powersavings for display: | ||||||
|  | # s 480: screensaver for 480s (I think) | ||||||
|  | # dpms 600 600 600: sets the delay in seconds before the Display Power | ||||||
|  | # Management Signalling kicks in. Each number configures standby, suspend, and | ||||||
|  | # off respectively, in seconds. | ||||||
|  | exec --no-startup-id xset s 480 dpms 600 600 600 | ||||||
|  | 
 | ||||||
|  | # Sets the keyboard repeat speed | ||||||
|  | exec --no-startup-id xset r rate 150 40 | ||||||
|  | 
 | ||||||
|  | # Set correct keyboard layout | ||||||
|  | exec --no-startup-id setxkbmap -layout us -variant altgr-intl | ||||||
|  | exec --no-startup-id tidal-hifi | ||||||
|  | 
 | ||||||
|  | # exec --no-startup-id zeal | ||||||
|  | @ -0,0 +1,23 @@ | ||||||
|  | # vim: set fs=i3config | ||||||
|  | 
 | ||||||
|  | bar { | ||||||
|  |     # status_command i3blocks -c ~/.config/i3/i3blocks.conf  | ||||||
|  |     status_command i3status-rs ~/.config/i3/i3status-rust.toml | ||||||
|  |     # font pango:DejaVu Sans Mono, FontAwesome 11 | ||||||
|  |     position bottom | ||||||
|  |     tray_output primary | ||||||
|  |     mode hide | ||||||
|  |     hidden_state hide | ||||||
|  |     modifier none | ||||||
|  |     colors { | ||||||
|  |       separator          #666666 | ||||||
|  |         background         #222222 | ||||||
|  |         statusline         #dddddd | ||||||
|  |         focused_workspace  #0088CC #0088CC #ffffff | ||||||
|  |         active_workspace   #333333 #333333 #ffffff | ||||||
|  |         inactive_workspace #333333 #333333 #888888 | ||||||
|  |         urgent_workspace   #2f343a #900000 #ffffff | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bindsym $mod+c bar hidden_state toggle | ||||||
|  | @ -0,0 +1,19 @@ | ||||||
|  | # vim: set fs=i3config | ||||||
|  | 
 | ||||||
|  | # =====FLOAT RULES===== | ||||||
|  | for_window [class="Yad" instance="yad"] floating enable | ||||||
|  | for_window [class="Galculator" instance="galculator"] floating enable | ||||||
|  | for_window [class="Xsane" instance="xsane"] floating enable | ||||||
|  | for_window [class="Pavucontrol" instance="pavucontrol"] floating enable | ||||||
|  | for_window [class="qt5ct" instance="qt5ct"] floating enable | ||||||
|  | for_window [class="Blueberry.py" instance="blueberry.py"] floating enable | ||||||
|  | for_window [class="Bluetooth-sendto" instance="bluetooth-sendto"] floating enable | ||||||
|  | for_window [class="Gufw.py" instance="gufw.py"] floating enable | ||||||
|  | for_window [class="Blueman-manager" instance="blueman-manager"] floating enable | ||||||
|  | for_window [class="firefox" window_role="PictureInPicture"] sticky enable | ||||||
|  | for_window [class="firefox" window_role="PictureInPicture"] border pixel | ||||||
|  | 
 | ||||||
|  | for_window [class="tidal-hifi"] floating enable | ||||||
|  | for_window [class="tidal-hifi"] move to scratchpad | ||||||
|  | 
 | ||||||
|  | for_window [class="Zeal" instance="zeal"] floating enable | ||||||
|  | @ -0,0 +1,90 @@ | ||||||
|  | # vim: set fs=i3config | ||||||
|  | 
 | ||||||
|  | # Mode for changing layout modes | ||||||
|  | mode "config" { | ||||||
|  |     # Switch split mode | ||||||
|  |     bindsym j split vertical; mode "default" | ||||||
|  |     bindsym h split horizontal; mode "default" | ||||||
|  |     bindsym k split vertical; mode "default" | ||||||
|  |     bindsym l split horizontal; mode "default" | ||||||
|  | 
 | ||||||
|  |     # Switch layout | ||||||
|  |     bindsym y layout stacking; mode "default" | ||||||
|  |     bindsym u layout tabbed; mode "default" | ||||||
|  |     bindsym i layout toggle split; mode "default" | ||||||
|  | 
 | ||||||
|  |     # Swap modifier key | ||||||
|  |     bindsym s exec ~/.config/i3/swap_mod.sh; restart | ||||||
|  | 
 | ||||||
|  |     # Go back to normal mode | ||||||
|  |     bindsym Escape mode "default" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bindsym $mod+s mode "config" | ||||||
|  | 
 | ||||||
|  | # Resize focused window | ||||||
|  | mode "resize" { | ||||||
|  |     bindsym h resize shrink width 10 px or 10 ppt | ||||||
|  |     bindsym j resize shrink height 10 px or 10 ppt | ||||||
|  |     bindsym k resize grow height 10 px or 10 ppt | ||||||
|  |     bindsym l resize grow width 10 px or 10 ppt | ||||||
|  | 
 | ||||||
|  |     bindsym Shift+h resize shrink width 2 px or 2 ppt | ||||||
|  |     bindsym Shift+j resize shrink height 2 px or 2 ppt | ||||||
|  |     bindsym Shift+k resize grow height 2 px or 2 ppt | ||||||
|  |     bindsym Shift+l resize grow width 2 px or 2 ppt | ||||||
|  | 
 | ||||||
|  |     bindsym f floating toggle | ||||||
|  |     bindsym s sticky toggle | ||||||
|  | 
 | ||||||
|  |     bindsym Escape mode "default" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bindsym $mod+r mode "resize" | ||||||
|  | 
 | ||||||
|  | # reload the configuration file | ||||||
|  | bindsym $mod+Shift+c reload | ||||||
|  | 
 | ||||||
|  | # Restart i3 in-place | ||||||
|  | bindsym $mod+Shift+r restart | ||||||
|  | 
 | ||||||
|  | # exit i3 (logs you out of your X session) | ||||||
|  | bindsym $mod+Shift+q 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'" | ||||||
|  | 
 | ||||||
|  | # Volume | ||||||
|  | bindsym XF86AudioRaiseVolume exec amixer -D pulse sset Master 5%+ && pkill -RTMIN+1 i3blocks | ||||||
|  | bindsym XF86AudioLowerVolume exec amixer -D pulse sset Master 5%- && pkill -RTMIN+1 i3blocks | ||||||
|  | bindsym $mod+XF86AudioRaiseVolume exec amixer -D pulse sset Master 1%+ && pkill -RTMIN+1 i3blocks | ||||||
|  | bindsym $mod+XF86AudioLowerVolume exec amixer -D pulse sset Master 1%- && pkill -RTMIN+1 i3blocks | ||||||
|  | bindsym XF86AudioMute exec amixer -D pulse set Master toggle | ||||||
|  | 
 | ||||||
|  | # Backlight | ||||||
|  | bindsym XF86MonBrightnessUp exec brightnessctl --device='intel_backlight' set +10% | ||||||
|  | bindsym XF86MonBrightnessDown exec brightnessctl --device='intel_backlight' set 10%- | ||||||
|  | 
 | ||||||
|  | # Keyboard brightness | ||||||
|  | bindsym XF86KbdBrightnessUp exec brightnessctl --device='smc::kbd_backlight' set +10% | ||||||
|  | bindsym XF86KbdBrightnessDown exec brightnessctl --device='smc::kbd_backlight' set 10%- | ||||||
|  | 
 | ||||||
|  | # Screenshot | ||||||
|  | bindsym --release Print exec "scrot -fis ~/Pictures/screenshots/%Y-%m-%d-%T.png" | ||||||
|  | 
 | ||||||
|  | # Show shutdown menu | ||||||
|  | bindsym $mod+Escape exec ~/.config/i3/scripts/shutdown_menu -p rofi -c | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # =====APPLICATIONS===== | ||||||
|  | # start a terminal | ||||||
|  | bindsym $mod+Return exec --no-startup-id st | ||||||
|  | # Open a Zeal window | ||||||
|  | bindsym $mod+w exec --no-startup-id zeal | ||||||
|  | # Launch output device configuration | ||||||
|  | bindsym $mod+m exec --no-startup-id pavucontrol -t 3 | ||||||
|  | # Open dmenu | ||||||
|  | bindsym $mod+d exec --no-startup-id i3-dmenu-desktop --dmenu dmenu | ||||||
|  | # Open Galculator | ||||||
|  | bindsym XF86Calculator exec --no-startup-id galculator | ||||||
|  | # Open tidal-hifi | ||||||
|  | # This keybindg is rather unusual as it should imply "move window to $wstidal", | ||||||
|  | # but because this workspace should only be used for tidal-hifi, it's okay. | ||||||
|  | bindsym $mod+n scratchpad show | ||||||
|  | @ -0,0 +1,134 @@ | ||||||
|  | # vim: set fs=i3config | ||||||
|  | 
 | ||||||
|  | set $ws01 "" | ||||||
|  | set $ws02 "" | ||||||
|  | set $ws03 "" | ||||||
|  | set $ws04 "" | ||||||
|  | set $ws05 "" | ||||||
|  | # Workspace solely used for tidal-hifi | ||||||
|  | set $wstidal "T" | ||||||
|  | set $ws11 "α" | ||||||
|  | set $ws12 "β" | ||||||
|  | set $ws13 "γ" | ||||||
|  | set $ws14 "δ" | ||||||
|  | set $ws15 "ε" | ||||||
|  | set $ws21 "2:1" | ||||||
|  | set $ws22 "2:2" | ||||||
|  | set $ws23 "2:3" | ||||||
|  | set $ws24 "2:4" | ||||||
|  | set $ws25 "2:5" | ||||||
|  | 
 | ||||||
|  | workspace $ws01 output primary | ||||||
|  | workspace $ws02 output primary | ||||||
|  | workspace $ws03 output primary | ||||||
|  | workspace $ws04 output primary | ||||||
|  | workspace $ws05 output primary | ||||||
|  | workspace $wstidal output primary | ||||||
|  | workspace $ws11 output eDP-1 | ||||||
|  | workspace $ws12 output eDP-1 | ||||||
|  | workspace $ws13 output eDP-1 | ||||||
|  | workspace $ws14 output eDP-1 | ||||||
|  | workspace $ws15 output eDP-1 | ||||||
|  | workspace $ws21 output HDMI-1 | ||||||
|  | workspace $ws22 output HDMI-1 | ||||||
|  | workspace $ws23 output HDMI-1 | ||||||
|  | workspace $ws24 output HDMI-1 | ||||||
|  | workspace $ws25 output HDMI-1 | ||||||
|  | 
 | ||||||
|  | # =====WINDOW MANAGEMENT===== | ||||||
|  | # change focus | ||||||
|  | bindsym $mod+h focus left | ||||||
|  | bindsym $mod+j focus down | ||||||
|  | bindsym $mod+k focus up | ||||||
|  | bindsym $mod+l focus right | ||||||
|  | 
 | ||||||
|  | # move focused window | ||||||
|  | bindsym $mod+Shift+h move left | ||||||
|  | bindsym $mod+Shift+j move down | ||||||
|  | bindsym $mod+Shift+k move up | ||||||
|  | bindsym $mod+Shift+l move right | ||||||
|  | 
 | ||||||
|  | # enter fullscreen mode for the focused container | ||||||
|  | bindsym $mod+f fullscreen toggle | ||||||
|  | 
 | ||||||
|  | # kill focused window | ||||||
|  | bindsym $mod+x kill | ||||||
|  | 
 | ||||||
|  | # toggle tiling / floating | ||||||
|  | bindsym $mod+Shift+space floating toggle | ||||||
|  | bindsym $mod+Ctrl+space sticky toggle | ||||||
|  | 
 | ||||||
|  | # change focus between tiling / floating windows | ||||||
|  | bindsym $mod+space focus mode_toggle | ||||||
|  | 
 | ||||||
|  | #resize floating windows with mouse scroll: | ||||||
|  | bindsym --whole-window --border $mod+button4 resize shrink height 5 px or 5 ppt | ||||||
|  | bindsym --whole-window --border $mod+button5 resize grow height 5 px or 5 ppt | ||||||
|  | bindsym --whole-window --border $mod+shift+button4 resize shrink width 5 px or 5 ppt | ||||||
|  | bindsym --whole-window --border $mod+shift+button5 resize grow width 5 px or 5 ppt | ||||||
|  | 
 | ||||||
|  | # switch to main workspaces | ||||||
|  | bindsym $mod+y workspace $ws01 | ||||||
|  | bindsym $mod+u workspace $ws02 | ||||||
|  | bindsym $mod+i workspace $ws03 | ||||||
|  | bindsym $mod+o workspace $ws04 | ||||||
|  | bindsym $mod+p workspace $ws05 | ||||||
|  | # bindsym $mod+n workspace $wstidal | ||||||
|  | 
 | ||||||
|  | # move focused container to main workspace | ||||||
|  | bindsym $mod+Shift+y move container to workspace $ws01 | ||||||
|  | bindsym $mod+Shift+u move container to workspace $ws02 | ||||||
|  | bindsym $mod+Shift+i move container to workspace $ws03 | ||||||
|  | bindsym $mod+Shift+o move container to workspace $ws04 | ||||||
|  | bindsym $mod+Shift+p move container to workspace $ws05 | ||||||
|  | 
 | ||||||
|  | # Manage other workspaces | ||||||
|  | mode "eDP-1" { | ||||||
|  |     # switch to workspace | ||||||
|  |     bindsym y workspace $ws11 | ||||||
|  |     bindsym u workspace $ws12 | ||||||
|  |     bindsym i workspace $ws13 | ||||||
|  |     bindsym o workspace $ws14 | ||||||
|  |     bindsym p workspace $ws15 | ||||||
|  | 
 | ||||||
|  |     # move focused container to workspace | ||||||
|  |     bindsym Shift+y move container to workspace $ws11 | ||||||
|  |     bindsym Shift+u move container to workspace $ws12 | ||||||
|  |     bindsym Shift+i move container to workspace $ws13 | ||||||
|  |     bindsym Shift+o move container to workspace $ws14 | ||||||
|  |     bindsym Shift+p move container to workspace $ws15 | ||||||
|  | 
 | ||||||
|  |     # Go to HDMI-0 mode | ||||||
|  |     bindsym e mode "HDMI" | ||||||
|  | 
 | ||||||
|  |     # Go back to normal mode | ||||||
|  |     bindsym Escape mode "default" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | mode "HDMI" { | ||||||
|  |     # switch to workspace | ||||||
|  |     bindsym y workspace $ws21 | ||||||
|  |     bindsym u workspace $ws22 | ||||||
|  |     bindsym i workspace $ws23 | ||||||
|  |     bindsym o workspace $ws24 | ||||||
|  |     bindsym p workspace $ws25 | ||||||
|  | 
 | ||||||
|  |     # move focused container to workspace | ||||||
|  |     bindsym Shift+y move container to workspace $ws21 | ||||||
|  |     bindsym Shift+u move container to workspace $ws22 | ||||||
|  |     bindsym Shift+i move container to workspace $ws23 | ||||||
|  |     bindsym Shift+o move container to workspace $ws24 | ||||||
|  |     bindsym Shift+p move container to workspace $ws25 | ||||||
|  | 
 | ||||||
|  |     # Go to eDP-1-1 mode | ||||||
|  |     bindsym e mode "eDP-1" | ||||||
|  | 
 | ||||||
|  |     # Go back to normal mode | ||||||
|  |     bindsym Escape mode "default" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bindsym $mod+e mode "eDP-1" | ||||||
|  | 
 | ||||||
|  | # Force tidal-hifi to always spawn on $wstidal | ||||||
|  | # assign [class="tidal-hifi"] $wstidal | ||||||
|  | # no_focus [class="tidal-hifi"] | ||||||
|  | @ -0,0 +1,40 @@ | ||||||
|  | # =====GENERAL===== | ||||||
|  | # Main modifier; Mod1 is alt, Mod4 is Cmd/Windows | ||||||
|  | set $mod Mod1 | ||||||
|  | 
 | ||||||
|  | # Modifier for floating-related operations | ||||||
|  | floating_modifier $mod | ||||||
|  | 
 | ||||||
|  | # Layout for new workspaces; default means tiling | ||||||
|  | workspace_layout default | ||||||
|  | 
 | ||||||
|  | #do not show titlebar on windows:  | ||||||
|  | default_border pixel | ||||||
|  | 
 | ||||||
|  | # thin borders | ||||||
|  | hide_edge_borders both | ||||||
|  | 
 | ||||||
|  | # Size of gaps between windows | ||||||
|  | gaps inner 20 | ||||||
|  | gaps outer 10 | ||||||
|  | 
 | ||||||
|  | # Font for window titles & bar, unless specified otherwise | ||||||
|  | font pango:Noto Sans Regular 8 | ||||||
|  | 
 | ||||||
|  | # Include all other configuration files | ||||||
|  | include conf.d/*.conf | ||||||
|  | 
 | ||||||
|  | # =====COLORS===== | ||||||
|  | set $bg-color            #2f343f | ||||||
|  | set $inactive-bg-color   #2f343f | ||||||
|  | set $text-color          #f3f4f5 | ||||||
|  | set $inactive-text-color #676e7d | ||||||
|  | set $urgent-bg-color     #e53935 | ||||||
|  | set $indicator-color     #a0a0a0 | ||||||
|  | 
 | ||||||
|  | # set window colors | ||||||
|  | #                       border             background         text                 indicator | ||||||
|  | client.focused          $bg-color          $bg-color          $text-color          $indicator-color | ||||||
|  | client.unfocused        $inactive-bg-color $inactive-bg-color $inactive-text-color $indicator-color | ||||||
|  | client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color $indicator-color | ||||||
|  | client.urgent           $urgent-bg-color   $urgent-bg-color   $text-color          $indicator-color | ||||||
|  | @ -0,0 +1,155 @@ | ||||||
|  | # i3blocks config file | ||||||
|  | 
 | ||||||
|  | # source is available here: | ||||||
|  | # https://raw.githubusercontent.com/endeavouros-team/i3-EndeavourOS/master/.config/i3/i3blocks.conf | ||||||
|  | # Maintainer: joekamprad [joekamprad@endeavouros.com] | ||||||
|  | # created for i3wm setup on EndeavourOS | ||||||
|  | # https://endeavouros.com | ||||||
|  | 
 | ||||||
|  | # cheatsheet for icon fonts used on the block-bar: | ||||||
|  | # https://fontawesome.com/cheatsheet | ||||||
|  | 
 | ||||||
|  | # Please see man i3blocks for a complete reference! | ||||||
|  | # The man page is also hosted at http://vivien.github.io/i3blocks | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # List of valid properties: | ||||||
|  | # | ||||||
|  | # align | ||||||
|  | # color | ||||||
|  | # command | ||||||
|  | # full_text | ||||||
|  | # instance | ||||||
|  | # interval | ||||||
|  | # label | ||||||
|  | # min_width | ||||||
|  | # name | ||||||
|  | # separator | ||||||
|  | # separator_block_width | ||||||
|  | # short_text | ||||||
|  | # signal | ||||||
|  | # urgent | ||||||
|  | 
 | ||||||
|  | # Global properties | ||||||
|  | # | ||||||
|  | # The top properties below are applied to every block, but can be overridden. | ||||||
|  | separator=false | ||||||
|  | markup=pango | ||||||
|  | 
 | ||||||
|  | #[apps] | ||||||
|  | #full_text=Applications: | ||||||
|  | #separator=true | ||||||
|  | 
 | ||||||
|  | #[terminal] | ||||||
|  | #full_text=Terminal  | ||||||
|  | #color=#807dfe | ||||||
|  | #command=xfce4-terminal | ||||||
|  | #separator=true | ||||||
|  | # | ||||||
|  | #[browser] | ||||||
|  | #full_text=Browser  | ||||||
|  | #color=#ff7f81 | ||||||
|  | #command=firefox | ||||||
|  | #separator=true | ||||||
|  | # | ||||||
|  | #[files] | ||||||
|  | #full_text=Files  | ||||||
|  | #color=#7f3fbf | ||||||
|  | #command=thunar ~/ | ||||||
|  | #separator=true | ||||||
|  | 
 | ||||||
|  | #[mail] | ||||||
|  | #full_text=Mail  | ||||||
|  | #color=#dbcb75 | ||||||
|  | #command=thunderbird | ||||||
|  | #separator=true | ||||||
|  | 
 | ||||||
|  | #[bandwidth] | ||||||
|  | #command=~/.config/i3/scripts/bandwidth2 | ||||||
|  | #color=#e07221 | ||||||
|  | #interval=persist | ||||||
|  | 
 | ||||||
|  | # [net] | ||||||
|  | # label=SSID:  | ||||||
|  | # command=echo "$(LANG=C nmcli d | grep connected  | awk '{print $4}')" | ||||||
|  | # color=#e07221 | ||||||
|  | # interval=5 | ||||||
|  | # separator=true | ||||||
|  | 
 | ||||||
|  | # Players online on Karaoke server | ||||||
|  | [karaoke] | ||||||
|  | label=M | ||||||
|  | command=mcstatus rustybever.be status | grep -o '[0-9]*/[0-9]*' | ||||||
|  | color=#96c6f8 | ||||||
|  | interval=60 | ||||||
|  | 
 | ||||||
|  | # Memory usage | ||||||
|  | # | ||||||
|  | # The type defaults to "mem" if the instance is not specified. | ||||||
|  | [memory] | ||||||
|  | label= | ||||||
|  | command=~/.config/i3/scripts/memory | ||||||
|  | color=#96c6f8 | ||||||
|  | interval=30 | ||||||
|  | 
 | ||||||
|  | # Disk usage | ||||||
|  | # | ||||||
|  | # The directory defaults to $HOME if the instance is not specified. | ||||||
|  | # The script may be called with a optional argument to set the alert | ||||||
|  | # (defaults to 10 for 10%). | ||||||
|  | [disk] | ||||||
|  | label=~ | ||||||
|  | instance=/home | ||||||
|  | command=~/.config/i3/scripts/disk | ||||||
|  | color=#96c6f8 | ||||||
|  | interval=30 | ||||||
|  | 
 | ||||||
|  | [disk] | ||||||
|  | label= | ||||||
|  | instance=/ | ||||||
|  | command=~/.config/i3/scripts/disk | ||||||
|  | color=#96c6f8 | ||||||
|  | interval=30 | ||||||
|  | 
 | ||||||
|  | [CPU-temperature] | ||||||
|  | label=CPU | ||||||
|  | command=~/.config/i3/scripts/temperature --chip coretemp-isa-0000 | ||||||
|  | color=#96c6f8 | ||||||
|  | interval=5 | ||||||
|  | 
 | ||||||
|  | [cpu_usage] | ||||||
|  | label= | ||||||
|  | interval=5 | ||||||
|  | command=~/.config/i3/scripts/cpu_usage | ||||||
|  | color=#96c6f8 | ||||||
|  | #min_width=CPU: 100.00% | ||||||
|  | 
 | ||||||
|  | # Battery indicator | ||||||
|  | # | ||||||
|  | # The battery instance defaults to 0. | ||||||
|  | [battery] | ||||||
|  | command=~/.config/i3/scripts/battery.sh | ||||||
|  | label= | ||||||
|  | #instance=1 | ||||||
|  | interval=30 | ||||||
|  | 
 | ||||||
|  | # Volume indicator | ||||||
|  | [volume-pulseaudio] | ||||||
|  | label=Vol: | ||||||
|  | command=~/.config/i3/scripts/volume | ||||||
|  | color=#208273 | ||||||
|  | instance=Master | ||||||
|  | interval=1 | ||||||
|  | 
 | ||||||
|  | [time] | ||||||
|  | label= | ||||||
|  | command=date '+%a %d %b %Y %H:%M:%S' | ||||||
|  | color=#dbcb75 | ||||||
|  | interval=1 | ||||||
|  | 
 | ||||||
|  | #[shutdown_menu] | ||||||
|  | #full_text=  | ||||||
|  | #command=~/.config/i3/scripts/shutdown_menu -p rofi -c; | ||||||
|  | #color=#96c6f8 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,22 @@ | ||||||
|  | #!/usr/bin/env sh | ||||||
|  | 
 | ||||||
|  | # Setup displays layout | ||||||
|  | autorandr --change | ||||||
|  | 
 | ||||||
|  | # Display wallpapers | ||||||
|  | nitrogen --restore | ||||||
|  | 
 | ||||||
|  | # Increase key repeat speed | ||||||
|  | xset r rate 150 30 | ||||||
|  | 
 | ||||||
|  | # cur_layout="$(autorandr --current)" | ||||||
|  | 
 | ||||||
|  | # # Properly set DPI & keyboard layout | ||||||
|  | # if [ "$cur_layout" = loftie ]; then | ||||||
|  | #     xrandr --dpi 120 | ||||||
|  | #     setxkbmap -layout us -variant altgr-intl | ||||||
|  | 
 | ||||||
|  | # # Display sys tray on correct display | ||||||
|  | # elif [ "$cur_layout" = default ]; then | ||||||
|  | #     xrandr --output eDP-1-1 --primary | ||||||
|  | # fi | ||||||
|  | @ -0,0 +1,9 @@ | ||||||
|  | #!/usr/bin/env sh | ||||||
|  | 
 | ||||||
|  | CONF="${HOME}/.config/i3/config" | ||||||
|  | 
 | ||||||
|  | if grep -q '$mod Mod4' "${CONF}"; then | ||||||
|  |     sed -i 's/$mod Mod4/$mod Mod1/' "${CONF}" | ||||||
|  | else | ||||||
|  |     sed -i 's/$mod Mod1/$mod Mod4/' "${CONF}" | ||||||
|  | fi | ||||||
|  | @ -0,0 +1,62 @@ | ||||||
|  | [theme] | ||||||
|  | theme = "plain" | ||||||
|  | 
 | ||||||
|  | [icons] | ||||||
|  | icons = "awesome5" | ||||||
|  | 
 | ||||||
|  | [[block]] | ||||||
|  | block = "disk_space" | ||||||
|  | path = "/" | ||||||
|  | # format = "/" | ||||||
|  | info_type = "available" | ||||||
|  | # unit = "GB" | ||||||
|  | interval = 20 | ||||||
|  | warning = 20.0 | ||||||
|  | alert = 10.0 | ||||||
|  | 
 | ||||||
|  | [[block]] | ||||||
|  | block = "disk_space" | ||||||
|  | path = "/home" | ||||||
|  | # format = "/home" | ||||||
|  | info_type = "available" | ||||||
|  | # unit = "GB" | ||||||
|  | interval = 20 | ||||||
|  | warning = 20.0 | ||||||
|  | alert = 10.0 | ||||||
|  | 
 | ||||||
|  | [[block]] | ||||||
|  | block = "memory" | ||||||
|  | # display_type = "memory" | ||||||
|  | format = "$mem_used_percents $swap_used_percents" | ||||||
|  | # format_swap = "{swap_used_percents}" | ||||||
|  | 
 | ||||||
|  | [[block]] | ||||||
|  | block = "cpu" | ||||||
|  | interval = 1 | ||||||
|  | format = "$utilization $frequency" | ||||||
|  | 
 | ||||||
|  | [[block]] | ||||||
|  | block = "temperature" | ||||||
|  | # collapsed = false | ||||||
|  | interval = 1 | ||||||
|  | chip = "*-isa-*" | ||||||
|  | 
 | ||||||
|  | # [[block]] | ||||||
|  | # block = "nvidia_gpu" | ||||||
|  | # label = "GTX 1060" | ||||||
|  | # show_memory = false | ||||||
|  | # show_clocks = true | ||||||
|  | # interval = 1 | ||||||
|  | # if_command = "command -v nvidia-smi" | ||||||
|  | 
 | ||||||
|  | [[block]] | ||||||
|  | block = "sound" | ||||||
|  | 
 | ||||||
|  | [[block]] | ||||||
|  | block = "battery" | ||||||
|  | format = "$percentage $time" | ||||||
|  | 
 | ||||||
|  | [[block]] | ||||||
|  | block = "time" | ||||||
|  | interval = 1 | ||||||
|  | # format = "%a %d/%m %R" | ||||||
|  | @ -0,0 +1,104 @@ | ||||||
|  | #!/usr/bin/env bash | ||||||
|  | # | ||||||
|  | # Copyright (C) 2015 James Murphy | ||||||
|  | # Licensed under the terms of the GNU GPL v2 only. | ||||||
|  | # | ||||||
|  | # i3blocks blocklet script to monitor bandwidth usage | ||||||
|  | 
 | ||||||
|  | iface="${BLOCK_INSTANCE}" | ||||||
|  | iface="${IFACE:-$iface}" | ||||||
|  | dt="${DT:-3}" | ||||||
|  | unit="${UNIT:-Mb}" | ||||||
|  | LABEL="${LABEL:-<span font='FontAwesome'> </span>}" # down arrow up arrow | ||||||
|  | printf_command="${PRINTF_COMMAND:-"printf \"${LABEL}%-5.1f/%5.1f %s/s\\n\", rx, wx, unit;"}" | ||||||
|  | 
 | ||||||
|  | function default_interface { | ||||||
|  |     ip route | awk '/^default via/ {print $5; exit}' | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function check_proc_net_dev { | ||||||
|  |     if [ ! -f "/proc/net/dev" ]; then | ||||||
|  |         echo "/proc/net/dev not found" | ||||||
|  |         exit 1 | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function list_interfaces { | ||||||
|  |     check_proc_net_dev | ||||||
|  |     echo "Interfaces in /proc/net/dev:" | ||||||
|  |     grep -o "^[^:]\\+:" /proc/net/dev | tr -d " :" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | while getopts i:t:u:p:lh opt; do | ||||||
|  |     case "$opt" in | ||||||
|  |         i) iface="$OPTARG" ;; | ||||||
|  |         t) dt="$OPTARG" ;; | ||||||
|  |         u) unit="$OPTARG" ;; | ||||||
|  |         p) printf_command="$OPTARG" ;; | ||||||
|  |         l) list_interfaces && exit 0 ;; | ||||||
|  |         h) printf \ | ||||||
|  | "Usage: bandwidth3 [-i interface] [-t time] [-u unit] [-p printf_command] [-l] [-h] | ||||||
|  | Options: | ||||||
|  | -i\tNetwork interface to measure. Default determined using \`ip route\`. | ||||||
|  | -t\tTime interval in seconds between measurements. Default: 3 | ||||||
|  | -u\tUnits to measure bytes in. Default: Mb | ||||||
|  | \tAllowed units: Kb, KB, Mb, MB, Gb, GB, Tb, TB | ||||||
|  | \tUnits may have optional it/its/yte/ytes on the end, e.g. Mbits, KByte | ||||||
|  | -p\tAwk command to be called after a measurement is made.  | ||||||
|  | \tDefault: printf \"<span font='FontAwesome'>  </span>%%-5.1f/%%5.1f %%s/s\\\\n\", rx, wx, unit; | ||||||
|  | \tExposed variables: rx, wx, tx, unit, iface | ||||||
|  | -l\tList available interfaces in /proc/net/dev | ||||||
|  | -h\tShow this help text | ||||||
|  | " && exit 0;; | ||||||
|  |     esac | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | check_proc_net_dev | ||||||
|  | 
 | ||||||
|  | iface="${iface:-$(default_interface)}" | ||||||
|  | while [ -z "$iface" ]; do | ||||||
|  |     echo No default interface | ||||||
|  |     sleep "$dt" | ||||||
|  |     iface=$(default_interface) | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | case "$unit" in | ||||||
|  |     Kb|Kbit|Kbits)   bytes_per_unit=$((1024 / 8));; | ||||||
|  |     KB|KByte|KBytes) bytes_per_unit=$((1024));; | ||||||
|  |     Mb|Mbit|Mbits)   bytes_per_unit=$((1024 * 1024 / 8));; | ||||||
|  |     MB|MByte|MBytes) bytes_per_unit=$((1024 * 1024));; | ||||||
|  |     Gb|Gbit|Gbits)   bytes_per_unit=$((1024 * 1024 * 1024 / 8));; | ||||||
|  |     GB|GByte|GBytes) bytes_per_unit=$((1024 * 1024 * 1024));; | ||||||
|  |     Tb|Tbit|Tbits)   bytes_per_unit=$((1024 * 1024 * 1024 * 1024 / 8));; | ||||||
|  |     TB|TByte|TBytes) bytes_per_unit=$((1024 * 1024 * 1024 * 1024));; | ||||||
|  |     *) echo Bad unit "$unit" && exit 1;; | ||||||
|  | esac | ||||||
|  | 
 | ||||||
|  | scalar=$((bytes_per_unit * dt)) | ||||||
|  | init_line=$(cat /proc/net/dev | grep "^[ ]*$iface:") | ||||||
|  | if [ -z "$init_line" ]; then | ||||||
|  |     echo Interface not found in /proc/net/dev: "$iface" | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | init_received=$(awk '{print $2}' <<< $init_line) | ||||||
|  | init_sent=$(awk '{print $10}' <<< $init_line) | ||||||
|  | 
 | ||||||
|  | (while true; do cat /proc/net/dev; sleep "$dt"; done) |\ | ||||||
|  |     stdbuf -oL grep "^[ ]*$iface:" |\ | ||||||
|  |     awk -v scalar="$scalar" -v unit="$unit" -v iface="$iface" ' | ||||||
|  | BEGIN{old_received='"$init_received"';old_sent='"$init_sent"'} | ||||||
|  | { | ||||||
|  |     received=$2 | ||||||
|  |     sent=$10 | ||||||
|  |     rx=(received-old_received)/scalar; | ||||||
|  |     wx=(sent-old_sent)/scalar; | ||||||
|  |     tx=rx+wr; | ||||||
|  |     old_received=received; | ||||||
|  |     old_sent=sent; | ||||||
|  |     if(rx >= 0 && wx >= 0){ | ||||||
|  |         '"$printf_command"'; | ||||||
|  |         fflush(stdout); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | ' | ||||||
|  | @ -0,0 +1,18 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | #simple Shellscript for i3blocks on Pinebook pro | ||||||
|  | #05012020 geri123@gmx.net Gerhard S. | ||||||
|  | #battery-symbols: on Manjaro you need the awesome-terminal-fonts package installed! | ||||||
|  | PERCENT=$(cat /sys/class/power_supply/cw2015-battery/capacity) | ||||||
|  | STATUS=$(cat /sys/class/power_supply/cw2015-battery/status) | ||||||
|  | case $(( | ||||||
|  |  $PERCENT >= 0 && $PERCENT <= 20 ? 1 : | ||||||
|  |  $PERCENT > 20 && $PERCENT <= 40 ? 2 : | ||||||
|  |  $PERCENT > 40 && $PERCENT <= 60 ? 3 : | ||||||
|  |  $PERCENT > 60 && $PERCENT <= 80 ? 4 : 5)) in | ||||||
|  | # | ||||||
|  |        (1) echo $STATUS:"" :$PERCENT%;; | ||||||
|  |        (2) echo $STATUS:"" :$PERCENT%;; | ||||||
|  |        (3) echo $STATUS:"" :$PERCENT%;; | ||||||
|  |        (4) echo $STATUS:"" :$PERCENT%;; | ||||||
|  |        (5) echo $STATUS:"" :$PERCENT%;; | ||||||
|  | esac | ||||||
|  | @ -0,0 +1,89 @@ | ||||||
|  | #!/usr/bin/perl | ||||||
|  | # | ||||||
|  | # Copyright 2014 Pierre Mavro <deimos@deimos.fr> | ||||||
|  | # Copyright 2014 Vivien Didelot <vivien@didelot.org> | ||||||
|  | # | ||||||
|  | # Licensed under the terms of the GNU GPL v3, or any later version. | ||||||
|  | # | ||||||
|  | # This script is meant to use with i3blocks. It parses the output of the "acpi" | ||||||
|  | # command (often provided by a package of the same name) to read the status of | ||||||
|  | # the battery, and eventually its remaining time (to full charge or discharge). | ||||||
|  | # | ||||||
|  | # The color will gradually change for a percentage below 85%, and the urgency | ||||||
|  | # (exit code 33) is set if there is less that 5% remaining. | ||||||
|  | 
 | ||||||
|  | use strict; | ||||||
|  | use warnings; | ||||||
|  | use utf8; | ||||||
|  | 
 | ||||||
|  | my $acpi; | ||||||
|  | my $status; | ||||||
|  | my $percent; | ||||||
|  | my $ac_adapt; | ||||||
|  | my $full_text; | ||||||
|  | my $short_text; | ||||||
|  | my $bat_number = $ENV{BLOCK_INSTANCE} || 0; | ||||||
|  | 
 | ||||||
|  | # read the first line of the "acpi" command output | ||||||
|  | open (ACPI, "acpi -b | grep 'Battery $bat_number' |") or die; | ||||||
|  | $acpi = <ACPI>; | ||||||
|  | close(ACPI); | ||||||
|  | 
 | ||||||
|  | # fail on unexpected output | ||||||
|  | if ($acpi !~ /: (\w+), (\d+)%/) { | ||||||
|  | 	die "$acpi\n"; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | $status = $1; | ||||||
|  | $percent = $2; | ||||||
|  | $full_text = "$percent%"; | ||||||
|  | 
 | ||||||
|  | if ($status eq 'Discharging') { | ||||||
|  | 	$full_text .= ' DIS'; | ||||||
|  | } elsif ($status eq 'Charging') { | ||||||
|  | 	$full_text .= ' CHR'; | ||||||
|  | } elsif ($status eq 'Unknown') { | ||||||
|  | 	open (AC_ADAPTER, "acpi -a |") or die; | ||||||
|  | 	$ac_adapt = <AC_ADAPTER>; | ||||||
|  | 	close(AC_ADAPTER); | ||||||
|  | 
 | ||||||
|  | 	if ($ac_adapt =~ /: ([\w-]+)/) { | ||||||
|  | 		$ac_adapt = $1; | ||||||
|  | 
 | ||||||
|  | 		if ($ac_adapt eq 'on-line') { | ||||||
|  | 			$full_text .= ' CHR'; | ||||||
|  | 		} elsif ($ac_adapt eq 'off-line') { | ||||||
|  | 			$full_text .= ' DIS'; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | $short_text = $full_text; | ||||||
|  | 
 | ||||||
|  | if ($acpi =~ /(\d\d:\d\d):/) { | ||||||
|  | 	$full_text .= " ($1)"; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # print text | ||||||
|  | print "$full_text\n"; | ||||||
|  | print "$short_text\n"; | ||||||
|  | 
 | ||||||
|  | # consider color and urgent flag only on discharge | ||||||
|  | if ($status eq 'Discharging') { | ||||||
|  | 
 | ||||||
|  | 	if ($percent < 20) { | ||||||
|  | 		print "#FF0000\n"; | ||||||
|  | 	} elsif ($percent < 40) { | ||||||
|  | 		print "#FFAE00\n"; | ||||||
|  | 	} elsif ($percent < 60) { | ||||||
|  | 		print "#FFF600\n"; | ||||||
|  | 	} elsif ($percent < 85) { | ||||||
|  | 		print "#A8FF00\n"; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if ($percent < 5) { | ||||||
|  | 		exit(33); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | exit(0); | ||||||
|  | @ -0,0 +1,62 @@ | ||||||
|  | #!/usr/bin/perl | ||||||
|  | # | ||||||
|  | # Copyright 2014 Pierre Mavro <deimos@deimos.fr> | ||||||
|  | # Copyright 2014 Vivien Didelot <vivien@didelot.org> | ||||||
|  | # Copyright 2014 Andreas Guldstrand <andreas.guldstrand@gmail.com> | ||||||
|  | # | ||||||
|  | # Licensed under the terms of the GNU GPL v3, or any later version. | ||||||
|  | 
 | ||||||
|  | use strict; | ||||||
|  | use warnings; | ||||||
|  | use utf8; | ||||||
|  | use Getopt::Long; | ||||||
|  | 
 | ||||||
|  | # default values | ||||||
|  | my $t_warn = $ENV{T_WARN} // 50; | ||||||
|  | my $t_crit = $ENV{T_CRIT} // 80; | ||||||
|  | my $cpu_usage = -1; | ||||||
|  | my $decimals = $ENV{DECIMALS} // 2; | ||||||
|  | my $label = $ENV{LABEL} // ""; | ||||||
|  | 
 | ||||||
|  | sub help { | ||||||
|  |     print "Usage: cpu_usage [-w <warning>] [-c <critical>] [-d <decimals>]\n"; | ||||||
|  |     print "-w <percent>: warning threshold to become yellow\n"; | ||||||
|  |     print "-c <percent>: critical threshold to become red\n"; | ||||||
|  |     print "-d <decimals>:  Use <decimals> decimals for percentage (default is $decimals) \n";  | ||||||
|  |     exit 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | GetOptions("help|h" => \&help, | ||||||
|  |            "w=i"    => \$t_warn, | ||||||
|  |            "c=i"    => \$t_crit, | ||||||
|  |            "d=i"    => \$decimals, | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | # Get CPU usage | ||||||
|  | $ENV{LC_ALL}="en_US"; # if mpstat is not run under en_US locale, things may break, so make sure it is | ||||||
|  | open (MPSTAT, 'mpstat 1 1 |') or die; | ||||||
|  | while (<MPSTAT>) { | ||||||
|  |     if (/^.*\s+(\d+\.\d+)[\s\x00]?$/) { | ||||||
|  |         $cpu_usage = 100 - $1; # 100% - %idle | ||||||
|  |         last; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | close(MPSTAT); | ||||||
|  | 
 | ||||||
|  | $cpu_usage eq -1 and die 'Can\'t find CPU information'; | ||||||
|  | 
 | ||||||
|  | # Print short_text, full_text | ||||||
|  | print "${label}"; | ||||||
|  | printf "%.${decimals}f%%\n", $cpu_usage; | ||||||
|  | print "${label}"; | ||||||
|  | printf "%.${decimals}f%%\n", $cpu_usage; | ||||||
|  | 
 | ||||||
|  | # Print color, if needed | ||||||
|  | if ($cpu_usage >= $t_crit) { | ||||||
|  |     print "#FF0000\n"; | ||||||
|  |     exit 33; | ||||||
|  | } elsif ($cpu_usage >= $t_warn) { | ||||||
|  |     print "#FFFC00\n"; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | exit 0; | ||||||
|  | @ -0,0 +1,48 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | # Copyright (C) 2014 Julien Bonjean <julien@bonjean.info> | ||||||
|  | 
 | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | DIR="${DIR:-$BLOCK_INSTANCE}" | ||||||
|  | DIR="${DIR:-$HOME}" | ||||||
|  | ALERT_LOW="${ALERT_LOW:-$1}" | ||||||
|  | ALERT_LOW="${ALERT_LOW:-10}" # color will turn red under this value (default: 10%) | ||||||
|  | 
 | ||||||
|  | LOCAL_FLAG="-l" | ||||||
|  | if [ "$1" = "-n" ] || [ "$2" = "-n" ]; then | ||||||
|  |     LOCAL_FLAG="" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | df -h -P $LOCAL_FLAG "$DIR" | awk -v label="$LABEL" -v alert_low=$ALERT_LOW ' | ||||||
|  | /\/.*/ { | ||||||
|  | 	# full text | ||||||
|  | 	print label $4 | ||||||
|  | 
 | ||||||
|  | 	# short text | ||||||
|  | 	print label $4 | ||||||
|  | 
 | ||||||
|  | 	use=$5 | ||||||
|  | 
 | ||||||
|  | 	# no need to continue parsing | ||||||
|  | 	exit 0 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | END { | ||||||
|  | 	gsub(/%$/,"",use) | ||||||
|  | 	if (100 - use < alert_low) { | ||||||
|  | 		# color | ||||||
|  | 		print "#FF0000" | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | ' | ||||||
|  | @ -0,0 +1,7 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | while [ "$select" != "NO" -a "$select" != "YES" ]; do | ||||||
|  |     select=$(echo -e 'NO\nYES' | dmenu -nb '#2f343f' -nf '#f3f4f5' -sb '#9575cd' -sf '#f3f4f5' -fn '-*-*-medium-r-normal-*-*-*-*-*-*-100-*-*' -i -p "Are you sure you want to logout?") | ||||||
|  |     [ -z "$select" ] && exit 0 | ||||||
|  | done | ||||||
|  | [ "$select" = "NO" ] && exit 0 | ||||||
|  | i3-msg exit | ||||||
|  | @ -0,0 +1,10 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | MAX_DESKTOPS=20 | ||||||
|  | 
 | ||||||
|  | WORKSPACES=$(seq -s '\n' 1 1 ${MAX_DESKTOPS}) | ||||||
|  | 
 | ||||||
|  | EMPTY_WORKSPACE=$( (i3-msg -t get_workspaces | tr ',' '\n' | grep num | awk -F:  '{print int($2)}' ; \ | ||||||
|  |             echo -e ${WORKSPACES} ) | sort -n | uniq -u | head -n 1) | ||||||
|  | 
 | ||||||
|  | i3-msg workspace ${EMPTY_WORKSPACE} | ||||||
|  | @ -0,0 +1,69 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | # Copyright (C) 2014 Julien Bonjean <julien@bonjean.info> | ||||||
|  | 
 | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | TYPE="${BLOCK_INSTANCE:-mem}" | ||||||
|  | 
 | ||||||
|  | awk -v type=$TYPE ' | ||||||
|  | /^MemTotal:/ { | ||||||
|  | 	mem_total=$2 | ||||||
|  | } | ||||||
|  | /^MemFree:/ { | ||||||
|  | 	mem_free=$2 | ||||||
|  | } | ||||||
|  | /^Buffers:/ { | ||||||
|  | 	mem_free+=$2 | ||||||
|  | } | ||||||
|  | /^Cached:/ { | ||||||
|  | 	mem_free+=$2 | ||||||
|  | } | ||||||
|  | /^SwapTotal:/ { | ||||||
|  | 	swap_total=$2 | ||||||
|  | } | ||||||
|  | /^SwapFree:/ { | ||||||
|  | 	swap_free=$2 | ||||||
|  | } | ||||||
|  | END { | ||||||
|  | 	if (type == "swap") { | ||||||
|  | 		free=swap_free/1024/1024 | ||||||
|  | 		used=(swap_total-swap_free)/1024/1024 | ||||||
|  | 		total=swap_total/1024/1024 | ||||||
|  | 	} else { | ||||||
|  | 		free=mem_free/1024/1024 | ||||||
|  | 		used=(mem_total-mem_free)/1024/1024 | ||||||
|  | 		total=mem_total/1024/1024 | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	pct=0 | ||||||
|  | 	if (total > 0) { | ||||||
|  | 		pct=used/total*100 | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	# full text | ||||||
|  | 	printf("%.1fG/%.1fG (%.f%%)\n", used, total, pct) | ||||||
|  | 
 | ||||||
|  | 	# short text | ||||||
|  | 	printf("%.f%%\n", pct) | ||||||
|  | 
 | ||||||
|  | 	# color | ||||||
|  | 	if (pct > 90) { | ||||||
|  | 		print("#FF0000") | ||||||
|  | 	} else if (pct > 80) { | ||||||
|  | 		print("#FFAE00") | ||||||
|  | 	} else if (pct > 70) { | ||||||
|  | 		print("#FFF600") | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | ' /proc/meminfo | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | # Weather | ||||||
|  | [Weather] | ||||||
|  | command=~/.config/i3/scripts/openweather.sh | ||||||
|  | interval=1800 | ||||||
|  | color=#7275b3 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,40 @@ | ||||||
|  | #!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | command -v jq >/dev/null 2>&1 || { echo >&2 "Program 'jq' required but it is not installed.   | ||||||
|  | Aborting."; exit 1; } | ||||||
|  | command -v wget >/dev/null 2>&1 || { echo >&2 "Program 'wget' required but is not installed.   | ||||||
|  | Aborting."; exit 1; } | ||||||
|  | 
 | ||||||
|  | APIKEY="get your key first" | ||||||
|  | #ZIPCODE="1234" | ||||||
|  | CITY_ID="Get your City ID first" | ||||||
|  | URL="http://api.openweathermap.org/data/2.5/weather?id=${CITY_ID}&units=metric&APPID=${APIKEY}" | ||||||
|  | 
 | ||||||
|  | WEATHER_RESPONSE=$(wget -qO- "${URL}") | ||||||
|  | 
 | ||||||
|  | WEATHER_CONDITION=$(echo $WEATHER_RESPONSE | jq '.weather[0].main' | sed 's/"//g') | ||||||
|  | WEATHER_TEMP=$(echo $WEATHER_RESPONSE | jq '.main.temp') | ||||||
|  | WIND_DIR=$( echo "$WEATHER_RESPONSE" | jq '.wind.deg') | ||||||
|  | WIND_SPEED=$( echo "$WEATHER_RESPONSE" | jq '.wind.speed') | ||||||
|  | 
 | ||||||
|  | WIND_SPEED=$(awk "BEGIN {print 60*60*$WIND_SPEED/1000}") | ||||||
|  | WIND_DIR=$(awk "BEGIN {print int(($WIND_DIR % 360)/22.5)}") | ||||||
|  | DIR_ARRAY=( N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW N ) | ||||||
|  | WIND_DIR=${DIR_ARRAY[WIND_DIR]} | ||||||
|  | 
 | ||||||
|  | case $WEATHER_CONDITION in | ||||||
|  |   'Clouds') | ||||||
|  |     WEATHER_ICON="" | ||||||
|  |     ;; | ||||||
|  |   'Rain') | ||||||
|  |     WEATHER_ICON="" | ||||||
|  |     ;; | ||||||
|  |   'Snow') | ||||||
|  |     WEATHER_ICON="" | ||||||
|  |     ;; | ||||||
|  |   *) | ||||||
|  |     WEATHER_ICON="" | ||||||
|  |     ;; | ||||||
|  | esac | ||||||
|  | 
 | ||||||
|  | echo "${WEATHER_ICON}  ${WEATHER_TEMP}°C: ${WIND_SPEED} km/h ${WIND_DIR}" | ||||||
|  | @ -0,0 +1,186 @@ | ||||||
|  | #!/usr/bin/env bash | ||||||
|  | # | ||||||
|  | # Use rofi/zenity to change system runstate thanks to systemd. | ||||||
|  | # | ||||||
|  | # Note: this currently relies on associative array support in the shell. | ||||||
|  | # | ||||||
|  | # Inspired from i3pystatus wiki: | ||||||
|  | # https://github.com/enkore/i3pystatus/wiki/Shutdown-Menu | ||||||
|  | # | ||||||
|  | # Copyright 2015 Benjamin Chrétien <chretien at lirmm dot fr> | ||||||
|  | # | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | ####################################################################### | ||||||
|  | #                            BEGIN CONFIG                             # | ||||||
|  | ####################################################################### | ||||||
|  | 
 | ||||||
|  | # Use a custom lock script | ||||||
|  | LOCKSCRIPT="light-locker-command -l" | ||||||
|  | 
 | ||||||
|  | # Colors: FG (foreground), BG (background), HL (highlighted) | ||||||
|  | FG_COLOR="${FG_COLOR:-#bbbbbb}" | ||||||
|  | BG_COLOR="${BG_COLOR:-#111111}" | ||||||
|  | HLFG_COLOR="${HLFG_COLOR:-#111111}" | ||||||
|  | HLBG_COLOR="${HLBG_COLOR:-#bbbbbb}" | ||||||
|  | BORDER_COLOR="${BORDER_COLOR:-#222222}" | ||||||
|  | 
 | ||||||
|  | # Options not related to colors | ||||||
|  | ROFI_TEXT="${ROFI_TEXT:-Menu:}" | ||||||
|  | ROFI_OPTIONS=(${ROFI_OPTIONS:--width 11 -location 3 -hide-scrollbar -bw 2}) | ||||||
|  | 
 | ||||||
|  | # Zenity options | ||||||
|  | ZENITY_TITLE="${ZENITY_TITLE:-Menu}" | ||||||
|  | ZENITY_TEXT="${ZENITY_TEXT:-Action:}" | ||||||
|  | ZENITY_OPTIONS=(${ZENITY_OPTIONS:---column= --hide-header}) | ||||||
|  | 
 | ||||||
|  | ####################################################################### | ||||||
|  | #                             END CONFIG                              # | ||||||
|  | ####################################################################### | ||||||
|  | 
 | ||||||
|  | # Whether to ask for user's confirmation | ||||||
|  | enable_confirmation=${ENABLE_CONFIRMATIONS:-false} | ||||||
|  | 
 | ||||||
|  | # Preferred launcher if both are available | ||||||
|  | preferred_launcher="${LAUNCHER:-rofi}" | ||||||
|  | 
 | ||||||
|  | usage="$(basename "$0") [-h] [-c] [-p name] -- display a menu for shutdown, reboot, lock etc. | ||||||
|  | 
 | ||||||
|  | where: | ||||||
|  |     -h  show this help text | ||||||
|  |     -c  ask for user confirmation | ||||||
|  |     -p  preferred launcher (rofi or zenity) | ||||||
|  | 
 | ||||||
|  | This script depends on: | ||||||
|  |   - systemd, | ||||||
|  |   - i3, | ||||||
|  |   - rofi or zenity." | ||||||
|  | 
 | ||||||
|  | # Check whether the user-defined launcher is valid | ||||||
|  | launcher_list=(rofi zenity) | ||||||
|  | function check_launcher() { | ||||||
|  |   if [[ ! "${launcher_list[@]}" =~ (^|[[:space:]])"$1"($|[[:space:]]) ]]; then | ||||||
|  |     echo "Supported launchers: ${launcher_list[*]}" | ||||||
|  |     exit 1 | ||||||
|  |   else | ||||||
|  |     # Get array with unique elements and preferred launcher first | ||||||
|  |     # Note: uniq expects a sorted list, so we cannot use it | ||||||
|  |     i=1 | ||||||
|  |     launcher_list=($(for l in "$1" "${launcher_list[@]}"; do printf "%i %s\n" "$i" "$l"; let i+=1; done \ | ||||||
|  |       | sort -uk2 | sort -nk1 | cut -d' ' -f2- | tr '\n' ' ')) | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Parse CLI arguments | ||||||
|  | while getopts "hcp:" option; do | ||||||
|  |   case "${option}" in | ||||||
|  |     h) echo "${usage}" | ||||||
|  |        exit 0 | ||||||
|  |        ;; | ||||||
|  |     c) enable_confirmation=true | ||||||
|  |        ;; | ||||||
|  |     p) preferred_launcher="${OPTARG}" | ||||||
|  |        check_launcher "${preferred_launcher}" | ||||||
|  |        ;; | ||||||
|  |     *) exit 1 | ||||||
|  |        ;; | ||||||
|  |   esac | ||||||
|  | done | ||||||
|  | check_launcher "${preferred_launcher}" | ||||||
|  | 
 | ||||||
|  | # Check whether a command exists | ||||||
|  | function command_exists() { | ||||||
|  |   command -v "$1" &> /dev/null 2>&1 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # systemctl required | ||||||
|  | if ! command_exists systemctl ; then | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # menu defined as an associative array | ||||||
|  | typeset -A menu | ||||||
|  | 
 | ||||||
|  | # Menu with keys/commands | ||||||
|  | menu=( | ||||||
|  |   [Shutdown]="systemctl poweroff" | ||||||
|  |   [Reboot]="systemctl reboot" | ||||||
|  |   [Hibernate]="systemctl hibernate" | ||||||
|  |   [Suspend]="systemctl suspend" | ||||||
|  |   [Halt]="systemctl halt" | ||||||
|  |   [Lock]="${LOCKSCRIPT:-i3lock --color=${BG_COLOR#"#"}}" | ||||||
|  |   [Logout]="i3-msg exit" | ||||||
|  |   [Cancel]="" | ||||||
|  | ) | ||||||
|  | menu_nrows=${#menu[@]} | ||||||
|  | 
 | ||||||
|  | # Menu entries that may trigger a confirmation message | ||||||
|  | menu_confirm="Shutdown Reboot Hibernate Suspend Halt Logout" | ||||||
|  | 
 | ||||||
|  | launcher_exe="" | ||||||
|  | launcher_options="" | ||||||
|  | rofi_colors="" | ||||||
|  | 
 | ||||||
|  | function prepare_launcher() { | ||||||
|  |   if [[ "$1" == "rofi" ]]; then | ||||||
|  |     rofi_colors=(-bc "${BORDER_COLOR}" -bg "${BG_COLOR}" -fg "${FG_COLOR}" \ | ||||||
|  |         -hlfg "${HLFG_COLOR}" -hlbg "${HLBG_COLOR}") | ||||||
|  |     launcher_exe="rofi" | ||||||
|  |     launcher_options=(-dmenu -i -lines "${menu_nrows}" -p "${ROFI_TEXT}" \ | ||||||
|  |         "${rofi_colors[@]}" "${ROFI_OPTIONS[@]}") | ||||||
|  |   elif [[ "$1" == "zenity" ]]; then | ||||||
|  |     launcher_exe="zenity" | ||||||
|  |     launcher_options=(--list --title="${ZENITY_TITLE}" --text="${ZENITY_TEXT}" \ | ||||||
|  |         "${ZENITY_OPTIONS[@]}") | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | for l in "${launcher_list[@]}"; do | ||||||
|  |   if command_exists "${l}" ; then | ||||||
|  |     prepare_launcher "${l}" | ||||||
|  |     break | ||||||
|  |   fi | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # No launcher available | ||||||
|  | if [[ -z "${launcher_exe}" ]]; then | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | launcher=(${launcher_exe} "${launcher_options[@]}") | ||||||
|  | selection="$(printf '%s\n' "${!menu[@]}" | sort | "${launcher[@]}")" | ||||||
|  | 
 | ||||||
|  | function ask_confirmation() { | ||||||
|  |   if [ "${launcher_exe}" == "rofi" ]; then | ||||||
|  |     confirmed=$(echo -e "Yes\nNo" | rofi -dmenu -i -lines 2 -p "${selection}?" \ | ||||||
|  |       "${rofi_colors[@]}" "${ROFI_OPTIONS[@]}") | ||||||
|  |     [ "${confirmed}" == "Yes" ] && confirmed=0 | ||||||
|  |   elif [ "${launcher_exe}" == "zenity" ]; then | ||||||
|  |     zenity --question --text "Are you sure you want to ${selection,,}?" | ||||||
|  |     confirmed=$? | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|  |   if [ "${confirmed}" == 0 ]; then | ||||||
|  |     i3-msg -q "exec ${menu[${selection}]}" | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | if [[ $? -eq 0 && ! -z ${selection} ]]; then | ||||||
|  |   if [[ "${enable_confirmation}" = true && \ | ||||||
|  |         ${menu_confirm} =~ (^|[[:space:]])"${selection}"($|[[:space:]]) ]]; then | ||||||
|  |     ask_confirmation | ||||||
|  |   else | ||||||
|  |     i3-msg -q "exec ${menu[${selection}]}" | ||||||
|  |   fi | ||||||
|  | fi | ||||||
|  | @ -0,0 +1,69 @@ | ||||||
|  | #!/usr/bin/env perl | ||||||
|  | # Copyright 2014 Pierre Mavro <deimos@deimos.fr> | ||||||
|  | # Copyright 2014 Vivien Didelot <vivien@didelot.org> | ||||||
|  | # Copyright 2014 Andreas Guldstrand <andreas.guldstrand@gmail.com> | ||||||
|  | # Copyright 2014 Benjamin Chretien <chretien at lirmm dot fr> | ||||||
|  | 
 | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | use strict; | ||||||
|  | use warnings; | ||||||
|  | use utf8; | ||||||
|  | use Getopt::Long; | ||||||
|  | 
 | ||||||
|  | binmode(STDOUT, ":utf8"); | ||||||
|  | 
 | ||||||
|  | # default values | ||||||
|  | my $t_warn = $ENV{T_WARN} || 70; | ||||||
|  | my $t_crit = $ENV{T_CRIT} || 90; | ||||||
|  | my $chip = $ENV{SENSOR_CHIP} || ""; | ||||||
|  | my $temperature = -9999; | ||||||
|  | 
 | ||||||
|  | sub help { | ||||||
|  |     print "Usage: temperature [-w <warning>] [-c <critical>] [--chip <chip>]\n"; | ||||||
|  |     print "-w <percent>: warning threshold to become yellow\n"; | ||||||
|  |     print "-c <percent>: critical threshold to become red\n"; | ||||||
|  |     print "--chip <chip>: sensor chip\n"; | ||||||
|  |     exit 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | GetOptions("help|h" => \&help, | ||||||
|  |            "w=i"    => \$t_warn, | ||||||
|  |            "c=i"    => \$t_crit, | ||||||
|  |            "chip=s" => \$chip); | ||||||
|  | 
 | ||||||
|  | # Get chip temperature | ||||||
|  | open (SENSORS, "sensors -u $chip |") or die; | ||||||
|  | while (<SENSORS>) { | ||||||
|  |     if (/^\s+temp1_input:\s+[\+]*([\-]*\d+\.\d)/) { | ||||||
|  |         $temperature = $1; | ||||||
|  |         last; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | close(SENSORS); | ||||||
|  | 
 | ||||||
|  | $temperature eq -9999 and die 'Cannot find temperature'; | ||||||
|  | 
 | ||||||
|  | # Print short_text, full_text | ||||||
|  | print "$temperature°C\n" x2; | ||||||
|  | 
 | ||||||
|  | # Print color, if needed | ||||||
|  | if ($temperature >= $t_crit) { | ||||||
|  |     print "#FF0000\n"; | ||||||
|  |     exit 33; | ||||||
|  | } elsif ($temperature >= $t_warn) { | ||||||
|  |     print "#FFFC00\n"; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | exit 0; | ||||||
|  | @ -0,0 +1,83 @@ | ||||||
|  | #!/usr/bin/env bash | ||||||
|  | # Copyright (C) 2014 Julien Bonjean <julien@bonjean.info> | ||||||
|  | # Copyright (C) 2014 Alexander Keller <github@nycroth.com> | ||||||
|  | 
 | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | #------------------------------------------------------------------------ | ||||||
|  | 
 | ||||||
|  | # The second parameter overrides the mixer selection | ||||||
|  | # For PulseAudio users, eventually use "pulse" | ||||||
|  | # For Jack/Jack2 users, use "jackplug" | ||||||
|  | # For ALSA users, you may use "default" for your primary card | ||||||
|  | # or you may use hw:# where # is the number of the card desired | ||||||
|  | if [[ -z "$MIXER" ]] ; then | ||||||
|  |     MIXER="default" | ||||||
|  |     if command -v pulseaudio >/dev/null 2>&1 && pulseaudio --check ; then | ||||||
|  |         # pulseaudio is running, but not all installations use "pulse" | ||||||
|  |         if amixer -D pulse info >/dev/null 2>&1 ; then | ||||||
|  |             MIXER="pulse" | ||||||
|  |         fi | ||||||
|  |     fi | ||||||
|  |     [ -n "$(lsmod | grep jack)" ] && MIXER="jackplug" | ||||||
|  |     MIXER="${2:-$MIXER}" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # The instance option sets the control to report and configure | ||||||
|  | # This defaults to the first control of your selected mixer | ||||||
|  | # For a list of the available, use `amixer -D $Your_Mixer scontrols` | ||||||
|  | if [[ -z "$SCONTROL" ]] ; then | ||||||
|  |     SCONTROL="${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols | | ||||||
|  |                       sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" | | ||||||
|  |                       head -n1 | ||||||
|  |                     )}" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # The first parameter sets the step to change the volume by (and units to display) | ||||||
|  | # This may be in in % or dB (eg. 5% or 3dB) | ||||||
|  | if [[ -z "$STEP" ]] ; then | ||||||
|  |     STEP="${1:-5%}" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | #------------------------------------------------------------------------ | ||||||
|  | 
 | ||||||
|  | capability() { # Return "Capture" if the device is a capture device | ||||||
|  |   amixer -D $MIXER get $SCONTROL | | ||||||
|  |     sed -n "s/  Capabilities:.*cvolume.*/Capture/p" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | volume() { | ||||||
|  |   amixer -D $MIXER get $SCONTROL $(capability) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | format() { | ||||||
|  |    | ||||||
|  |   perl_filter='if (/.*\[(\d+%)\] (\[(-?\d+.\d+dB)\] )?\[(on|off)\]/)' | ||||||
|  |   perl_filter+='{CORE::say $4 eq "off" ? "MUTE" : "' | ||||||
|  |   # If dB was selected, print that instead | ||||||
|  |   perl_filter+=$([[ $STEP = *dB ]] && echo '$3' || echo '$1') | ||||||
|  |   perl_filter+='"; exit}' | ||||||
|  |   output=$(perl -ne "$perl_filter") | ||||||
|  |   echo "$LABEL$output" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #------------------------------------------------------------------------ | ||||||
|  | 
 | ||||||
|  | case $BLOCK_BUTTON in | ||||||
|  |   3) amixer -q -D $MIXER sset $SCONTROL $(capability) toggle ;;  # right click, mute/unmute | ||||||
|  |   4) amixer -q -D $MIXER sset $SCONTROL $(capability) ${STEP}+ unmute ;; # scroll up, increase | ||||||
|  |   5) amixer -q -D $MIXER sset $SCONTROL $(capability) ${STEP}- unmute ;; # scroll down, decrease | ||||||
|  | esac | ||||||
|  | 
 | ||||||
|  | volume | format | ||||||
|  | @ -0,0 +1,234 @@ | ||||||
|  | # Thank you code_nomad: http://9m.no/ꪯ鵞 | ||||||
|  | # and Arch Wiki contributors: https://wiki.archlinux.org/index.php/Compton | ||||||
|  | 
 | ||||||
|  | ################################# | ||||||
|  | # | ||||||
|  | # Backend | ||||||
|  | # | ||||||
|  | ################################# | ||||||
|  | 
 | ||||||
|  | # Backend to use: "xrender" or "glx". | ||||||
|  | # GLX backend is typically much faster but depends on a sane driver. | ||||||
|  | backend = "glx"; | ||||||
|  | 
 | ||||||
|  | ################################# | ||||||
|  | # | ||||||
|  | # GLX backend | ||||||
|  | # | ||||||
|  | ################################# | ||||||
|  | 
 | ||||||
|  | glx-no-stencil = true; | ||||||
|  | 
 | ||||||
|  | # GLX backend: Copy unmodified regions from front buffer instead of redrawing them all. | ||||||
|  | # My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified, | ||||||
|  | # but a 20% increase when only 1/4 is. | ||||||
|  | # My tests on nouveau show terrible slowdown. | ||||||
|  | glx-copy-from-front = false; | ||||||
|  | 
 | ||||||
|  | # GLX backend: Use MESA_copy_sub_buffer to do partial screen update. | ||||||
|  | # My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated. | ||||||
|  | # May break VSync and is not available on some drivers. | ||||||
|  | # Overrides --glx-copy-from-front. | ||||||
|  | # glx-use-copysubbuffermesa = true; | ||||||
|  | 
 | ||||||
|  | # GLX backend: Avoid rebinding pixmap on window damage. | ||||||
|  | # Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe). | ||||||
|  | # Recommended if it works. | ||||||
|  | # glx-no-rebind-pixmap = true; | ||||||
|  | 
 | ||||||
|  | # GLX backend: GLX buffer swap method we assume. | ||||||
|  | # Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1). | ||||||
|  | # undefined is the slowest and the safest, and the default value. | ||||||
|  | # copy is fastest, but may fail on some drivers, | ||||||
|  | # 2-6 are gradually slower but safer (6 is still faster than 0). | ||||||
|  | # Usually, double buffer means 2, triple buffer means 3. | ||||||
|  | # buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers. | ||||||
|  | # Useless with --glx-use-copysubbuffermesa. | ||||||
|  | # Partially breaks --resize-damage. | ||||||
|  | # Defaults to undefined. | ||||||
|  | #glx-swap-method = "undefined"; | ||||||
|  | 
 | ||||||
|  | ################################# | ||||||
|  | # | ||||||
|  | # Shadows | ||||||
|  | # | ||||||
|  | ################################# | ||||||
|  | 
 | ||||||
|  | # Enabled client-side shadows on windows. | ||||||
|  | shadow = true; | ||||||
|  | # The blur radius for shadows. (default 12) | ||||||
|  | shadow-radius = 5; | ||||||
|  | # The left offset for shadows. (default -15) | ||||||
|  | shadow-offset-x = -5; | ||||||
|  | # The top offset for shadows. (default -15) | ||||||
|  | shadow-offset-y = -5; | ||||||
|  | # The translucency for shadows. (default .75) | ||||||
|  | shadow-opacity = 0.5; | ||||||
|  | 
 | ||||||
|  | # Set if you want different colour shadows | ||||||
|  | # shadow-red = 0.0; | ||||||
|  | # shadow-green = 0.0; | ||||||
|  | # shadow-blue = 0.0; | ||||||
|  | 
 | ||||||
|  | # The shadow exclude options are helpful if you have shadows enabled. Due to the way picom draws its shadows, certain applications will have visual glitches | ||||||
|  | # (most applications are fine, only apps that do weird things with xshapes or argb are affected). | ||||||
|  | # This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher. | ||||||
|  | shadow-exclude = [ | ||||||
|  |     "! name~=''", | ||||||
|  |     "name = 'Notification'", | ||||||
|  |     "name = 'Plank'", | ||||||
|  |     "name = 'Docky'", | ||||||
|  |     "name = 'Kupfer'", | ||||||
|  |     "name = 'xfce4-notifyd'", | ||||||
|  |     "name *= 'VLC'", | ||||||
|  |     "name *= 'compton'", | ||||||
|  |     "name *= 'picom'", | ||||||
|  |     "name *= 'Chromium'", | ||||||
|  |     "name *= 'Chrome'", | ||||||
|  |     "class_g = 'Firefox' && argb", | ||||||
|  |     "class_g = 'Conky'", | ||||||
|  |     "class_g = 'Kupfer'", | ||||||
|  |     "class_g = 'Synapse'", | ||||||
|  |     "class_g ?= 'Notify-osd'", | ||||||
|  |     "class_g ?= 'Cairo-dock'", | ||||||
|  |     "class_g ?= 'Xfce4-notifyd'", | ||||||
|  |     "class_g ?= 'Xfce4-power-manager'", | ||||||
|  |     "_GTK_FRAME_EXTENTS@:c", | ||||||
|  |     "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" | ||||||
|  | ]; | ||||||
|  | # Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners) | ||||||
|  | shadow-ignore-shaped = false; | ||||||
|  | 
 | ||||||
|  | ################################# | ||||||
|  | # | ||||||
|  | # Opacity | ||||||
|  | # | ||||||
|  | ################################# | ||||||
|  | 
 | ||||||
|  | inactive-opacity = 1; | ||||||
|  | active-opacity = 1; | ||||||
|  | frame-opacity = 1; | ||||||
|  | inactive-opacity-override = false; | ||||||
|  | 
 | ||||||
|  | # Dim inactive windows. (0.0 - 1.0) | ||||||
|  | # inactive-dim = 0.2; | ||||||
|  | # Do not let dimness adjust based on window opacity. | ||||||
|  | # inactive-dim-fixed = true; | ||||||
|  | # Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred. | ||||||
|  | blur-background = true; | ||||||
|  | # Blur background of opaque windows with transparent frames as well. | ||||||
|  | blur-background-frame = true; | ||||||
|  | # Do not let blur radius adjust based on window opacity. | ||||||
|  | blur-background-fixed = false; | ||||||
|  | blur-background-exclude = [ | ||||||
|  |     "window_type = 'dock'", | ||||||
|  |     "window_type = 'desktop'" | ||||||
|  | ]; | ||||||
|  | blur: | ||||||
|  | { | ||||||
|  |     method = "dual_kawase"; | ||||||
|  |     strength = 5; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ################################# | ||||||
|  | # | ||||||
|  | # Fading | ||||||
|  | # | ||||||
|  | ################################# | ||||||
|  | 
 | ||||||
|  | # Fade windows during opacity changes. | ||||||
|  | fading = true; | ||||||
|  | # The time between steps in a fade in milliseconds. (default 10). | ||||||
|  | fade-delta = 4; | ||||||
|  | # Opacity change between steps while fading in. (default 0.028). | ||||||
|  | fade-in-step = 0.03; | ||||||
|  | # Opacity change between steps while fading out. (default 0.03). | ||||||
|  | fade-out-step = 0.03; | ||||||
|  | # Fade windows in/out when opening/closing | ||||||
|  | # no-fading-openclose = true; | ||||||
|  | 
 | ||||||
|  | # Specify a list of conditions of windows that should not be faded. | ||||||
|  | fade-exclude = [ ]; | ||||||
|  | 
 | ||||||
|  | ################################# | ||||||
|  | # | ||||||
|  | # Other | ||||||
|  | # | ||||||
|  | ################################# | ||||||
|  | 
 | ||||||
|  | # Try to detect WM windows and mark them as active. | ||||||
|  | mark-wmwin-focused = true; | ||||||
|  | # Mark all non-WM but override-redirect windows active (e.g. menus). | ||||||
|  | mark-ovredir-focused = true; | ||||||
|  | # Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events. | ||||||
|  | # Usually more reliable but depends on a EWMH-compliant WM. | ||||||
|  | use-ewmh-active-win = true; | ||||||
|  | # Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on. | ||||||
|  | detect-rounded-corners = true; | ||||||
|  | 
 | ||||||
|  | # Detect _NET_WM_OPACITY on client windows, useful for window managers not passing _NET_WM_OPACITY of client windows to frame windows. | ||||||
|  | # This prevents opacity being ignored for some apps. | ||||||
|  | # For example without this enabled my xfce4-notifyd is 100% opacity no matter what. | ||||||
|  | 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 = 0; | ||||||
|  | 
 | ||||||
|  | # Vertical synchronization: match the refresh rate of the monitor | ||||||
|  | # Enable/disable VSync. | ||||||
|  | #vsync = true; | ||||||
|  | vsync = true; | ||||||
|  | 
 | ||||||
|  | # Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing. | ||||||
|  | # Reported to have no effect, though. | ||||||
|  | dbe = false; | ||||||
|  | 
 | ||||||
|  | # Limit picom to repaint at most once every 1 / refresh_rate second to boost performance. | ||||||
|  | # This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already, | ||||||
|  | # unless you wish to specify a lower refresh rate than the actual value. | ||||||
|  | #sw-opti = true; | ||||||
|  | 
 | ||||||
|  | # Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games. | ||||||
|  | # Known to cause flickering when redirecting/unredirecting windows. | ||||||
|  | unredir-if-possible = false; | ||||||
|  | 
 | ||||||
|  | # Specify a list of conditions of windows that should always be considered focused. | ||||||
|  | focus-exclude = [ ]; | ||||||
|  | 
 | ||||||
|  | # Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time. | ||||||
|  | detect-transient = true; | ||||||
|  | # Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused at the same time. | ||||||
|  | # WM_TRANSIENT_FOR has higher priority if --detect-transient is enabled, too. | ||||||
|  | detect-client-leader = true; | ||||||
|  | 
 | ||||||
|  | ################################# | ||||||
|  | # | ||||||
|  | # Window type settings | ||||||
|  | # | ||||||
|  | ################################# | ||||||
|  | 
 | ||||||
|  | wintypes: | ||||||
|  | { | ||||||
|  |     tooltip = | ||||||
|  |     { | ||||||
|  |         # fade: Fade the particular type of windows. | ||||||
|  |         fade = true; | ||||||
|  |         # shadow: Give those windows shadow | ||||||
|  |         shadow = false; | ||||||
|  |         # opacity: Default opacity for the type of windows. | ||||||
|  |         opacity = 0.85; | ||||||
|  |         # focus: Whether to always consider windows of this type focused. | ||||||
|  |         focus = true; | ||||||
|  |     }; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | ###################### | ||||||
|  | # | ||||||
|  | # XSync | ||||||
|  | # See: https://github.com/yshui/picom/commit/b18d46bcbdc35a3b5620d817dd46fbc76485c20d | ||||||
|  | # | ||||||
|  | ###################### | ||||||
|  | 
 | ||||||
|  | # Use X Sync fence to sync clients' draw calls. Needed on nvidia-drivers with GLX backend for some users. | ||||||
|  | xrender-sync-fence = true; | ||||||
		Loading…
	
		Reference in New Issue