From dbac2f1ba5db44b2c799c984cc6f1f509e15622e Mon Sep 17 00:00:00 2001 From: Dejvino Date: Sun, 10 Jan 2021 19:44:05 +0100 Subject: [PATCH] Add dialog styles, update sway and waybar --- README.md | 19 +++- config/.dialogrc | 144 ++++++++++++++++++++++++++ config/sway/config | 241 +++++++++++++++++++++++++++++++++++++++++-- config/waybar/config | 231 ++++++++++++++++++++++++++++------------- 4 files changed, 555 insertions(+), 80 deletions(-) create mode 100644 config/.dialogrc diff --git a/README.md b/README.md index 6cf7114..bf33e5b 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ Linux UI customized to resemble a Fallout Pip-Boy. To be used with the PINE64 Pi - mako: Notifications daemon - mpd: Music player daemon - xfmpc: Music player client + - mplayer: Sound effects player ## Dependencies - [Sway on PinePhone](https://github.com/Dejvino/pinephone-sway-poc) @@ -31,6 +32,14 @@ cd PinePhoneBoyOS ... ``` +### Virtual Keyboard (Squeekboard) +Terminal layout replaces (default) English layout: +```bash +mkdir -p ~/.local/share/squeekboard/keyboards/ +wget https://source.puri.sm/Librem5/squeekboard/-/raw/master/data/keyboards/terminal_wide.yaml -O ~/.local/share/squeekboard/keyboards/us_wide.yaml +``` +Source: [puri.sm](https://developer.puri.sm/projects/squeekboard/tutorial.html) + ### Theme ```bash git clone https://github.com/i-mint/midnight @@ -61,7 +70,15 @@ gsettings set org.gnome.desktop.interface icon-theme "Abyss-ENVY" # reboot to see it during the next startup ``` -### Radio - MPD +### DATA - Epiphany +Source: [ArchWiki](https://wiki.archlinux.org/index.php/GNOME/Web) + +#### Ad blocking +```bash +gsettings set org.gnome.Epiphany adblock-filters "['https://easylist.to/easylist/easylist.txt', 'https://easylist.to/easylist/easyprivacy.txt', 'https://easylist.to/easylist/fanboy-annoyance.txt', 'https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext', 'https://www.malwaredomainlist.com/hostslist/hosts.txt', 'https://mirror.cedia.org.ec/malwaredomains/justdomains']" +``` + +### RADIO - MPD Packages: mpd xfmpc mpc ```bash mkdir -p ~/.config/mpd/playlists diff --git a/config/.dialogrc b/config/.dialogrc new file mode 100644 index 0000000..3f9ecf7 --- /dev/null +++ b/config/.dialogrc @@ -0,0 +1,144 @@ +# +# Run-time configuration file for dialog +# +# Automatically generated by "dialog --create-rc " +# +# +# Types of values: +# +# Number - +# String - "string" +# Boolean - +# Attribute - (foreground,background,highlight?,underline?,reverse?) + +# Set aspect-ration. +aspect = 0 + +# Set separator (for multiple widgets output). +separate_widget = "" + +# Set tab-length (for textbox tab-conversion). +tab_len = 0 + +# Make tab-traversal for checklist, etc., include the list. +visit_items = OFF + +# Shadow dialog boxes? This also turns on color. +use_shadow = OFF + +# Turn color support ON or OFF +use_colors = ON + +# Screen color +screen_color = (GREEN,BLACK,OFF) + +# Shadow color +shadow_color = (BLACK,BLACK,OFF) + +# Dialog box color +dialog_color = (GREEN,BLACK,OFF) + +# Dialog box title color +title_color = (GREEN,BLACK,OFF) + +# Dialog box border color +border_color = (GREEN,BLACK,OFF) + +# Active button color +button_active_color = (BLACK,GREEN,ON) + +# Inactive button color +button_inactive_color = dialog_color + +# Active button key color +button_key_active_color = button_active_color + +# Inactive button key color +button_key_inactive_color = (GREEN,BLACK,ON) + +# Active button label color +button_label_active_color = (BLACK,GREEN,ON) + +# Inactive button label color +button_label_inactive_color = (GREEN,BLACK,ON) + +# Input box color +inputbox_color = dialog_color + +# Input box border color +inputbox_border_color = dialog_color + +# Search box color +searchbox_color = dialog_color + +# Search box title color +searchbox_title_color = title_color + +# Search box border color +searchbox_border_color = border_color + +# File position indicator color +position_indicator_color = title_color + +# Menu box color +menubox_color = dialog_color + +# Menu box border color +menubox_border_color = border_color + +# Item color +item_color = dialog_color + +# Selected item color +item_selected_color = button_active_color + +# Tag color +tag_color = title_color + +# Selected tag color +tag_selected_color = button_label_active_color + +# Tag key color +tag_key_color = button_key_inactive_color + +# Selected tag key color +tag_key_selected_color = (BLACK,GREEN,ON) + +# Check box color +check_color = dialog_color + +# Selected check box color +check_selected_color = button_active_color + +# Up arrow color +uarrow_color = (BLACK,GREEN,ON) + +# Down arrow color +darrow_color = uarrow_color + +# Item help-text color +itemhelp_color = (GREEN,BLACK,OFF) + +# Active form text color +form_active_text_color = button_active_color + +# Form text color +form_text_color = (GREEN,BLACK,ON) + +# Readonly form item color +form_item_readonly_color = (CYAN,WHITE,ON) + +# Dialog box gauge color +gauge_color = title_color + +# Dialog box border2 color +border2_color = dialog_color + +# Input box border2 color +inputbox_border2_color = dialog_color + +# Search box border2 color +searchbox_border2_color = dialog_color + +# Menu box border2 color +menubox_border2_color = dialog_color diff --git a/config/sway/config b/config/sway/config index 9e620b3..f3db8a5 100644 --- a/config/sway/config +++ b/config/sway/config @@ -1,3 +1,25 @@ +# Read `man 5 sway` for a complete reference. + +### Variables +# +# Mod4 = Logo key. Mod1 = Alt. +# Using Mod1 for now since nothing better is available on the virtual keyboard. +set $mod Mod1 + +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l + +# Your preferred terminal emulator +set $term termite + +# Your preferred application launcher +# Note: pass the final command to swaymsg so that the resulting window can be opened +# on the original workspace that the command was run on. +set $menu bemenu-run -n -p RUN | xargs swaymsg exec -- + ### Output configuration # # Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) @@ -11,6 +33,90 @@ set $BLACK "#000000FF" client.focused $GREEN $BLACK $GREEN $LGREEN $DGREEN client.unfocused $DGREEN $BLACK $DGREEN $DGREEN $DGREEN +# +# Example configuration: +# +# output HDMI-A-1 resolution 1920x1080 position 1920,0 +# +# You can get the names of your outputs by running: swaymsg -t get_outputs + +### Idle configuration +# +# Example configuration: +# +# exec swayidle -w \ +# timeout 300 'swaylock -f -c 000000' \ +# timeout 600 'swaymsg "output * dpms off"' \ +# resume 'swaymsg "output * dpms on"' \ +# before-sleep 'swaylock -f -c 000000' +# +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 300 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. + +### Input configuration +# +# Example configuration: +# +# input "2:14:SynPS/2_Synaptics_TouchPad" { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. + +### Key bindings +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+q kill + + # Start your launcher + bindsym $mod+d exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # Reload the configuration file + bindsym $mod+Ctrl+c reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' +# +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right # # Workspaces: # @@ -30,6 +136,13 @@ client.unfocused $DGREEN $BLACK $DGREEN $DGREEN $DGREEN set $WMAP $W4 set $WRADIO $W5 + set $DSI1 "DSI-1" + workspace $WSTAT output $DSI1 + workspace $WINV output $DSI1 + workspace $WDATA output $DSI1 + workspace $WMAP output $DSI1 + workspace $WRADIO output $DSI1 + # Switch to workspace bindsym $mod+1 workspace $W1 bindsym $mod+2 workspace $W2 @@ -54,6 +167,68 @@ client.unfocused $DGREEN $BLACK $DGREEN $DGREEN $DGREEN bindsym $mod+Shift+0 move container to workspace $W10 # Note: workspaces can have any name you want, not just numbers. # We just use 1-10 as the default. +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+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 $mod+minus scratchpad show + +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" # # Power Button @@ -61,19 +236,26 @@ client.unfocused $DGREEN $BLACK $DGREEN $DGREEN $DGREEN set $pplock 'swayphone_power_sleep' set $ppunlock 'swayphone_power_wakeup' set $lockapp swaylock -set $lock '$lockapp -f -c 000000' +set $lock '$lockapp -f -c 005500' set $unlock 'killall $lockapp' ## wish this worked... #bindsym XF86PowerOff exec $lock #bindsym --locked XF86PowerOff exec $unlock # alternative: -bindcode 124 exec $lock; exec $pplock -bindcode --locked 124 exec $unlock; exec $ppunlock +#bindcode 124 exec $lock; exec $pplock +#bindcode --locked 124 exec $ppunlock +bindcode 124 exec '$lock ; swayphone_power_presleep' +bindcode --locked 124 exec '$unlock ; swayphone_power_wakeup' exec swayidle -w \ - timeout 15 'swaymsg exec $lock; $pplock' \ - resume 'swaymsg exec $unlock; $ppunlock' \ - before-sleep 'swaymsg exec $lock; $pplock' + timeout 30 'pptk-backlight set_percent 10' \ + resume 'swayphone_power_wakeup' \ + timeout 60 'swayphone_power_rest' \ + resume 'swayphone_power_wakeup' \ + timeout 120 'swayphone_power_sleep' \ + before-sleep 'swayphone_power_presleep' \ + after-resume 'killall swaylock; swayphone_power_wakeup' \ + unlock 'killall swaylock' # Scale the touchscreen LCD UI output DSI-1 scale 2 @@ -84,23 +266,59 @@ input 1046:4097:Goodix_Capacitive_TouchScreen map_to_output DSI-1 #output DSI-1 transform 90 output DSI-1 transform 270 +# Display rotation daemon +#exec 'rot8 --display DSI-1 --threshold 0.97 --x-file /sys/bus/iio/devices/iio:device2/in_accel_y_raw --y-file /sys/bus/iio/devices/iio:device2/in_accel_x_raw --y-invert --on-change swayphone_rotated' + # Keyboard exec "squeekboard" +# Gesture detection +#exec lisgd \ +# -g "1,l,r, false" \ +# -g "1,r,l, false" \ +# -g "1,u,d, false" \ +# -g "1,d,u, false" \ +# -g "2,l,r, swaymsg workspace prev" \ +# -g "2,r,l, swaymsg workspace next" \ +# -g "2,u,d, swaymsg exec swayphone_keyboard_hide" \ +# -g "2,d,u, swaymsg exec swayphone_keyboard_show" \ +# -g "2,l,u, swaymsg fullscreen" \ +# -g "2,r,d, swaymsg kill" \ +# -g "3,l,r, swaymsg focus right" \ +# -g "3,r,l, swaymsg focus left" \ +# -g "3,u,d, swaymsg focus down" \ +# -g "3,d,u, swaymsg focus up" \ +# -g "4,l,r, swaymsg move right" \ +# -g "4,r,l, swaymsg move left" \ +# -g "4,u,d, swaymsg move down" \ +# -g "4,d,u, swaymsg move up" + # Status Bar -exec "waybar -c ~/.config/waybar/config -b side" -exec "waybar -c ~/.config/waybar/config_left -b side_left" +# side +exec "rm /tmp/sway_rotation" +exec "waybar -c ~/.config/waybar/config" +#exec "waybar -c ~/.config/waybar/config_left -b side_left" +#exec "sleep 2 ; kill -10 `pgrep -f 'waybar.*-b side'`" +#exec "waybar -c ~/.config/waybar/config_0 -b top" +#exec "waybar -c ~/.config/waybar/config_1 -b bottom" # Restore backlight exec 'swayphone_power_wakeup' +# STAT +# ?? + # INV exec "portfolio-fm" -for_window [app_id="portfolio-fm"] move workspace $WINV; border none +for_window [app_id="portfolio-fm"] move workspace $WINV # DATA exec "epiphany" -for_window [app_id="epiphany"] move workspace $WDATA; border none +for_window [app_id="epiphany"] move workspace $WDATA + +# MAP +exec "gnome-maps" +for_window [app_id="org.gnome.Maps"] move workspace $WMAP; border none # RADIO exec "killall mpd ; mpd" @@ -111,3 +329,6 @@ for_window [app_id="xfmpc"] move workspace $WRADIO; border none exec "mako" # notify daemon exec "sleep 2; notify-send 'Welcome!' 'Your Pip-Boy is ready to be used.' --icon=dialog-information" +# Sounds +exec "killall workspace_sounds_daemon ; killall mplayer ; workspace_sounds_daemon" + diff --git a/config/waybar/config b/config/waybar/config index b28a986..f5d2353 100755 --- a/config/waybar/config +++ b/config/waybar/config @@ -1,37 +1,25 @@ - +[ +// TOUCHSCREEN > RIGHT PANEL { - //GLOBAL - - "layer": "top", - - "position": "right", // or "left" + "position": "right", "width": 100, - + "output": "DSI-1", "modules-left": [ "clock#time", "clock#date", - //"battery", // broken for some reason... - "sway/workspaces" + "sway/workspaces", + "tray" ], "modules-center": [ ], "modules-right": [ -// "cpu", -// "memory", -// "disk", -// "network", -// "backlight", -// "pulseaudio", "custom/terminal", - "custom/kill", - "tray" + "custom/kill" ], -//MODULES - "clock#time": { "interval": 10, "locale": "C", @@ -41,7 +29,6 @@ "on-click": "termite -e swayphone_menuselect" }, - "clock#date": { "interval": 20, "locale": "C", @@ -52,49 +39,10 @@ "on-click": "termite -e swayphone_menuselect" }, - "battery": { - "interval": 1, - "states": { - "warning": 30, - "critical": 15 - }, -/* - // Connected to AC - "format": " {capacity}%", // Icon: bolt - // Not connected to AC - "format-discharging": " {capacity}%", - "format-icons": [ - "", // Icon: battery-full - "", // Icon: battery-three-quarters - "", // Icon: battery-half - "", // Icon: battery-quarter - "" // Icon: battery-empty - ], -*/ - // Connected to AC - "format": "CH {capacity}%", // Icon: bolt - // Not connected to AC - "format-discharging": "D {capacity}%", - "format-icons": [ - "4/4", // Icon: battery-full - "3/4", // Icon: battery-three-quarters - "2/4", // Icon: battery-half - "1/4", // Icon: battery-quarter - "0/4" // Icon: battery-empty - ], - - "tooltip": false, -// "bat": "axp20x-battery", -// "adapter": "axp20x-usb", - "on-click": "termite -e \"~/battery.sh ; sleep 5\"" - }, - - "sway/mode": { "format": " {}", "tooltip": true }, - "sway/workspaces": { "all-outputs": false, @@ -119,7 +67,7 @@ "custom/kill": { "on-click": "swaymsg kill", - "format": "💀" + "format": "☢" }, "custom/terminal": { @@ -127,6 +75,74 @@ "format": "#>_" }, + "network": { + "interval": 5, + "format-wifi": "  {essid}", // Icon: wifi + "format-ethernet": " {ifname}", // Icon: ethernet + "format-disconnected": "Disconnected", + "tooltip-format": "{ifname}: {ipaddr}", + "on-click": "swaymsg exec \"termite -e nmtui\"" + }, + + "tray": { + "icon-size": 22 + + //"spacing": 10 + }, +}, +// TOUCHSCREEN > LEFT PANEL +{ + "layer": "top", + "position": "left", + "width": 15, + "output": "DSI-1", + + "modules-left": [ + "cpu", + "memory", + //"battery", // broken for some reason... + "custom/battery", + "temperature", + "disk", + "backlight", + "pulseaudio", + ], + + "modules-center": [ + ], + + "modules-right": [ + //"custom/terminal", + "custom/keyshow", + "custom/keyhide" + ], + + "custom/battery": { + "exec": "waybar_battery", + "interval": "2", + "return-type": "json", + "format": "⚛ {}" + }, + + "custom/kill": { + "on-click": "swaymsg kill", + "format": "☠" + }, + + "custom/keyshow": { + "on-click": "swayphone_keyboard_show", + "format": "K↥" + }, + + "custom/keyhide": { + "on-click": "swayphone_keyboard_hide", + "format": "K↧" + }, + + "custom/terminal": { + "on-click": "termite", + "format": ">_" + }, "cpu": { "interval": 5, @@ -139,7 +155,6 @@ "on-click": "termite -e \"htop --sort-key=PERCENT_CPU\"" }, - "memory": { "interval": 5, "format": " {}%", // Icon: memory @@ -150,6 +165,14 @@ "on-click": "termite -e \"htop --sort-key=PERCENT_MEM\"" }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 60, + "format-critical": " {temperatureC}°C", + "format": " {temperatureC}°C" + }, + "network": { "interval": 5, "format-wifi": "  {essid}", // Icon: wifi @@ -178,27 +201,97 @@ "disk": { "interval": 5, - "format": " {percentage_used:2}%", + "format": "✇ {percentage_used:2}%", // alt:  "path": "/" }, - "backlight": { + + "backlight": { // "device": "acpi_video1", "format": "{icon} {percent}% ", "states": [0,50], "format-icons": ["", ""], "on-click": "termite -e swayphone_backlightselect" }, +}, +// EXTERNAL MONITOR +{ + "layer": "top", + "position": "bottom", + "width": 100, + "output": "!DSI-1", + "modules-left": [ + "sway/workspaces#monitor" + ], + + "modules-center": [ + "clock#time" + ], + + "modules-right": [ + "tray", + "clock#date" + ], + + "clock#time": { + "interval": 10, + "locale": "C", + "timezone": "Europe/Berlin", + "format": " {:%H:%M}", + "tooltip": false, + "on-click": "termite -e swayphone_menuselect" + }, + + "clock#date": { + "interval": 20, + "locale": "C", + "timezone": "Europe/Berlin", + "format": " {:%e %b %Y}", // Icon: calendar-alt + //"tooltip-format": "{:%e %B %Y}" + "tooltip": true, + "on-click": "termite -e swayphone_menuselect" + }, + + "sway/mode": { + "format": " {}", + "tooltip": true + }, + + "sway/workspaces#monitor": { + "all-outputs": false, + "disable-scroll": true, + /*"persistent_workspaces": { + "6:": [], + "7:": [], + "8:": [], + "9:": [], + "0:": [] + },*/ + "format": "{name}", + "format-icons": { + //"1:T": "", // Icon: terminal + "3:F": "龜", // Icon: firefox-browser + "8:M": "", // Icon: mail + "urgent": "", + "focused": "", + "default": "" + } + }, + + "network": { + "interval": 5, + "format-wifi": "  {essid}", // Icon: wifi + "format-ethernet": " {ifname}", // Icon: ethernet + "format-disconnected": "Disconnected", + "tooltip-format": "{ifname}: {ipaddr}", + "on-click": "swaymsg exec \"termite -e nmtui\"" + }, + "tray": { "icon-size": 22 //"spacing": 10 }, - - - "custom/bar": { - "format": "", - "tooltip": false - } } +]