diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/window-managers/i3')
31 files changed, 2438 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/altlayout.nix b/nixpkgs/pkgs/applications/window-managers/i3/altlayout.nix new file mode 100644 index 000000000000..f6f1ecf20c1a --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/altlayout.nix @@ -0,0 +1,26 @@ +{ lib, python3Packages, fetchPypi }: + +python3Packages.buildPythonApplication rec { + pname = "i3altlayout"; + version = "0.3"; + + src = fetchPypi { + inherit pname version; + sha256 = "1h0phf3s6ljffxw0bs73k041wildaz01h37iv5mxhami41wrh4qf"; + }; + + pythonPath = with python3Packages; [ enum-compat i3ipc docopt ]; + + doCheck = false; + + pythonImportsCheck = [ "i3altlayout" ]; + + meta = with lib; { + maintainers = with maintainers; [ magnetophon ]; + description = "Helps you handle more efficiently your screen real estate in i3wm by auto-splitting windows on their longest side"; + mainProgram = "i3altlayout"; + homepage = "https://github.com/deadc0de6/i3altlayout"; + license = licenses.gpl3Only; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/auto-layout.nix b/nixpkgs/pkgs/applications/window-managers/i3/auto-layout.nix new file mode 100644 index 000000000000..bfcb35a870c9 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/auto-layout.nix @@ -0,0 +1,27 @@ +{ lib, rustPlatform, fetchFromGitHub }: + +rustPlatform.buildRustPackage rec { + pname = "i3-auto-layout"; + version = "unstable-2022-05-29"; + + src = fetchFromGitHub { + owner = "chmln"; + repo = pname; + rev = "9e41eb3891991c35b7d35c9558e788899519a983"; + sha256 = "sha256-gpVYVyh+2y4Tttvw1SuCf7mx/nxR330Ob2R4UmHZSJs="; + }; + + cargoSha256 = "sha256-OxQ7S+Sqc3aRH53Bs53Y+EKOYFgboGOBsQ7KJgICcGo="; + + # Currently no tests are implemented, so we avoid building the package twice + doCheck = false; + + meta = with lib; { + description = "Automatic, optimal tiling for i3wm"; + mainProgram = "i3-auto-layout"; + homepage = "https://github.com/chmln/i3-auto-layout"; + license = licenses.mit; + maintainers = with maintainers; [ mephistophiles perstark ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/balance-workspace.nix b/nixpkgs/pkgs/applications/window-managers/i3/balance-workspace.nix new file mode 100644 index 000000000000..bb0ea94e77c3 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/balance-workspace.nix @@ -0,0 +1,24 @@ +{ lib, buildPythonPackage, fetchPypi, i3ipc }: + +buildPythonPackage rec { + pname = "i3-balance-workspace"; + version = "1.8.6"; + + src = fetchPypi { + inherit pname version; + sha256 = "sha256-zJdn/Q6r60FQgfehtQfeDkmN0Rz3ZaqgNhiWvjyQFy0="; + }; + + propagatedBuildInputs = [ i3ipc ]; + + doCheck = false; # project has no test + pythonImportsCheck = [ "i3_balance_workspace" ]; + + meta = { + description = "Balance windows and workspaces in i3wm"; + homepage = "https://pypi.org/project/i3-balance-workspace/"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ pacien ]; + mainProgram = "i3_balance_workspace"; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix b/nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix new file mode 100644 index 000000000000..657e8d2dca1c --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/blocks-gaps.nix @@ -0,0 +1,56 @@ +{ fetchFromGitHub, lib, stdenv, perl, makeWrapper +, iproute2, acpi, sysstat, alsa-utils +, scripts ? [ "bandwidth" "battery" "cpu_usage" "disk" "iface" + "load_average" "memory" "volume" "wifi" ] +}: + +with lib; + +let + perlscripts = [ "battery" "cpu_usage" "openvpn" "temperature" ]; + contains_any = l1: l2: 0 < length( intersectLists l1 l2 ); + +in +stdenv.mkDerivation rec { + pname = "i3blocks-gaps"; + version = "1.4"; + + src = fetchFromGitHub { + owner = "Airblader"; + repo = "i3blocks-gaps"; + rev = "4cfdf93c75f729a2c96d471004d31734e923812f"; + sha256 = "0v9307ij8xzwdaxay3r75sd2cp453s3qb6q7dy9fks2p6wwqpazi"; + }; + + makeFlags = [ "all" ]; + installFlags = [ "PREFIX=\${out}" "VERSION=${version}" ]; + + buildInputs = optional (contains_any scripts perlscripts) perl; + nativeBuildInputs = [ makeWrapper ]; + + postFixup = optionalString (elem "bandwidth" scripts) '' + wrapProgram $out/libexec/i3blocks/bandwidth \ + --prefix PATH : ${makeBinPath [ iproute2 ]} + '' + optionalString (elem "battery" scripts) '' + wrapProgram $out/libexec/i3blocks/battery \ + --prefix PATH : ${makeBinPath [ acpi ]} + '' + optionalString (elem "cpu_usage" scripts) '' + wrapProgram $out/libexec/i3blocks/cpu_usage \ + --prefix PATH : ${makeBinPath [ sysstat ]} + '' + optionalString (elem "iface" scripts) '' + wrapProgram $out/libexec/i3blocks/iface \ + --prefix PATH : ${makeBinPath [ iproute2 ]} + '' + optionalString (elem "volume" scripts) '' + wrapProgram $out/libexec/i3blocks/volume \ + --prefix PATH : ${makeBinPath [ alsa-utils ]} + ''; + + meta = with lib; { + description = "A flexible scheduler for your i3bar blocks -- this is a fork to use with i3-gaps"; + mainProgram = "i3blocks"; + homepage = "https://github.com/Airblader/i3blocks-gaps"; + license = licenses.gpl3; + maintainers = with maintainers; [ carlsverre ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/blocks.nix b/nixpkgs/pkgs/applications/window-managers/i3/blocks.nix new file mode 100644 index 000000000000..e8f628fb4dc9 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/blocks.nix @@ -0,0 +1,34 @@ +{ fetchFromGitHub, fetchpatch, lib, stdenv, autoreconfHook, pkg-config }: + +with lib; + +stdenv.mkDerivation { + pname = "i3blocks"; + version = "1.5"; + + src = fetchFromGitHub { + owner = "vivien"; + repo = "i3blocks"; + rev = "3417602a2d8322bc866861297f535e1ef80b8cb0"; + sha256 = "0v8mwnm8qzpv6xnqvrk43s4b9iyld4naqzbaxk4ldq1qkhai0wsv"; + }; + + patches = [ + # XDG_CONFIG_DIRS can contain multiple elements separated by colons, which should be searched in order. + (fetchpatch { + # https://github.com/vivien/i3blocks/pull/405 + url = "https://github.com/edef1c/i3blocks/commit/d57b32f9a364aeaf36869efdd54240433c737e57.patch"; + sha256 = "102xb0ax0hmg82dz2gzfag470dkckzf2yizai0izacvrz0d3ngj1"; + }) + ]; + + nativeBuildInputs = [ autoreconfHook pkg-config ]; + + meta = { + description = "A flexible scheduler for your i3bar blocks"; + mainProgram = "i3blocks"; + homepage = "https://github.com/vivien/i3blocks"; + license = licenses.gpl3; + platforms = with platforms; freebsd ++ linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/bumblebee-status/default.nix b/nixpkgs/pkgs/applications/window-managers/i3/bumblebee-status/default.nix new file mode 100644 index 000000000000..9583d71052bb --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/bumblebee-status/default.nix @@ -0,0 +1,67 @@ +{ pkgs +, lib +, glibcLocales +, python +, fetchFromGitHub + # Usage: bumblebee-status.override { plugins = p: [p.arandr p.bluetooth2]; }; +, plugins ? p: [ ] +}: +let + version = "2.2.0"; + + # { <name> = { name = "..."; propagatedBuildInputs = [ ... ]; buildInputs = [ ... ]; } } + allPlugins = + lib.mapAttrs + (name: value: value // { inherit name; }) + (import ./plugins.nix { inherit pkgs python; }); + + # [ { name = "..."; propagatedBuildInputs = [ ... ]; buildInputs = [ ... ]; } ] + selectedPlugins = plugins allPlugins; +in +python.pkgs.buildPythonPackage { + pname = "bumblebee-status"; + inherit version; + + src = fetchFromGitHub { + owner = "tobi-wan-kenobi"; + repo = "bumblebee-status"; + rev = "v${version}"; + hash = "sha256-+RCg2XZv0AJnexi7vnQhEXB1qSoKBN1yKWm3etdys1s="; + }; + + buildInputs = lib.concatMap (p: p.buildInputs or [ ]) selectedPlugins; + propagatedBuildInputs = lib.concatMap (p: p.propagatedBuildInputs or [ ]) selectedPlugins; + + checkInputs = with python.pkgs; [ freezegun netifaces psutil pytest pytest-mock requests ]; + + checkPhase = '' + runHook preCheck + + # Fixes `locale.Error: unsupported locale setting` in some tests. + export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive"; + + # FIXME: We skip the `dunst` module tests, some of which fail with + # `RuntimeError: killall -s SIGUSR2 dunst not found`. + # This is not solved by adding `pkgs.killall` to `checkInputs`. + ${python.interpreter} -m pytest -k 'not test_dunst.py' + + runHook postCheck + ''; + + postInstall = '' + # Remove binary cache files + find $out -name "__pycache__" -type d | xargs rm -rv + + # Make themes available for bumblebee-status to detect them + cp -r ./themes $out/${python.sitePackages} + ''; + + meta = with lib; { + description = "A modular, theme-able status line generator for the i3 window manager"; + homepage = "https://github.com/tobi-wan-kenobi/bumblebee-status"; + mainProgram = "bumblebee-status"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ augustebaum ]; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/bumblebee-status/plugins.nix b/nixpkgs/pkgs/applications/window-managers/i3/bumblebee-status/plugins.nix new file mode 100644 index 000000000000..6a1dda584207 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/bumblebee-status/plugins.nix @@ -0,0 +1,162 @@ +{ pkgs +, python +, ... +}: +# propagatedBuildInputs are for Python libraries and executables +# buildInputs are for libraries +let + py = python.pkgs; +in +{ + amixer.propagatedBuildInputs = [ pkgs.alsa-utils ]; + # aptitude is unpackaged + # apt.propagatedBuildInputs = [aptitude]; + arandr.propagatedBuildInputs = [ py.tkinter pkgs.arandr pkgs.xorg.xrandr ]; + # checkupdates is unpackaged + # arch-update.propagatedBuildInputs = [checkupdates]; + # checkupdates is unpackaged + # arch_update.propagatedBuildInputs = [checkupdates]; + # yay is unpackaged + # aur-update.propagatedBuildInputs = [yay]; + battery = { }; + battery-upower = { }; + battery_upower = { }; + bluetooth.propagatedBuildInputs = [ pkgs.bluez pkgs.blueman pkgs.dbus ]; + bluetooth2.propagatedBuildInputs = [ pkgs.bluez pkgs.blueman pkgs.dbus py.dbus-python ]; + blugon.propagatedBuildInputs = [ pkgs.blugon ]; + # If you do not allow this plugin to query the system's ACPI, i.e. the plugin option `use_acpi` is set to `False`, then you need at least one of [ brightnessctl light xbacklight ] + brightness.propagatedBuildInputs = [ ]; + caffeine.propagatedBuildInputs = [ pkgs.xdg-utils pkgs.xdotool pkgs.xorg.xprop pkgs.libnotify ]; + cmus.propagatedBuildInputs = [ pkgs.cmus ]; + cpu.propagatedBuildInputs = [ py.psutil pkgs.gnome.gnome-system-monitor ]; + cpu2.propagatedBuildInputs = [ py.psutil pkgs.lm_sensors ]; + cpu3.propagatedBuildInputs = [ py.psutil pkgs.lm_sensors ]; + currency.propagatedBuildInputs = [ py.requests ]; + date = { }; + datetime = { }; + datetimetz.propagatedBuildInputs = [ py.tzlocal py.pytz ]; + datetz = { }; + deadbeef.propagatedBuildInputs = [ pkgs.deadbeef ]; + debug = { }; + deezer.propagatedBuildInputs = [ py.dbus-python ]; + disk = { }; + # dnf is unpackaged + # dnf.propagatedBuildInputs = [dnf]; + docker_ps.propagatedBuildInputs = [ py.docker ]; + dunst.propagatedBuildInputs = [ pkgs.dunst ]; + dunstctl.propagatedBuildInputs = [ pkgs.dunst ]; + # emerge is unpackaged + # emerge_status.propagatedBuildInputs = [emerge]; + error = { }; + gcalendar.propagatedBuildInputs = [ + py.google-api-python-client + py.google-auth-httplib2 + py.google-auth-oauthlib + ]; + getcrypto.propagatedBuildInputs = [ py.requests ]; + git.propagatedBuildInputs = [ pkgs.xcwd pkgs.pygit2 ]; + github.propagatedBuildInputs = [ py.requests ]; + gitlab.propagatedBuildInputs = [ py.requests ]; + # gpmdp-remote is unpackaged + # gpmdp.propagatedBuildInputs = [gpmdp-remote]; + hddtemp = { }; + hostname = { }; + http_status = { }; + indicator.propagatedBuildInputs = [ pkgs.xorg.xset ]; + kernel = { }; + keys = { }; + # python3Packages.xkbgroup is unpackaged + layout = { + buildInputs = [ pkgs.xorg.libX11 ]; + # propagatedBuildInputs = [py.xkbgroup]; + }; + # python3Packages.xkbgroup is unpackaged + layout-xkb = { + buildInputs = [ pkgs.xorg.libX11 ]; + # propagatedBuildInputs = [py.xkbgroup]; + }; + layout-xkbswitch.propagatedBuildInputs = [ pkgs.xkb-switch ]; + # python3Packages.xkbgroup is unpackaged + # NOTE: Yes, there is also a plugin named `layout-xkb` with a dash. + layout_xkb = { + buildInputs = [ pkgs.xorg.libX11 ]; + # propagatedBuildInputs = [python3Packages.xkbgroup]; + }; + # NOTE: Yes, there is also a plugin named `layout-xkbswitch` with a dash. + layout_xkbswitch.propagatedBuildInputs = [ pkgs.xkb-switch ]; + libvirtvms.propagatedBuildInputs = [ py.libvirt ]; + load.propagatedBuildInputs = [ pkgs.gnome.gnome-system-monitor ]; + memory.propagatedBuildInputs = [ pkgs.gnome.gnome-system-monitor ]; + messagereceiver = { }; + mocp.propagatedBuildInputs = [ pkgs.moc ]; + mpd.propagatedBuildInputs = [ pkgs.mpc-cli ]; + network.propagatedBuildInputs = [ py.netifaces pkgs.iw ]; + network_traffic.propagatedBuildInputs = [ py.netifaces ]; + nic.propagatedBuildInputs = [ py.netifaces pkgs.iw ]; + notmuch_count.propagatedBuildInputs = [ pkgs.notmuch ]; + # nvidian-smi is unpackaged + # nvidiagpu.propagatedBuildInputs = [nvidia-smi]; + octoprint.propagatedBuildInputs = [ py.tkinter ]; + # optimus-manager is unpackaged + # optman.propagatedBuildInputs = [optimus-manager]; + pacman.propagatedBuildInputs = [ pkgs.fakeroot pkgs.pacman ]; + pamixer.propagatedBuildInputs = [ pkgs.pamixer ]; + persian_date.propagatedBuildInputs = [ py.jdatetime ]; + pihole = { }; + ping.propagatedBuildInputs = [ pkgs.iputils ]; + pipewire.buildInputs = [ pkgs.wireplumber ]; + playerctl.propagatedBuildInputs = [ pkgs.playerctl ]; + pomodoro = { }; + # emerge is unpackaged + # portage_status.propagatedBuildInputs = [emerge]; + # prime-select is unpackaged + # prime.propagatedBuildInputs = [prime-select]; + progress.propagatedBuildInputs = [ pkgs.progress ]; + publicip.propagatedBuildInputs = [ py.netifaces ]; + # Deprecated in favor of pulsectl + # pulseaudio = {}; + pulsectl.propagatedBuildInputs = [ pkgs.pulsectl ]; + redshift.propagatedBuildInputs = [ pkgs.redshift ]; + # rofication is unpackaged + # rofication.propagatedBuildInputs = [rofication]; + rotation.propagatedBuildInputs = [ pkgs.xorg.xrandr ]; + rss = { }; + sensors.propagatedBuildInputs = [ pkgs.lm_sensors ]; + sensors2.propagatedBuildInputs = [ pkgs.lm_sensors ]; + shell = { }; + shortcut = { }; + smartstatus.propagatedBuildInputs = [ pkgs.smartmontools ]; + solaar.propagatedBuildInputs = [ pkgs.solaar ]; + spaceapi.propagatedBuildInputs = [ py.requests ]; + spacer = { }; + speedtest.propagatedBuildInputs = [ py.speedtest-cli ]; + spotify.propagatedBuildInputs = [ py.dbus-python ]; + stock = { }; + # suntime is not packaged yet + # sun.propagatedBuildInputs = [ py.requests python-dateutil suntime ]; + system.propagatedBuildInputs = [ py.tkinter ]; + taskwarrior.propagatedBuildInputs = [ py.taskw ]; + test = { }; + thunderbird = { }; + time = { }; + timetz = { }; + title.propagatedBuildInputs = [ py.i3ipc ]; + todo = { }; + todo_org = { }; + todoist.propagatedBuildInputs = [ py.requests ]; + traffic = { }; + # Needs `systemctl` + twmn.propagatedBuildInputs = [ ]; + uptime = { }; + usage.propagatedBuildInputs = [ py.sqlite pkgs.activitywatch ]; + vault.propagatedBuildInputs = [ pkgs.pass ]; + vpn.propagatedBuildInputs = [ py.tkinter pkgs.networkmanager ]; + wakatime.propagatedBuildInputs = [ py.requests ]; + watson.propagatedBuildInputs = [ pkgs.watson ]; + weather.propagatedBuildInputs = [ py.requests ]; + xkcd = { }; + # i3 is optional + xrandr.propagatedBuildInputs = [ pkgs.xorg.xrandr ]; + yubikey.propagatedBuildInputs = [ pkgs.yubico ]; + zpool = { }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/cycle-focus.nix b/nixpkgs/pkgs/applications/window-managers/i3/cycle-focus.nix new file mode 100644 index 000000000000..7927985460e2 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/cycle-focus.nix @@ -0,0 +1,27 @@ +{ lib +, fetchFromGitHub +, rustPlatform +}: + +rustPlatform.buildRustPackage { + pname = "i3-cycle-focus"; + version = "unstable-2021-09-27"; + + src = fetchFromGitHub { + owner = "TheDoctor314"; + repo = "i3-cycle-focus"; + rev = "d94f22e4b8502de4ed846a211fa0c8418b3e3e89"; + hash = "sha256-caZKvxOqoYgPs+Zjltj8K0/ospjkLnA4kh0rsTjeU3Y="; + }; + + cargoHash = "sha256-9glaxThm/ovgvUWCyrycS/Oe5t8iN5P38fF5vO5awQE="; + + meta = with lib; { + description = "A simple tool to cyclically switch between the windows on the active workspace"; + mainProgram = "i3-cycle-focus"; + homepage = "https://github.com/TheDoctor314/i3-cycle-focus"; + license = licenses.unlicense; + maintainers = with maintainers; [ GaetanLepage ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/default.nix b/nixpkgs/pkgs/applications/window-managers/i3/default.nix new file mode 100644 index 000000000000..d7f1bc2176a8 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/default.nix @@ -0,0 +1,83 @@ +{ fetchurl, lib, stdenv, pkg-config, makeWrapper, meson, ninja, installShellFiles, libxcb, xcbutilkeysyms +, xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification, libX11, pcre2, libev +, yajl, xcb-util-cursor, perl, pango, perlPackages, libxkbcommon +, xorgserver, xvfb-run +, asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl, findXMLCatalogs +}: + +stdenv.mkDerivation rec { + pname = "i3"; + version = "4.23"; + + src = fetchurl { + url = "https://i3wm.org/downloads/${pname}-${version}.tar.xz"; + sha256 = "sha256-YQJqcZbJE50POq3ScZfosyDFduOkUOAddMGspIQETEY="; + }; + + nativeBuildInputs = [ + pkg-config makeWrapper meson ninja installShellFiles perl + asciidoc xmlto docbook_xml_dtd_45 docbook_xsl findXMLCatalogs + ]; + + mesonFlags = [ + "-Ddocs=true" + "-Dmans=true" + ]; + + buildInputs = [ + libxcb xcbutilkeysyms xcbutil xcbutilwm xcbutilxrm libxkbcommon + libstartup_notification libX11 pcre2 libev yajl xcb-util-cursor perl pango + perlPackages.AnyEventI3 perlPackages.X11XCB perlPackages.IPCRun + perlPackages.ExtUtilsPkgConfig perlPackages.InlineC + xorgserver xvfb-run + ]; + + configureFlags = [ "--disable-builddir" ]; + + postPatch = '' + patchShebangs . + ''; + + # Tests have been failing (at least for some people in some cases) + # and have been disabled until someone wants to fix them. Some + # initial digging uncovers that the tests call out to `git`, which + # they shouldn't, and then even once that's fixed have some + # perl-related errors later on. For more, see + # https://github.com/NixOS/nixpkgs/issues/7957 + doCheck = false; # stdenv.hostPlatform.system == "x86_64-linux"; + + checkPhase = lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux") + '' + (cd testcases && xvfb-run ./complete-run.pl -p 1 --keep-xserver-output) + ! grep -q '^not ok' testcases/latest/complete-run.log + ''; + + postInstall = '' + wrapProgram "$out/bin/i3-save-tree" --prefix PERL5LIB ":" "$PERL5LIB" + for program in $out/bin/i3-sensible-*; do + sed -i 's/which/command -v/' $program + done + + installManPage man/*.1 + ''; + + separateDebugInfo = true; + + meta = with lib; { + description = "A tiling window manager"; + homepage = "https://i3wm.org"; + maintainers = with maintainers; [ modulistic fpletz ]; + mainProgram = "i3"; + license = licenses.bsd3; + platforms = platforms.all; + + longDescription = '' + A tiling window manager primarily targeted at advanced users and + developers. Based on a tree as data structure, supports tiling, + stacking, and tabbing layouts, handled dynamically, as well as + floating windows. Configured via plain text file. Multi-monitor. + UTF-8 clean. + ''; + }; + +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/easyfocus.nix b/nixpkgs/pkgs/applications/window-managers/i3/easyfocus.nix new file mode 100644 index 000000000000..a1f0895bff6d --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/easyfocus.nix @@ -0,0 +1,33 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, xorgproto, libxcb, xcbutilkeysyms +, xorg , i3ipc-glib , glib +}: + +stdenv.mkDerivation { + pname = "i3easyfocus"; + version = "20190411"; + + src = fetchFromGitHub { + owner = "cornerman"; + repo = "i3-easyfocus"; + rev = "fffb468f7274f9d7c9b92867c8cb9314ec6cf81a"; + sha256 = "1db23vzzmp0hnfss1fkd80za6d2pajx7hdwikw50pk95jq0w8wfm"; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ libxcb xcbutilkeysyms xorgproto xorg.libX11.dev i3ipc-glib glib.dev ]; + + # Makefile has no rule for 'install' + installPhase = '' + mkdir -p $out/bin + cp i3-easyfocus $out/bin + ''; + + meta = with lib; { + description = "Focus and select windows in i3"; + mainProgram = "i3-easyfocus"; + homepage = "https://github.com/cornerman/i3-easyfocus"; + maintainers = with maintainers; [teto]; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/i3-ratiosplit.nix b/nixpkgs/pkgs/applications/window-managers/i3/i3-ratiosplit.nix new file mode 100644 index 000000000000..0903ceb3185a --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/i3-ratiosplit.nix @@ -0,0 +1,27 @@ +{ lib, rustPlatform, fetchFromGitHub }: + +rustPlatform.buildRustPackage rec { + pname = "i3-ratiosplit"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = "333fred"; + repo = pname; + rev = "v${version}"; + sha256 = "0yfmr5zk2c2il9d31yjjbr48sqgcq6hp4a99hl5mjm2ajyhy5bz3"; + }; + + cargoSha256 = "134sgc9d0j57swknl9sgil6212rws2hhp92s3cg1yzz5ygx21c76"; + + # Currently no tests are implemented, so we avoid building the package twice + doCheck = false; + + meta = with lib; { + description = "Resize newly created windows"; + mainProgram = "i3-ratiosplit"; + homepage = "https://github.com/333fred/i3-ratiosplit"; + license = licenses.mit; + maintainers = with maintainers; [ svrana ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/i3-resurrect.nix b/nixpkgs/pkgs/applications/window-managers/i3/i3-resurrect.nix new file mode 100644 index 000000000000..c5fedfbe36e7 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/i3-resurrect.nix @@ -0,0 +1,23 @@ +{ lib, buildPythonApplication, click, i3ipc, psutil, natsort, fetchPypi, xprop, xdotool, importlib-metadata }: + +buildPythonApplication rec { + pname = "i3-resurrect"; + version = "1.4.5"; + + src = fetchPypi { + inherit pname version; + sha256 = "sha256-13FKRvEE4vHq5G51G1UyBnfNiWeS9Q/SYCG16E1Sn4c="; + }; + + propagatedBuildInputs = [ click psutil xprop natsort i3ipc xdotool importlib-metadata ]; + doCheck = false; # no tests + + meta = with lib; { + homepage = "https://github.com/JonnyHaystack/i3-resurrect"; + description = "A simple but flexible solution to saving and restoring i3 workspaces"; + mainProgram = "i3-resurrect"; + license = licenses.gpl3; + platforms= platforms.linux; + maintainers = with maintainers; [ magnetophon ]; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/i3ipc-glib.nix b/nixpkgs/pkgs/applications/window-managers/i3/i3ipc-glib.nix new file mode 100644 index 000000000000..a6a77600ee5f --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/i3ipc-glib.nix @@ -0,0 +1,33 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, xorgproto, libxcb +, autoreconfHook, json-glib, gtk-doc, which +, gobject-introspection +}: + +stdenv.mkDerivation rec { + pname = "i3ipc-glib"; + version = "1.0.1"; + + src = fetchFromGitHub { + owner = "acrisci"; + repo = "i3ipc-glib"; + rev = "v${version}"; + sha256 = "01fzvrbnzcwx0vxw29igfpza9zwzp2s7msmzb92v01z0rz0y5m0p"; + }; + + strictDeps = true; + nativeBuildInputs = [ autoreconfHook which pkg-config gtk-doc gobject-introspection ]; + + buildInputs = [ libxcb json-glib xorgproto ]; + + preAutoreconf = '' + gtkdocize + ''; + + meta = with lib; { + description = "A C interface library to i3wm"; + homepage = "https://github.com/acrisci/i3ipc-glib"; + maintainers = with maintainers; [teto]; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/kitti3-fix-build-system.patch b/nixpkgs/pkgs/applications/window-managers/i3/kitti3-fix-build-system.patch new file mode 100644 index 000000000000..06a2ac60bb32 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/kitti3-fix-build-system.patch @@ -0,0 +1,21 @@ +commit 410e98569c87469672086d4144f7ca0f2ee08fb7 +Author: Michael Hoang <enzime@users.noreply.github.com> +Date: Sun May 21 00:13:37 2023 +1000 + + Allow project to be built with just `pip` +--- + pyproject.toml | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/pyproject.toml b/pyproject.toml +index 10ed786..574e42a 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -1,3 +1,7 @@ ++[build-system] ++requires = ["poetry-core"] ++build-backend = "poetry.core.masonry.api" ++ + [tool.poetry] + name = "kitti3" + version = "0.5.1" diff --git a/nixpkgs/pkgs/applications/window-managers/i3/kitti3.nix b/nixpkgs/pkgs/applications/window-managers/i3/kitti3.nix new file mode 100644 index 000000000000..3068baee5d99 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/kitti3.nix @@ -0,0 +1,41 @@ +{ buildPythonApplication +, fetchFromGitHub +, poetry-core +, i3ipc +, lib +}: + +buildPythonApplication rec { + pname = "kitti3"; + version = "unstable-2021-09-11"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "LandingEllipse"; + repo = pname; + rev = "f9f94c8b9f8b61a9d085206ada470cfe755a2a92"; + hash = "sha256-bcIzbDpIe2GKS9EcVqpjwz0IG2ixNMn06OIQpZ7PeH0="; + }; + + patches = [ + # Fixes `build-system` not being specified in `pyproject.toml` + # https://github.com/LandingEllipse/kitti3/pull/25 + ./kitti3-fix-build-system.patch + ]; + + nativeBuildInputs = [ + poetry-core + ]; + + propagatedBuildInputs = [ + i3ipc + ]; + + meta = with lib; { + homepage = "https://github.com/LandingEllipse/kitti3"; + description = "Kitty drop-down service for sway & i3wm"; + mainProgram = "kitti3"; + license = licenses.bsd3; + maintainers = with maintainers; [ Enzime ]; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/layout-manager.nix b/nixpkgs/pkgs/applications/window-managers/i3/layout-manager.nix new file mode 100644 index 000000000000..b2a3adb98f90 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/layout-manager.nix @@ -0,0 +1,40 @@ +{ lib, stdenv, fetchFromGitHub, vim, makeWrapper, jq, rofi, xrandr, xdotool, i3, gawk, libnotify }: + +let + path = lib.makeBinPath [ vim jq rofi xrandr xdotool i3 gawk libnotify ]; +in + +stdenv.mkDerivation rec { + pname = "i3-layout-manager"; + version = "unstable-2020-05-04"; + + src = fetchFromGitHub { + owner = "klaxalk"; + repo = pname; + rev = "df54826bba351d8bcd7ebeaf26c07c713af7912c"; + sha256 = "0ccvr43yp26fnh5d82cw7jcfq2sbxzzmdx2cp15bmxr8ixr8knc3"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + install -D layout_manager.sh $out/bin/layout_manager + wrapProgram $out/bin/layout_manager \ + --prefix PATH : "${path}" + + runHook postInstall + ''; + + meta = with lib; { + homepage = "https://github.com/klaxalk/i3-layout-manager"; + description = "Saving, loading and managing layouts for i3wm"; + mainProgram = "layout_manager"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ ]; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/lock-blur.nix b/nixpkgs/pkgs/applications/window-managers/i3/lock-blur.nix new file mode 100644 index 000000000000..f9f6de921270 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/lock-blur.nix @@ -0,0 +1,34 @@ +{ i3lock-color, lib, stdenv, fetchFromGitHub, fetchpatch, libGL }: + +i3lock-color.overrideAttrs (oldAttrs : rec { + pname = "i3lock-blur"; + version = "2.10"; + + src = fetchFromGitHub { + owner = "karulont"; + repo = "i3lock-blur"; + rev = version; + sha256 = "sha256-rBQHYVD9rurzTEXrgEnOziOP22D2EePC1+EV9Wi2pa0="; + }; + + patches = [ + # Pull patch pending upstream inclusion for -fno-common toolchain + # support: https://github.com/karulont/i3lock-blur/pull/22 + (fetchpatch { + name = "fno-common.patch"; + url = "https://github.com/karulont/i3lock-blur/commit/ec8fe0e7f7d78bf445602ed517efd5c324bb32f7.patch"; + sha256 = "sha256-0hXUr+ZEB1tpI3xw80/hGzKyeGuna4CQmEvK6t0VBqU="; + }) + ]; + + buildInputs = oldAttrs.buildInputs ++ [ libGL ]; + + meta = with lib; { + description = "An improved screenlocker based upon XCB and PAM with background blurring filter"; + homepage = "https://github.com/karulont/i3lock-blur/"; + license = licenses.bsd3; + maintainers = with maintainers; [ dan4ik605743 ]; + platforms = platforms.all; + broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/i3lock-blur.x86_64-darwin + }; +}) diff --git a/nixpkgs/pkgs/applications/window-managers/i3/lock-color.nix b/nixpkgs/pkgs/applications/window-managers/i3/lock-color.nix new file mode 100644 index 000000000000..596aa8ceea12 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/lock-color.nix @@ -0,0 +1,62 @@ +{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, libxcb, + xcbutilkeysyms , xcbutilimage, pam, libX11, libev, cairo, libxkbcommon, + libxkbfile, libjpeg_turbo, xcbutilxrm, xorg +}: + +stdenv.mkDerivation rec { + version = "2.13.c.5"; + pname = "i3lock-color"; + + src = fetchFromGitHub { + owner = "PandorasFox"; + repo = "i3lock-color"; + rev = version; + sha256 = "sha256-fuLeglRif2bruyQRqiL3nm3q6qxoHcPdVdL+QjGBR/k="; + }; + + nativeBuildInputs = [ autoreconfHook pkg-config ]; + buildInputs = [ libxcb xcbutilkeysyms xcbutilimage pam libX11 + libev cairo libxkbcommon libxkbfile libjpeg_turbo xcbutilxrm xorg.xcbutil ]; + + makeFlags = [ "all" ]; + preInstall = '' + mkdir -p $out/share/man/man1 + ''; + installFlags = [ "PREFIX=\${out}" "SYSCONFDIR=\${out}/etc" "MANDIR=\${out}/share/man" ]; + postInstall = '' + mv $out/bin/i3lock $out/bin/i3lock-color + ln -s $out/bin/i3lock-color $out/bin/i3lock + mv $out/share/man/man1/i3lock.1 $out/share/man/man1/i3lock-color.1 + sed -i 's/\(^\|\s\|"\)i3lock\(\s\|$\)/\1i3lock-color\2/g' $out/share/man/man1/i3lock-color.1 + ''; + meta = with lib; { + description = "A simple screen locker like slock, enhanced version with extra configuration options"; + longDescription = '' + Simple screen locker. After locking, a colored background (default: white) or + a configurable image is shown, and a ring-shaped unlock-indicator gives feedback + for every keystroke. After entering your password, the screen is unlocked again. + + i3lock-color is forked from i3lock (https://i3wm.org/i3lock/) with the following + enhancements / additional configuration options: + + - indicator: + - shape: ring or bar + - size: configurable + - all colors: configurable + - all texts: configurable + - visibility: can be always visible, can be restricted to some screens + + - background: optionally show a blurred screen instead of a single color + + - more information: show text at configurable positions: + - clock: time/date with configurable format + - keyboard-layout + ''; + homepage = "https://github.com/PandorasFox/i3lock-color"; + maintainers = with maintainers; [ malyn ]; + license = licenses.bsd3; + + platforms = platforms.all; + broken = stdenv.isDarwin; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/lock-fancy-rapid.nix b/nixpkgs/pkgs/applications/window-managers/i3/lock-fancy-rapid.nix new file mode 100644 index 000000000000..7060a502f128 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/lock-fancy-rapid.nix @@ -0,0 +1,39 @@ +{ lib, stdenv, fetchFromGitHub, xorg, i3lock }: + +stdenv.mkDerivation { + pname = "i3lock-fancy-rapid"; + version = "unstable-2021-04-21"; + + src = fetchFromGitHub { + owner = "yvbbrjdr"; + repo = "i3lock-fancy-rapid"; + rev = "6eeebd4caa177b82fa5010b5e8828cce3f89fb97"; + hash = "sha256-EoX8ts0yV/zkb4wgEh4P8noU+UraRS4w9pp+76v+Nm0="; + }; + + buildInputs = [ xorg.libX11 ]; + + propagatedBuildInputs = [ i3lock ]; + + postPatch = '' + substituteInPlace i3lock-fancy-rapid.c \ + --replace '"i3lock"' '"${i3lock}/bin/i3lock"' + ''; + + installPhase = '' + runHook preInstall + + install -D i3lock-fancy-rapid $out/bin/i3lock-fancy-rapid + ln -s $out/bin/i3lock-fancy-rapid $out/bin/i3lock + + runHook postInstall + ''; + + meta = with lib; { + description = "A faster implementation of i3lock-fancy"; + homepage = "https://github.com/yvbbrjdr/i3lock-fancy-rapid"; + maintainers = with maintainers; [ nickhu ]; + license = licenses.bsd3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/lock-fancy.nix b/nixpkgs/pkgs/applications/window-managers/i3/lock-fancy.nix new file mode 100644 index 000000000000..f3963b43b54a --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/lock-fancy.nix @@ -0,0 +1,55 @@ +{ lib +, stdenv +, fetchFromGitHub +, coreutils +, scrot +, imagemagick +, gawk +, i3lock-color +, getopt +, fontconfig +}: + +stdenv.mkDerivation rec { + pname = "i3lock-fancy"; + version = "unstable-2018-11-25"; + + src = fetchFromGitHub { + owner = "meskarune"; + repo = "i3lock-fancy"; + rev = "7accfb2aa2f918d1a3ab975b860df1693d20a81a"; + sha256 = "00lqsvz1knb8iqy8lnkn3sf4c2c4nzb0smky63qf48m8za5aw9b1"; + }; + + postPatch = '' + sed -i i3lock-fancy \ + -e "s|mktemp|${coreutils}/bin/mktemp|" \ + -e "s|'rm -f |'${coreutils}/bin/rm -f |" \ + -e "s|scrot -z |${scrot}/bin/scrot -z |" \ + -e "s|convert |${imagemagick.out}/bin/convert |" \ + -e "s|awk -F|${gawk}/bin/awk -F|" \ + -e "s| awk | ${gawk}/bin/awk |" \ + -e "s|i3lock -i |${i3lock-color}/bin/i3lock-color -i |" \ + -e 's|icon="/usr/share/i3lock-fancy/icons/lockdark.png"|icon="'$out'/share/i3lock-fancy/icons/lockdark.png"|' \ + -e 's|icon="/usr/share/i3lock-fancy/icons/lock.png"|icon="'$out'/share/i3lock-fancy/icons/lock.png"|' \ + -e "s|getopt |${getopt}/bin/getopt |" \ + -e "s|fc-match |${fontconfig.bin}/bin/fc-match |" \ + -e "s|shot=(import -window root)|shot=(${scrot}/bin/scrot -z -o)|" + rm Makefile + ''; + + installPhase = '' + mkdir -p $out/bin $out/share/i3lock-fancy/icons + cp i3lock-fancy $out/bin/i3lock-fancy + ln -s $out/bin/i3lock-fancy $out/bin/i3lock + cp icons/lock*.png $out/share/i3lock-fancy/icons + ''; + + meta = with lib; { + description = "i3lock is a bash script that takes a screenshot of the desktop, blurs the background and adds a lock icon and text"; + homepage = "https://github.com/meskarune/i3lock-fancy"; + maintainers = with maintainers; [ ]; + license = licenses.mit; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/lock.nix b/nixpkgs/pkgs/applications/window-managers/i3/lock.nix new file mode 100644 index 000000000000..41096a70a68d --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/lock.nix @@ -0,0 +1,33 @@ +{ stdenv, lib, fetchFromGitHub, meson, ninja, pkg-config, libxcb, xcbutilkeysyms, xcbutilimage, + xcbutilxrm, pam, libX11, libev, cairo, libxkbcommon, libxkbfile, xorg }: + +stdenv.mkDerivation rec { + pname = "i3lock"; + version = "2.15"; + + src = fetchFromGitHub { + owner = "i3"; + repo = "i3lock"; + rev = version; + sha256 = "sha256-OyV6GSLnNV3GUqrfs3OBnIaBvicH2PXgeY4acOk5dR4="; + }; + + nativeBuildInputs = [ meson ninja pkg-config ]; + buildInputs = [ libxcb xcbutilkeysyms xcbutilimage xcbutilxrm + pam libX11 libev cairo libxkbcommon libxkbfile xorg.xcbutil ]; + + meta = with lib; { + description = "A simple screen locker like slock"; + longDescription = '' + Simple screen locker. After locking, a colored background (default: white) or + a configurable image is shown, and a ring-shaped unlock-indicator gives feedback + for every keystroke. After entering your password, the screen is unlocked again. + ''; + homepage = "https://i3wm.org/i3lock/"; + maintainers = with maintainers; [ malyn domenkozar ]; + mainProgram = "i3lock"; + license = licenses.bsd3; + platforms = platforms.all; + }; + +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/pystatus.nix b/nixpkgs/pkgs/applications/window-managers/i3/pystatus.nix new file mode 100644 index 000000000000..73136980aa93 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/pystatus.nix @@ -0,0 +1,62 @@ +{ lib +, fetchFromGitHub +, libpulseaudio +, libnotify +, gobject-introspection +, python3Packages +, extraLibs ? [] }: + +python3Packages.buildPythonApplication rec { + # i3pystatus moved to rolling release: + # https://github.com/enkore/i3pystatus/issues/584 + version = "unstable-2020-06-12"; + pname = "i3pystatus"; + + src = fetchFromGitHub { + owner = "enkore"; + repo = "i3pystatus"; + rev = "dad5eb0c5c8a2ecd20c37ade4732586c6e53f44b"; + sha256 = "18ygvkl92yr69kxsym57k1mc90asdxpz4b943i61qr0s4fc5n4mq"; + }; + + nativeBuildInputs = [ + gobject-introspection + ]; + + buildInputs = [ libpulseaudio libnotify ]; + + propagatedBuildInputs = with python3Packages; [ + keyring colour netifaces psutil basiciw pygobject3 + ] ++ extraLibs; + + makeWrapperArgs = [ + # LC_TIME != C results in locale.Error: unsupported locale setting + "--set" "LC_TIME" "C" + "--suffix" "LD_LIBRARY_PATH" ":" "${lib.makeLibraryPath [ libpulseaudio ]}" + ]; + + postPatch = '' + makeWrapperArgs+=(--set GI_TYPELIB_PATH "$GI_TYPELIB_PATH") + ''; + + postInstall = '' + makeWrapper ${python3Packages.python.interpreter} $out/bin/${pname}-python-interpreter \ + --prefix PYTHONPATH : "$PYTHONPATH" \ + ''${makeWrapperArgs[@]} + ''; + + # no tests in tarball + doCheck = false; + + meta = with lib; { + homepage = "https://github.com/enkore/i3pystatus"; + description = "A complete replacement for i3status"; + longDescription = '' + i3pystatus is a growing collection of python scripts for status output compatible + to i3status / i3bar of the i3 window manager. + ''; + license = licenses.mit; + platforms = platforms.linux; + maintainers = [ maintainers.igsha ]; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/rounded.nix b/nixpkgs/pkgs/applications/window-managers/i3/rounded.nix new file mode 100644 index 000000000000..aa3701975fcc --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/rounded.nix @@ -0,0 +1,23 @@ +{ fetchFromGitHub, lib, i3, pcre }: + +i3.overrideAttrs (oldAttrs: rec { + pname = "i3-rounded"; + version = "unstable-2021-10-03"; + + src = fetchFromGitHub { + owner = "LinoBigatti"; + repo = "i3-rounded"; + rev = "524c9f7b50f8c540b2ae3480b242c30d8775f98e"; + sha256 = "0y7m1s1y8f9vgkp7byi33js8n4rigiykd71s936i5d4rwlzrxiwm"; + }; + + buildInputs = oldAttrs.buildInputs ++ [ pcre ]; + + meta = with lib; { + description = "A fork of i3-gaps that adds rounding to window corners"; + homepage = "https://github.com/LinoBigatti/i3-rounded"; + maintainers = with maintainers; [ marsupialgutz ]; + license = licenses.bsd3; + platforms = platforms.unix; + }; +}) diff --git a/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix b/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix new file mode 100644 index 000000000000..74635d158829 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix @@ -0,0 +1,65 @@ +{ lib +, rustPlatform +, fetchFromGitHub +, pkg-config +, makeWrapper +, dbus +, libpulseaudio +, notmuch +, openssl +, ethtool +, lm_sensors +, iw +, iproute2 +, withICUCalendar ? false +}: + +rustPlatform.buildRustPackage rec { + pname = "i3status-rust"; + version = "0.33.0"; + + src = fetchFromGitHub { + owner = "greshake"; + repo = pname; + rev = "refs/tags/v${version}"; + hash = "sha256-DIEWmXqs4yNIJsBBhH7khOY6RJQ9qRoSTIHN/aeBuA4="; + }; + + cargoHash = "sha256-5946aMSndBkXCY0jjnhPc5x9wFOC1zjJNkFkMFFOuxo="; + + nativeBuildInputs = [ pkg-config makeWrapper ]; + + buildInputs = [ dbus libpulseaudio notmuch openssl lm_sensors ]; + + buildFeatures = [ + "notmuch" + "maildir" + "pulseaudio" + ] ++ (lib.optionals withICUCalendar [ "icu_calendar" ]); + + prePatch = '' + substituteInPlace src/util.rs \ + --replace "/usr/share/i3status-rust" "$out/share" + ''; + + postInstall = '' + mkdir -p $out/share + cp -R examples files/* $out/share + ''; + + postFixup = '' + wrapProgram $out/bin/i3status-rs --prefix PATH : ${lib.makeBinPath [ iproute2 ethtool iw ]} + ''; + + # Currently no tests are implemented, so we avoid building the package twice + doCheck = false; + + meta = with lib; { + description = "Very resource-friendly and feature-rich replacement for i3status"; + homepage = "https://github.com/greshake/i3status-rust"; + license = licenses.gpl3Only; + mainProgram = "i3status-rs"; + maintainers = with maintainers; [ backuitist globin ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/status.nix b/nixpkgs/pkgs/applications/window-managers/i3/status.nix new file mode 100644 index 000000000000..6c376fab2d4b --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/status.nix @@ -0,0 +1,24 @@ +{ fetchurl, lib, stdenv, libconfuse, yajl, alsa-lib, libpulseaudio, libnl, meson, ninja, perl, pkg-config, asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl }: + +stdenv.mkDerivation rec { + pname = "i3status"; + version = "2.14"; + + src = fetchurl { + url = "https://i3wm.org/i3status/i3status-${version}.tar.xz"; + sha256 = "0929chhvyq9hg4scpcz8r9zn3s9jvbg6a86k3wqa77qg85rh4kaw"; + }; + + nativeBuildInputs = [ meson ninja perl pkg-config asciidoc xmlto docbook_xml_dtd_45 docbook_xsl ]; + buildInputs = [ libconfuse yajl alsa-lib libpulseaudio libnl ]; + + meta = { + description = "Generates a status line for i3bar, dzen2, xmobar or lemonbar"; + homepage = "https://i3wm.org"; + maintainers = [ ]; + license = lib.licenses.bsd3; + platforms = lib.platforms.all; + mainProgram = "i3status"; + }; + +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/swallow.nix b/nixpkgs/pkgs/applications/window-managers/i3/swallow.nix new file mode 100644 index 000000000000..31101721e4c4 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/swallow.nix @@ -0,0 +1,44 @@ +{ lib +, buildPythonApplication +, fetchFromGitHub +, poetry-core +, i3ipc +, xlib +, six +}: + +buildPythonApplication rec { + pname = "i3-swallow"; + version = "unstable-2022-02-19"; + + format = "pyproject"; + + src = fetchFromGitHub { + owner = "jamesofarrell"; + repo = "i3-swallow"; + rev = "6fbc04645c483fe733de56b56743e453693d4c78"; + sha256 = "1l3x8mixwq4n0lnyp0wz5vijgnypamq6lqjazcd2ywl2jv8d6fif"; + }; + + nativeBuildInputs = [ + poetry-core + ]; + + propagatedBuildInputs = [ + i3ipc + xlib + six + ]; + + # No tests available + doCheck = false; + + meta = with lib; { + homepage = "https://github.com/jamesofarrell/i3-swallow"; + description = "Swallow a terminal window in i3wm"; + license = licenses.mit; + platforms = platforms.linux; + mainProgram = "swallow"; + maintainers = [ maintainers.ivar ]; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/wk-switch.nix b/nixpkgs/pkgs/applications/window-managers/i3/wk-switch.nix new file mode 100644 index 000000000000..fadcfe9908da --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/wk-switch.nix @@ -0,0 +1,33 @@ +{ lib, fetchFromGitHub, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "i3-wk-switch"; + version = "2020-03-18"; + format = "other"; + + src = fetchFromGitHub { + owner = "tmfink"; + repo = pname; + rev = "a618cb8f52120aa8d533bb7c0c8de3ff13b3dc06"; + sha256 = "0ci0w5igjk5xa8x4rx17cpgmdkamwjmavxhp0vp6213cl93ybjhz"; + }; + + propagatedBuildInputs = with python3Packages; [ i3ipc ]; + + dontBuild = true; + doCheck = false; + + installPhase = '' + mkdir -p "$out/bin" + cp i3-wk-switch.py "$out/bin/i3-wk-switch" + ''; + + meta = with lib; { + description = "XMonad-like workspace switching for i3 and sway"; + mainProgram = "i3-wk-switch"; + maintainers = with maintainers; [ synthetica ]; + platforms = platforms.linux; + license = licenses.mit; + homepage = "https://travisf.net/i3-wk-switcher"; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/wmfocus.nix b/nixpkgs/pkgs/applications/window-managers/i3/wmfocus.nix new file mode 100644 index 000000000000..af90b968bd04 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/wmfocus.nix @@ -0,0 +1,33 @@ +{ lib, fetchFromGitHub, rustPlatform +, xorg, python3, pkg-config, cairo, expat, libxkbcommon }: + +rustPlatform.buildRustPackage rec { + pname = "wmfocus"; + version = "1.5.0"; + + src = fetchFromGitHub { + owner = "svenstaro"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-94MgE2j8HaS8IyzHEDtoqTls2A8xD96v2iAFx9XfMcw="; + }; + + cargoHash = "sha256-sSJAlDe1vBYs1vZW/X04cU14Wj1OF4Jy8oI4uWkrEjk="; + + nativeBuildInputs = [ python3 pkg-config ]; + buildInputs = [ cairo expat libxkbcommon xorg.xcbutilkeysyms ]; + + # For now, this is the only available featureset. This is also why the file is + # in the i3 folder, even though it might be useful for more than just i3 + # users. + buildFeatures = [ "i3" ]; + + meta = with lib; { + description = "Visually focus windows by label"; + mainProgram = "wmfocus"; + homepage = "https://github.com/svenstaro/wmfocus"; + license = licenses.mit; + maintainers = with maintainers; [ synthetica ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/workstyle-Cargo.lock b/nixpkgs/pkgs/applications/window-managers/i3/workstyle-Cargo.lock new file mode 100644 index 000000000000..a1bfdd08c493 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/workstyle-Cargo.lock @@ -0,0 +1,1140 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "anstream" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e579a7752471abc2a8268df8b20005e3eadd975f585398f17efcfd8d4927371" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" + +[[package]] +name = "anstyle-parse" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcd8291a340dd8ac70e18878bc4501dd7b4ff970cfa21c207d36ece51ea88fd" +dependencies = [ + "anstyle", + "windows-sys 0.48.0", +] + +[[package]] +name = "anyhow" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" + +[[package]] +name = "async-trait" +version = "0.1.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clap" +version = "4.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b802d85aaf3a1cdb02b224ba472ebdea62014fccfcb269b95a4d76443b5ee5a" +dependencies = [ + "clap_builder", + "clap_derive", + "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14a1a858f532119338887a4b8e1af9c60de8249cd7bafd68036a489e261e37b6" +dependencies = [ + "anstream", + "anstyle", + "bitflags", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "clap_lex" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "dirs" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "errno" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyprland" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d341e36a776cd092622daf2439a484247f3dc7d25eab7b286cc88ac85120d3" +dependencies = [ + "async-trait", + "derive_more", + "doc-comment", + "futures", + "hex", + "hyprland-macros", + "lazy_static", + "num-traits", + "paste", + "regex", + "serde", + "serde_json", + "serde_repr", + "strum", + "tokio", +] + +[[package]] +name = "hyprland-macros" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0088021091c08e29e9d1f735142ab811bd4d4d7f82fd4d4673407cb96fffb062" +dependencies = [ + "quote", + "syn 2.0.15", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +dependencies = [ + "hermit-abi 0.3.1", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "is-terminal" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +dependencies = [ + "hermit-abi 0.3.1", + "io-lifetimes", + "rustix", + "windows-sys 0.48.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.141" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" + +[[package]] +name = "linux-raw-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "lockfile" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0adecf427f5b6ac140a0d1c5bc9dd0eb81b6f462486b78402c0a689a317b55dc" +dependencies = [ + "log", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "mio" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.45.0", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi 0.2.6", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys 0.45.0", +] + +[[package]] +name = "paste" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "proc-macro2" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.37.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85597d61f83914ddeba6a47b3b8ffe7365107221c2e557ed94426489fefb5f77" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustversion" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" + +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "semver" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" + +[[package]] +name = "serde" +version = "1.0.160" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.160" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "serde_json" +version = "1.0.96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "signal-hook" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "swayipc" +version = "3.0.1" +source = "git+https://github.com/pierrechevalier83/swayipc-rs.git?branch=fix_crash_when_using_without_i3_or_sway#e8eb2d8efba285b577c5e585af203baf9096b85f" +dependencies = [ + "serde", + "serde_json", + "swayipc-types", +] + +[[package]] +name = "swayipc-types" +version = "1.3.0" +source = "git+https://github.com/pierrechevalier83/swayipc-rs.git?branch=fix_crash_when_using_without_i3_or_sway#e8eb2d8efba285b577c5e585af203baf9096b85f" +dependencies = [ + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "tokio" +version = "1.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" +dependencies = [ + "autocfg", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.45.0", +] + +[[package]] +name = "tokio-macros" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "indexmap", + "serde", +] + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.0", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "workstyle" +version = "0.8.2" +dependencies = [ + "anyhow", + "clap", + "dirs", + "env_logger", + "hyprland", + "indexmap", + "itertools", + "lockfile", + "log", + "once_cell", + "serde", + "serde_derive", + "signal-hook", + "swayipc", + "toml", +] diff --git a/nixpkgs/pkgs/applications/window-managers/i3/workstyle.nix b/nixpkgs/pkgs/applications/window-managers/i3/workstyle.nix new file mode 100644 index 000000000000..b546a8af5e9d --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/workstyle.nix @@ -0,0 +1,33 @@ +{ lib +, rustPlatform +, fetchFromGitHub +}: + +rustPlatform.buildRustPackage rec { + pname = "workstyle"; + version = "unstable-2023-08-23"; + + src = fetchFromGitHub { + owner = "pierrechevalier83"; + repo = pname; + rev = "8bde72d9a9dd67e0fc7c0545faca53df23ed3753"; + sha256 = "sha256-yhnt7edhgVy/cZ6FpF6AZWPoeMeEKTXP+87no2KeIYU="; + }; + + cargoLock = { + lockFile = ./workstyle-Cargo.lock; + outputHashes = { + "swayipc-3.0.1" = "sha256-3Jhz3+LhncSRvo3n7Dh5d+RWQSvEff9teuaDZLLLEHk="; + }; + }; + + doCheck = false; # No tests + + meta = with lib; { + description = "Sway workspaces with style"; + homepage = "https://github.com/pierrechevalier83/workstyle"; + license = licenses.mit; + maintainers = with maintainers; [ FlorianFranzen ]; + mainProgram = "workstyle"; + }; +} diff --git a/nixpkgs/pkgs/applications/window-managers/i3/wsr.nix b/nixpkgs/pkgs/applications/window-managers/i3/wsr.nix new file mode 100644 index 000000000000..e64194ac3817 --- /dev/null +++ b/nixpkgs/pkgs/applications/window-managers/i3/wsr.nix @@ -0,0 +1,34 @@ +{ lib, fetchFromGitHub, rustPlatform, libxcb, python3 }: + +rustPlatform.buildRustPackage rec { + pname = "i3wsr"; + version = "2.1.1"; + + src = fetchFromGitHub { + owner = "roosta"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-Mq4TpQDiIYePUS3EwBfOe2+QmvF6+WEDK12WahbuhSU="; + }; + + cargoSha256 = "sha256-hybvzHwHM0rQwgZfQpww/w9wQDW5h9P2KSjpAScVTBo="; + + nativeBuildInputs = [ python3 ]; + buildInputs = [ libxcb ]; + + # has not tests + doCheck = false; + + meta = with lib; { + mainProgram = "i3wsr"; + description = "Automatically change i3 workspace names based on their contents"; + longDescription = '' + Automatically sets the workspace names to match the windows on the workspace. + The chosen name for a workspace is a user-defined composite of the WM_CLASS X11 + window property for each window in a workspace. + ''; + homepage = "https://github.com/roosta/i3wsr"; + license = licenses.mit; + maintainers = [ maintainers.sebbadk ]; + }; +} |